<?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>123195</bug_id>
          
          <creation_ts>2013-10-22 20:10:21 -0700</creation_ts>
          <short_desc>Make JSCells have 32-bit Structure pointers</short_desc>
          <delta_ts>2014-02-26 18:54:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124540</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>buildbot</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942557</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-22 20:10:21 -0700</bug_when>
    <thetext>This will free up 32 bits of space in JSCell headers, which we can use for other information like the IndexingType, JSType, JSTypeInfo type flags, and garbage collection metadata.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942559</commentid>
    <comment_count>1</comment_count>
      <attachid>214921</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-22 20:21:24 -0700</bug_when>
    <thetext>Created attachment 214921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942561</commentid>
    <comment_count>2</comment_count>
      <attachid>214921</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-22 20:31:43 -0700</bug_when>
    <thetext>Comment on attachment 214921
Patch

Attachment 214921 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/7468047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942567</commentid>
    <comment_count>3</comment_count>
      <attachid>214923</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-22 20:44:52 -0700</bug_when>
    <thetext>Created attachment 214923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942569</commentid>
    <comment_count>4</comment_count>
      <attachid>214923</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-22 20:52:26 -0700</bug_when>
    <thetext>Comment on attachment 214923
Patch

Attachment 214923 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/7808091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942579</commentid>
    <comment_count>5</comment_count>
      <attachid>214923</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 21:25:05 -0700</bug_when>
    <thetext>Comment on attachment 214923
Patch

Attachment 214923 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/5628083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942612</commentid>
    <comment_count>6</comment_count>
      <attachid>214923</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-23 01:13:35 -0700</bug_when>
    <thetext>Comment on attachment 214923
Patch

Attachment 214923 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/9228019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942613</commentid>
    <comment_count>7</comment_count>
      <attachid>214923</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-23 01:16:33 -0700</bug_when>
    <thetext>Comment on attachment 214923
Patch

Attachment 214923 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/7678064</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943692</commentid>
    <comment_count>8</comment_count>
      <attachid>215198</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-25 12:31:31 -0700</bug_when>
    <thetext>Created attachment 215198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943696</commentid>
    <comment_count>9</comment_count>
      <attachid>215198</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-25 12:41:42 -0700</bug_when>
    <thetext>Comment on attachment 215198
Patch

Attachment 215198 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/12988001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943701</commentid>
    <comment_count>10</comment_count>
      <attachid>215198</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-25 12:49:19 -0700</bug_when>
    <thetext>Comment on attachment 215198
Patch

Attachment 215198 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/13018001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943712</commentid>
    <comment_count>11</comment_count>
      <attachid>215198</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-25 13:14:24 -0700</bug_when>
    <thetext>Comment on attachment 215198
Patch

Attachment 215198 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/12978004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943723</commentid>
    <comment_count>12</comment_count>
      <attachid>215198</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-25 13:30:11 -0700</bug_when>
    <thetext>Comment on attachment 215198
Patch

Attachment 215198 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/12928017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945278</commentid>
    <comment_count>13</comment_count>
      <attachid>215587</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-30 18:03:35 -0700</bug_when>
    <thetext>Created attachment 215587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945285</commentid>
    <comment_count>14</comment_count>
      <attachid>215587</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-30 18:14:06 -0700</bug_when>
    <thetext>Comment on attachment 215587
Patch

Attachment 215587 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/17078370</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945288</commentid>
    <comment_count>15</comment_count>
      <attachid>215587</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-30 18:45:52 -0700</bug_when>
    <thetext>Comment on attachment 215587
Patch

Attachment 215587 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/17108363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945290</commentid>
    <comment_count>16</comment_count>
      <attachid>215592</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-30 18:56:16 -0700</bug_when>
    <thetext>Created attachment 215592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945291</commentid>
    <comment_count>17</comment_count>
      <attachid>215592</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-30 19:05:20 -0700</bug_when>
    <thetext>Comment on attachment 215592
Patch

Attachment 215592 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/17078383</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945294</commentid>
    <comment_count>18</comment_count>
      <attachid>215594</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-30 19:06:35 -0700</bug_when>
    <thetext>Created attachment 215594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945644</commentid>
    <comment_count>19</comment_count>
      <attachid>215667</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-31 13:01:29 -0700</bug_when>
    <thetext>Created attachment 215667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945668</commentid>
    <comment_count>20</comment_count>
      <attachid>215667</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 13:45:02 -0700</bug_when>
    <thetext>Comment on attachment 215667
Patch

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

&gt; Source/JavaScriptCore/jit/JSInterfaceJIT.h:402
&gt; -    ALWAYS_INLINE JSInterfaceJIT::Jump JSInterfaceJIT::emitJumpIfNotType(RegisterID baseReg, RegisterID scratchReg, JSType type)
&gt; +    ALWAYS_INLINE void JSInterfaceJIT::emitLoadStructure(RegisterID source, RegisterID dest, RegisterID scratch)
&gt;      {
&gt; -        loadPtr(Address(baseReg, JSCell::structureOffset()), scratchReg);
&gt; -        return branch8(NotEqual, Address(scratchReg, Structure::typeInfoTypeOffset()), TrustedImm32(type));
&gt; +#if USE(JSVALUE64)
&gt; +        load32(MacroAssembler::Address(source, JSCell::structureIDOffset()), dest);
&gt; +        loadPtr(vm()-&gt;heap.structureIDTable().base(), scratch); 
&gt; +        loadPtr(BaseIndex(scratch, dest, TimesEight), dest);
&gt; +#else
&gt; +        UNUSED_PARAM(scratch);
&gt; +        loadPtr(MacroAssembler::Address(source, JSCell::structureIDOffset()), dest);
&gt; +#endif
&gt; +    }

You could put this into AssemblyHelpers.

&gt; Source/JavaScriptCore/jit/UnusedPointer.h:35
&gt; +#if USE(JSVALUE64)
&gt; +static const uintptr_t unusedPointer = 0x0;
&gt; +#else
&gt;  static const uintptr_t unusedPointer = 0xd1e7beef;
&gt; +#endif

Kill if possible.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:304
&gt; +#    loadb Structure::m_indexingType[structure], scratch
&gt; +#    storeb scratch, JSCell::m_indexingType[cell]
&gt; +#
&gt; +#    loadb Structure::m_typeInfo + TypeInfo::m_flags[structure], scratch
&gt; +#    storeb scratch, JSCell::m_flags[cell]
&gt; +#
&gt; +#    loadb Structure::m_typeInfo + TypeInfo::m_type[structure], scratch
&gt; +#    storeb scratch, JSCell::m_type[cell]
&gt; +#
&gt; +#    storep structure, JSCell::m_structureID[cell]

Delete.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:229
&gt; +#    loadb Structure::m_indexingType[structure], scratch
&gt; +#    storeb scratch, JSCell::m_indexingType[cell]
&gt; +#
&gt; +#    loadb Structure::m_typeInfo + TypeInfo::m_flags[structure], scratch
&gt; +#    storeb scratch, JSCell::m_flags[cell]
&gt; +#
&gt; +#    loadb Structure::m_typeInfo + TypeInfo::m_type[structure], scratch
&gt; +#    storeb scratch, JSCell::m_type[cell]
&gt; +#
&gt; +#    loadi Structure::m_structureID[structure], scratch
&gt; +#    storei scratch, JSCell::m_structureID[cell]

Srsly bra</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951634</commentid>
    <comment_count>21</comment_count>
      <attachid>217203</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 09:27:33 -0800</bug_when>
    <thetext>Created attachment 217203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951636</commentid>
    <comment_count>22</comment_count>
      <attachid>217204</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 09:32:46 -0800</bug_when>
    <thetext>Created attachment 217204
jsc benchmark results

These are the benchmark results for this latest patch. Overall a slight slowdown. Sunspider and kraken are both 1-2% slower, v8v7 is ~0.5% faster, octane is neutral. 3d-cube seems to be the largest overall contributor to the slowdown in sunspider and especially in longspider (~30% slowdown).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951638</commentid>
    <comment_count>23</comment_count>
      <attachid>217205</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 09:38:44 -0800</bug_when>
    <thetext>Created attachment 217205
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951647</commentid>
    <comment_count>24</comment_count>
      <attachid>217205</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-18 10:11:08 -0800</bug_when>
    <thetext>Comment on attachment 217205
rebase

Attachment 217205 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/27738047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951650</commentid>
    <comment_count>25</comment_count>
      <attachid>217205</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-18 10:16:34 -0800</bug_when>
    <thetext>Comment on attachment 217205
rebase

Attachment 217205 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/27718058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951695</commentid>
    <comment_count>26</comment_count>
      <attachid>217205</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-18 10:59:18 -0800</bug_when>
    <thetext>Comment on attachment 217205
rebase

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

&gt; Source/JavaScriptCore/runtime/VM.h:535
&gt; +    inline VM* VM::currentVM()
&gt; +    {
&gt; +#if USE(PTHREAD_GETSPECIFIC_DIRECT)
&gt; +        return reinterpret_cast&lt;VM*&gt;(pthread_getspecific(s_currentVM));
&gt; +#else
&gt; +        return reinterpret_cast&lt;VM*&gt;(WTF::threadSpecificGet(s_currentVM));
&gt; +#endif
&gt; +    }
&gt; +    
&gt; +    inline void VM::setCurrentVM(VM* vm)
&gt; +    {
&gt; +#if USE(PTHREAD_GETSPECIFIC_DIRECT)
&gt; +        pthread_setspecific(s_currentVM, reinterpret_cast&lt;void*&gt;(vm));
&gt; +#else
&gt; +        WTF::threadSpecificSet(s_currentVM, reinterpret_cast&lt;void*&gt;(vm));
&gt; +#endif
&gt; +    }

You want the _direct variant of pthread_getspecific and pthread_setspecific. That&apos;s the inlined version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951698</commentid>
    <comment_count>27</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-18 11:00:15 -0800</bug_when>
    <thetext>&gt; Overall a slight slowdown. Sunspider and kraken are both 1-2% slower....

What&apos;s your plan for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984453</commentid>
    <comment_count>28</comment_count>
      <attachid>225174</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-25 12:58:48 -0800</bug_when>
    <thetext>Created attachment 225174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984482</commentid>
    <comment_count>29</comment_count>
      <attachid>225174</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-25 13:38:43 -0800</bug_when>
    <thetext>Comment on attachment 225174
Patch

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

LGTM, but make those changes.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:2228
&gt; +    ALWAYS_INLINE Jump branchPtrWithPatch(RelationalCondition cond, Address left, DataLabel32&amp; dataLabel, TrustedImm32 initialRightValue = TrustedImm32(0))
&gt; +    {
&gt; +        dataLabel = DataLabel32(this);
&gt; +        moveWithPatch(initialRightValue, getCachedDataTempRegisterIDAndInvalidate());
&gt; +        return branch32(cond, left, dataTempRegister);
&gt; +    }

Rename to branch32WithPatch

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:4019
&gt; -        m_out.storePtr(structure, result, m_heaps.JSCell_structure);
&gt; +        LValue structureID = m_out.load32(structure, m_heaps.Structure_structureID);
&gt; +        LValue indexingType = m_out.load8(structure, m_heaps.Structure_indexingType);
&gt; +        LValue typeInfoType = m_out.load8(structure, m_heaps.Structure_typeInfoType);
&gt; +        LValue typeInfoFlags = m_out.load8(structure, m_heaps.Structure_typeInfoFlags);
&gt; +
&gt; +        m_out.store32(structureID, result, m_heaps.JSCell_structureID);
&gt; +        m_out.store8(indexingType, result, m_heaps.JSCell_indexingType);
&gt; +        m_out.store8(typeInfoType, result, m_heaps.JSCell_typeInfoType);
&gt; +        m_out.store8(typeInfoFlags, result, m_heaps.JSCell_typeInfoFlags);
&gt; +        m_out.store8(m_out.constInt8(0), result, m_heaps.JSCell_gcData);

The common case is that we&apos;re passing a constant structure.  Factor this in such a way that if structure is a constant, this doesn&apos;t emit loads.

&gt; Source/JavaScriptCore/jit/UnusedPointer.h:35
&gt; +#if USE(JSVALUE64)
&gt; +static const uintptr_t unusedPointer = 0x0;
&gt; +#else
&gt;  static const uintptr_t unusedPointer = 0xd1e7beef;
&gt; +#endif

Can we arrange to keep diet beef as the unused pointer?

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:95
&gt; +inline IndexingType JSCell::indexingType() const
&gt; +{
&gt; +    return (*reinterpret_cast&lt;const uint64_t*&gt;(this) &amp; 0x000000ff00000000) &gt;&gt; 32;
&gt;  }

Web template framework?

&gt; Source/JavaScriptCore/runtime/Structure.h:510
&gt; +    // These need to be properly aligned at the beginning of the &apos;Structure&apos;
&gt; +    // part of the object.
&gt; +    StructureID m_structureID;
&gt; +    IndexingType m_indexingType;
&gt; +    TypeInfo m_typeInfo;

Unionify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984601</commentid>
    <comment_count>30</comment_count>
      <attachid>225214</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-25 19:25:58 -0800</bug_when>
    <thetext>Created attachment 225214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984603</commentid>
    <comment_count>31</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-25 19:31:34 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Created an attachment (id=225214) [details]
&gt; Patch

Can has description of what changed?

/me doesn&apos;t want to read the whole patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984604</commentid>
    <comment_count>32</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-25 19:35:33 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; Created an attachment (id=225214) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Can has description of what changed?
&gt; 
&gt; /me doesn&apos;t want to read the whole patch again.

The biggest change is that I added a StructureIDBlob class to encapsulate most of the crazy related to loading the blob out of the Structure during object initialization. It basically splits the TypeInfo in half (inlineTypeFlags and outOfLineTypeFlags), which you can recombine at any point to get a TypeInfo back.

Also fixing some of your other comments, and trying to get all the ports building :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984762</commentid>
    <comment_count>33</comment_count>
      <attachid>225214</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-02-26 09:15:35 -0800</bug_when>
    <thetext>Comment on attachment 225214
Patch

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

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:112
&gt; +    Structure* structure = cell-&gt;structure();
&gt; +    visitor.appendUnbarrieredPointer(&amp;structure);

Seems unfortunate to have to do the expensive JS::structure(), could we pull the VM&amp; from the SlotVisitor?

&gt; Source/JavaScriptCore/runtime/JSDestructibleObject.h:37
&gt;      if (MarkedBlock::blockFor(this)-&gt;destructorType() == MarkedBlock::Normal)
&gt;          return static_cast&lt;const JSDestructibleObject*&gt;(this)-&gt;classInfo();
&gt; -#if ENABLE(GC_VALIDATION)
&gt; -    return m_structure.unvalidatedGet()-&gt;classInfo();
&gt; -#else
&gt; -    return m_structure-&gt;classInfo();
&gt; -#endif
&gt; +    return structure()-&gt;classInfo();
&gt;  }

Since you are already doing MarkedBlock::blockFor(this), can you pull the Heap (and then the VM&amp;) out of it instead of repeating the same work in structure()?

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:396
&gt; +        thisObject-&gt;methodTable(exec-&gt;vm())-&gt;getOwnPropertySlot(thisObject, exec, exec-&gt;propertyNames().prototype, slot);

You could probably reduce the generated code size here by pulling the VM&amp; into a local and using it for things like propertyNames(), which otherwise will probably repeat the load.

&gt; Source/JavaScriptCore/runtime/JSObject.cpp:657
&gt; +    Structure* structure = this-&gt;structure();

You&apos;ve got the VM, why not use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984779</commentid>
    <comment_count>34</comment_count>
      <attachid>225214</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-02-26 09:58:55 -0800</bug_when>
    <thetext>Comment on attachment 225214
Patch

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

&gt; Source/JavaScriptCore/assembler/X86Assembler.h:2079
&gt; +        const int instructionSize = 6; // REX MOV IMM32

It should be unsigned to fix the EFL build. It is enough to make EFL build happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984830</commentid>
    <comment_count>35</comment_count>
      <attachid>225275</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 12:06:33 -0800</bug_when>
    <thetext>Created attachment 225275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984831</commentid>
    <comment_count>36</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 12:07:26 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=225275) [details]
&gt; Patch

No major changes, just fixing builds and review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984838</commentid>
    <comment_count>37</comment_count>
      <attachid>225275</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-26 12:12:04 -0800</bug_when>
    <thetext>Comment on attachment 225275
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984877</commentid>
    <comment_count>38</comment_count>
      <attachid>225288</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 13:26:27 -0800</bug_when>
    <thetext>Created attachment 225288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985009</commentid>
    <comment_count>39</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 17:22:02 -0800</bug_when>
    <thetext>Committed r164764: &lt;http://trac.webkit.org/changeset/164764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985034</commentid>
    <comment_count>40</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-26 18:32:52 -0800</bug_when>
    <thetext>Looks like this change introduced a crash inside Indentifier::add.  I&apos;m hitting it on a few hundred tests now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985036</commentid>
    <comment_count>41</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-26 18:33:53 -0800</bug_when>
    <thetext>identifierTable is null inside JSC::Identifier::add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985037</commentid>
    <comment_count>42</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 18:35:00 -0800</bug_when>
    <thetext>(In reply to comment #41)
&gt; identifierTable is null inside JSC::Identifier::add.

Odd. I was passing all tests prior to landing. Bug? Backtrace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985038</commentid>
    <comment_count>43</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-26 18:44:05 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt; identifierTable is null inside JSC::Identifier::add.
&gt; 
&gt; Odd. I was passing all tests prior to landing. Bug? Backtrace?

Sam suggested I might be hitting a stale build file issue so I&apos;m doing a full clean build now.  Will report back traces when that&apos;s done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985040</commentid>
    <comment_count>44</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-02-26 18:53:59 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; (In reply to comment #41)
&gt; &gt; &gt; identifierTable is null inside JSC::Identifier::add.
&gt; &gt; 
&gt; &gt; Odd. I was passing all tests prior to landing. Bug? Backtrace?
&gt; 
&gt; Sam suggested I might be hitting a stale build file issue so I&apos;m doing a full clean build now.  Will report back traces when that&apos;s done.

Looks like this was it.  Sorry about the false positive :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985041</commentid>
    <comment_count>45</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 18:54:47 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #43)
&gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; (In reply to comment #41)
&gt; &gt; &gt; &gt; identifierTable is null inside JSC::Identifier::add.
&gt; &gt; &gt; 
&gt; &gt; &gt; Odd. I was passing all tests prior to landing. Bug? Backtrace?
&gt; &gt; 
&gt; &gt; Sam suggested I might be hitting a stale build file issue so I&apos;m doing a full clean build now.  Will report back traces when that&apos;s done.
&gt; 
&gt; Looks like this was it.  Sorry about the false positive :(

Whew! :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214921</attachid>
            <date>2013-10-22 20:21:24 -0700</date>
            <delta_ts>2013-10-22 20:44:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131022202109.patch</filename>
            <type>text/plain</type>
            <size>157739</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3ODQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBA
QAorMjAxMy0xMC0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBm
cmVlIHVwIDMyIGJpdHMgb2Ygc3BhY2UgaW4gSlNDZWxsIGhlYWRlcnMsIHdoaWNoIHdlIGNhbiB1
c2UgZm9yIAorICAgICAgICBvdGhlciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBJbmRleGluZ1R5cGUs
IEpTVHlwZSwgSlNUeXBlSW5mbyB0eXBlIGZsYWdzLCBhbmQgCisgICAgICAgIGdhcmJhZ2UgY29s
bGVjdGlvbiBtZXRhZGF0YS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmJfcm0pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFN0cnVjdHVyZVB0cik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAg
ICAgICAqIGhlYXAvUmVnaW9uLmg6CisgICAgICAgICogaGVhcC9TdXBlclJlZ2lvbi5oOgorICAg
ICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6YmFzZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9v
YmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
bmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAo
SlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6
CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5o
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpn
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKIDIwMTMtMTAtMjIgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIFZNKiAtPiBW
TSYgY2xlYW51cHMgaW4gSGFzaFRhYmxlIGFuZCBLZXl3b3Jkcy4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjk1LDYgKzY5NSw4IEBACiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElD
YWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
ICovOyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2RjQ2MjUxN0U5
NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJCTJBRDM1M0Q5
MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgxNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFEMzUzREExODE1QzEwQjAwNjFFODE3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFE
ODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4
Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBF
Q0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9
OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMw
MEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwpAQCAtMTkxMSw2ICsxOTEzLDggQEAK
IAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgx
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlv
blNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUw
MEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGli
OyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJ
NDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU5NSw2ICszNTk5LDggQEAKIAkJCQlBN0JEQUVD
MzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCUE3
QkRBRUM0MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAogCQkJCUE3
QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJCQkyQUQz
NTNENzE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFE
MzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MDY1LDYg
KzQwNzEsNyBAQAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RBMTgxNUMx
MEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlv
bnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTM4OCw2ICs1Mzk1LDcgQEAKIAkJCQkxNDdGMzlENDEw
N0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3
RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTJBRDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVy
UHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0Eg
LyogSlNQcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5
NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDYgKzM1OSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBk
YXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlh
bFJpZ2h0VmFsdWUpKTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
LmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1
c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGlu
aXRpYWxSaWdodFZhbHVlKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRo
UGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjI4LDYgKzYyOCwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyNpZiBDUFUoWDg2KQorICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0
b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOworICAgICAgICAvLyBlc3AuLmVkaSBhcmUg
bWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQorICAgICAgICBpZiAoc3JjID49IDQpIHsKKyAg
ICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCisgICAgICAgICAgICBSZWdp
c3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKKworICAgICAgICAgICAg
Ly8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgor
ICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
Yl9ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIHN3
YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKICNpZiBDUFUoWDg2KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNp
b24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNiArNTkyLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFi
ZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX2k2NHIoaW5pdGlhbFZhbHVlLm1fdmFsdWUsIGRlc3QpOworICAgICAgICByZXR1
cm4gRGF0YUxhYmVsUHRyKHRoaXMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBh
dGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQ
dHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJ
bW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRp
YWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOwpAQCAtNjA0LDYgKzYxMSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
MzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBk
YXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMw
NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9Q
X01PVl9FYkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CisKKyAg
ICB2b2lkIG1vdmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KICAgICAKICAgICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRh
bCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0lORk87CiB9OwpAQCAt
NTQ1LDcgKzU0NSw3IEBAIHByaXZhdGU6CiAKIHByb3RlY3RlZDoKIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEFycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLAotICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0ZW1wR1BSLCBHUFJSZWcgc3RydWN0dXJl
R1BSKQorICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0ZW1wR1BSLCBHUFJSZWcg
dGVtcDJHUFIsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAs
IG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2RlLT5hcnJheU1vZGUo
KSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BS
KQogICAgICAgICAsIG1fcHJvcGVydHlHUFIocHJvcGVydHlHUFIpCiAgICAgICAgICwgbV90ZW1w
R1BSKHRlbXBHUFIpCisgICAgICAgICwgbV90ZW1wMkdQUih0ZW1wMkdQUikKICAgICAgICAgLCBt
X3N0cnVjdHVyZUdQUihzdHJ1Y3R1cmVHUFIpCiAgICAgewogICAgICAgICBBU1NFUlQobV9vcCA9
PSBBcnJheWlmeSB8fCBtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpOwpAQCAtMTIxLDE3ICsx
MjIsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAgaWYgKG1fb3AgPT0gQXJyYXlp
ZnlUb1N0cnVjdHVyZSkgewogICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIGppdC0+ZW1pdExvYWRTdHJ1Y3R1cmUobV9iYXNlR1BSLCBtX3RlbXBHUFIsIG1fdGVt
cDJHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAg
ICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQs
IGppdC0+bV9qaXQuYnJhbmNoV2Vha1B0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG1fdGVt
cEdQUiwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFs
YXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxp
bmcgZG9lcyBub3Qgc2F2ZQogICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBp
dCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKICAg
ICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0
cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICBq
aXQtPmVtaXRMb2FkU3RydWN0dXJlKG1fYmFzZUdQUiwgbV9zdHJ1Y3R1cmVHUFIsIG1fdGVtcDJH
UFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdl
IGhhdmUgdGhlIGtpbmQgb2YgYXJyYXkgc3RvcmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCiAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBj
aGVjaywgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhlIApAQCAtMTUzLDYgKzE1MSw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0eUdQUjsKICAg
ICBHUFJSZWcgbV90ZW1wR1BSOworICAgIEdQUlJlZyBtX3RlbXAyR1BSOwogICAgIEdQUlJlZyBt
X3N0cnVjdHVyZUdQUjsKICAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIG1fYmFkUHJvcGVydHlK
dW1wOwogICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9iYWRJbmRleGluZ1R5cGVKdW1wOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgYWRk
V2Vha1JlZmVyZW5jZSh3ZWFrUHRyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVj
dHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVm
ZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgSnVtcCBicmFuY2hTdHJ1Y3R1cmVQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmUtPmlkKCkpKTsKKyAgICB9CisKICAgICB2b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxv
Y2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpCiAgICAgewogICAgICAgICAvLyBPU1IgZW50cnkgaXMgbm90IGFsbG93ZWQg
aW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw5
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1ZVNv
dXJjZS5ncHIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlI
ZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gyKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gyLCBzY3JhdGNoMSwg
QXNzZW1ibHlIZWxwZXJzOjpUaW1lc0VpZ2h0KSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MSwxMiArMjcxLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9i
YWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3Qo
dGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlm
ICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRy
dXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI4NSw2ICsyODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5t
b3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAg
ICBlbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAg
ICAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBK
SVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIsIHJlc3VsdEdQUik7CiAgICAgfQpAQCAtMzM3LDE2ICszNDEsMjAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAg
ICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVy
bywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdH
UFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAgICAgICAg
IGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iob3Bl
cmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIGVtaXRM
b2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBi
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC0x
NTIxLDQxICsxNTI5LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVh
bGkKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBz
dHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTU5NSwyMSArMTU5OCwyMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgc3BlY3VsYXRpb25X
YXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxl
ZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAg
c3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjIyLDIxICsxNjI0LDIwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIs
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0x
NzAwLDIxICsxNzAxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amUKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAg
ICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQs
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hp
bGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogCkBAIC0xNzI3LDIxICsxNzI3LDIw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBzcGVjdWxhdGlv
bldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAg
ICAgfQogICAgIApAQCAtMTg1OCw2ICsxODU3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdE9yT3RoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpOwpAQCAtMTg2NiwzMyArMTg2NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1
bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0
ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9u
IHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVy
ZSk7CisgICAgICAgIHNjcmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dFZhbGlkKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLQogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWVH
UFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApA
QCAtMjAxMSwzMyArMjAxNCw0MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JP
dGhlckJyCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZVVzZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcg
c3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKworICAgIGlmICghbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1
cmUpOworICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgfQogICAg
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZCgpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVV
c2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpaZXJvLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2
YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikp
KSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsK
QEAgLTM0NzQsNyArMzQ4NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFBy
aW1pdGl2ZSA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKQEAgLTM1MDEsMTAgKzM1MTcsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoMiA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAg
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
b3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM3MzEsNyArMzc0
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7
CiAgICAgICAgICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
LSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1t
UHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
Q2FzZXMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNj
cmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4NzMsMTEgKzM4ODksOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoVGVzdDY0KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1
ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0
aGlzVmFsdWVHUFIsIHRlbXBHUFIpOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlv
bjsKQEAgLTQxNjUsMTQgKzQxNzksMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtp
bmQsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
V2Vha1N0cnVjdHVyZSgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Cisg
ICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgICAgICAgICAgZW1p
dExvYWRTdHJ1Y3R1cmUoYmFzZS5ncHIoKSwgc3RydWN0dXJlLmdwcigpLCBzY3JhdGNoLmdwcigp
KTsgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25l
OwogICAgICAgICAgICAgCkBAIC00MjA3LDcgKzQyMjIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBub2Rl
LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNP
Sy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtNDIyOSw3ICs0MjQ3LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNv
bW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9w
bGFuLCBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZSk7CiAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCiAgICAgICAg
IAogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKQEAgLTQyMzcsNyArNDI1Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3Ry
dWN0dXJlLCBXcml0ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNzKTsKICNlbmRpZgogICAgICAgICAK
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9k
ZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAg
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIGJhc2VH
UFIsIHNjcmF0Y2hHUFIpOyAKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTQ0MDUsOCArNDQyNSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7
CiAKICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZScuCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwLCBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQzNSw4ICs0NDU3LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJh
bmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAKQEAg
LTQ0ODMsOCArNDUwNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2pp
dC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHZhbHVlLmdwcigpLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgCisgICAgICAg
ICAgICByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1
ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00NTIzLDggKzQ1NDksNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwot
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOwogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgZG9uZUp1bXBzOwpAQCAtNDUzOCw4ICs0NTYyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7
CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkg
fHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlR1BS
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKFN0cmluZ1R5cGUpKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gU3RyaW5nVXNlKQogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5n
KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFs
bFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1Nzcy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NjYsOSArNzY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcnJheShOb2RlKiBubwogICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZVJlZywgdGVt
cEdQUiwgdGVtcDIuZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQ
Uik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCAwLApAQCAtNzg4LDggKzc4
OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICBSRUxF
QVNFX0FTU0VSVChleHBlY3RlZENsYXNzSW5mbyk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7Ci0gICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXAuZ3ByKCkpOwor
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNl
UmVnLCB0ZW1wLmdwcigpLCB0ZW1wMi5ncHIoKSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUs
CiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTgwNSw4ICs4MDUsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZQogICAgIEFTU0VSVChub2RlLT5hcnJheU1v
ZGUoKS5kb2VzQ29udmVyc2lvbigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0cnVj
dHVyZTsKICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgR1BSUmVnIHRlbXAy
R1BSID0gdGVtcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJS
ZWc7CiAgICAgCiAgICAgaWYgKG5vZGUtPm9wKCkgIT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewpA
QCAtODE5LDEzICs4MjEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSog
bm9kZQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICAKICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7Ci0gICAgICAgIHNsb3dQYXRo
LmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9q
aXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgIG5vZGUtPnN0cnVj
dHVyZSgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlUmVn
LCBzdHJ1Y3R1cmVHUFIsIHRlbXBHUFIpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDgo
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKQEAgLTgzNCw3ICs4MzUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlCiAgICAgfQogICAgIAog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBBcnJheWlmeVNsb3dQYXRoR2Vu
ZXJhdG9yKAotICAgICAgICBzbG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpKTsKKyAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG5v
ZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCB0ZW1wMkdQUiwgc3RydWN0dXJlR1BS
KSkpOwogICAgIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMTM1OSwyNCAr
MTM2MCwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCAKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVj
dCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwK
LSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0
dXJlLmdwcigpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAg
ICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUob3AxR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkp
OwogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+
U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAg
ICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5j
aGlsZDEoKSwKQEAgLTEzOTEsNyArMTM5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZU9iamUKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUob3AyR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwog
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3Bl
Y09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAg
ICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwKQEAgLTI4NDQsMTAgKzI4NDYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsRm9yRgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBH
UFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZykKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQ
UlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcp
CiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocHJv
dG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChzY3Jh
dGNoUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVnIHdpdGggdGhlIHZh
bHVlIGJlaW5nIGNoZWNrZWQuCkBAIC0yODU1LDcgKzI4NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgCiAgICAgLy8gV2FsayB1cCB0aGUgcHJvdG90
eXBlIGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmluZyB0byBwcm90
b3R5cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0KTsKLSAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShz
Y3JhdGNoUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yODk0LDkgKzI4OTYsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKQEAgLTI5MTMs
NyArMjkxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAg
ICAgICAgCiAgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIAotICAgICAgICBj
b21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBz
Y3JhdGNoUmVnKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFs
dWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgICAgICAK
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTI5MjksMTIgKzI5MzMsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwog
ICAgIAogICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBwcm90
b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3Jh
dGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAg
IAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5
cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUs
IHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVnLCBub2RlLCBEYXRh
Rm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ2NTAsMTEgKzQ2NTYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKTsKICAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVj
dHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCAKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlQ2VsbE9mZnNldCgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgCkBAIC00Njc5LDEwICs0Njg3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVk
aWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
ZWVkQ2FsbCA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBuZWVkQ2FsbC5saW5rKCZt
X2ppdCk7CkBAIC00ODgyLDEwICs0ODkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZU9iamVjdChFZGcKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVk
Z2UpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwogICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
RmluYWxPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDg5NSw5ICs0OTAzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJh
bmQuZ3ByKCk7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoZ3By
LCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjRmluYWxPYmplY3Qs
IG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCkBA
IC00OTE4LDEwICs0OTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVz
dDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncyhn
cHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVj
T3RoZXIpKSB7CkBAIC00OTQxLDEwICs0OTUwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0KICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIs
IHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2Vs
bC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwg
U3BlY090aGVyKSkgewpAQCAtNDk2NCwxMCArNDk3MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCks
IGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVn
IHN0b3JhZ2UpCkBAIC01MDIwLDcgKzUwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09i
amVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7Ci0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0
Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShl
ZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRn
ZSBlZGdlKQpAQCAtNTA0NywxNSArNTA1NiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTdHJpbmdPclN0CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5n
IHwgU3BlY1N0cmluZ09iamVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7Ci0gICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhn
cHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAK
KyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUo
ZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1
cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpKTsKICAgICAKICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgCkBAIC01MzIw
LDEwICs1MzI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUK
ICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAg
CiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRH
UFIoKSwgdGVtcEdQUik7CkBAIC01NjIwLDEwICs1NjI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJh
bmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxv
YWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEt
PmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hTdHJpbmdPblN0cmlu
ZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTczMyw3ICs3MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgbm9u
U3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0g
ICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVn
LCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZyk7CisgICAg
dm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBH
UFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZywgR1BSUmVnIHNj
cmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICAKICAg
ICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3MpCkBAIC0yMDYyLDYgKzIw
NjIsNzggQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAg
IH0KKworICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBk
ZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBkZXN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaEdQUiwgZGVzdEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBkZXN0R1BSKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBlbWl0TG9hZFN0cnVjdHVyZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIGppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgZGVzdEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKGppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hHUFIsIGRlc3RHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdEdQUik7CisgICAgfQorCisgICAgdm9pZCBlbWl0U3Rv
cmVTdHJ1Y3R1cmUoVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAg
IHsKKyAgICAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxj
b25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1ZSk7CisgICAgICAgIG1faml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIH0KKworICAg
IHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0
dXJlLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnKQorICAgIHsKKyAgICAgICAgZW1pdFN0b3JlU3Ry
dWN0dXJlV2l0aFR5cGVJbmZvKG1faml0LCBzdHJ1Y3R1cmUsIGRlc3RHUFIpOworICAgIH0KKwor
ICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEdQUlJlZyBzdHJ1Y3R1cmVH
UFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIC8v
IFN0b3JlIHRoZSB0eXBlIGluZm8gZmxhZ3MKKyAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTgoc2NyYXRjaEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgSlNUeXBlCisgICAgICAgIG1faml0LmxvYWQ4
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTgoc2NyYXRj
aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBpbmRleGluZyB0eXBlCisgICAg
ICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2pp
dC5zdG9yZTgoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlND
ZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBTdHJ1
Y3R1cmVJRAorICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmUoc3RydWN0dXJlR1BSLCBkZXN0R1BS
LCBzY3JhdGNoR1BSKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oQ0NhbGxIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0dXJl
LCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJl
UHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwor
ICAgICAgICAvLyBXZSBoYXZlIHRvIGNhc3QgdG8gc2lnbmVkIGJlY2F1c2Ugc3RvcmU4IGdldHMg
bWFkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBzaWduZWQgY2hhciByYW5nZS4KKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZv
KCkudHlwZSgpKSA8PSAyNTUpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkgPD0gMjU1KTsKKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPmluZGV4aW5n
VHlwZSgpKSA8PSAyNTUpOworCisgICAgICAgIGppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDhfdD4oc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkpLCAKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpKTsKKyAgICAgICAgaml0LnN0b3JlOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50OF90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpKSwgCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSkpOworICAgICAgICBqaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkpKSwgCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSk7CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZShqaXQsIHN0cnVjdHVyZSwgZGVzdCk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlKENDYWxsSGVscGVy
cyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgR1BSUmVnIGRlc3RHUFIpCisgICAgewor
ICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0
IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgaml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRl
c3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIH0KKworICAgIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BSLCBH
UFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworICAgIH0KICAgICAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGEgY2VsbCBvZiBhIHNwZWNpZmlj
IHNpemUuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IC8vIFN0cnVjdHVy
ZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCkBAIC0yMDc3LDcgKzIxNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGFsbG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgp
KSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgotICAg
ICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lmaWMgc2l6
ZS4KQEAgLTMwMjksOCArMzEwMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamUKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9j
dXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSkpIHsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNW
YWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxvY2F0aW9uLCBUcnVzdGVkSW1t
UHRyKHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVj
dHVyZUxvY2F0aW9uLCBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKTsKICAgICB9CiAgICAgbV9qaXQu
YWRkTGF6aWx5KAogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoTm90U3RyaW5nT2JqZWN0
KSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAko
cmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxv
Y2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWFrQmxvY2s7
CiAvLyBzaG9ydCBwZXJpb2RzIG9mIHRpbWUgYW5kIHRoZW4gZnJlZWluZyB0aGVtIG9uIGEgc2Vj
b25kYXJ5IHRocmVhZC4KIAogY2xhc3MgQmxvY2tBbGxvY2F0b3IgeworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgQmxvY2tBbGxvY2F0b3IoKTsK
ICAgICB+QmxvY2tBbGxvY2F0b3IoKTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGUoVCopOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGVDdXN0b21TaXplKFQqKTsKIAorICAgIFN1cGVyUmVn
aW9uJiBzdXBlclJlZ2lvbigpIHsgcmV0dXJuIG1fc3VwZXJSZWdpb247IH0KKwogcHJpdmF0ZToK
ICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxh
dGl2ZSk7CiAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24g
MTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
ICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBS
RUxFQVNFX0FTU0VSVChjZWxsKTtcCi0gICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0
ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRl
ZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVy
ZSgpKTsgXAorICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUo
KSA9PSBjZWxsLT5zdHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3
aGlsZSAoMCkKIAogI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xh
c3NJbmZvKSBkbyB7XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyU3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAt
MTg2LDYgKzE4Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBp
c0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFsRGVwdGg7IH0KIAorICAgICAg
ICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKKyAgICAgICAgU3RydWN0dXJlSURU
YWJsZSYgc3RydWN0dXJlSURUYWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENvcGllZEJsb2NrOwpAQCAtMjM2LDcgKzI0MCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyQ29sbGVjdCgpOwogCiAgICAgICAgIEpTU3Rh
Y2smIHN0YWNrKCk7Ci0gICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwog
ICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNyZW1lbnREZWZlcnJh
bERlcHRoKCk7CiAgICAgICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwpAQCAtMjU2
LDYgKzI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSGVhcE9wZXJh
dGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yIG1fYmxv
Y2tBbGxvY2F0b3I7CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxl
OwogICAgICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNwYWNlOwogICAgICAgICBDb3BpZWRTcGFj
ZSBtX3N0b3JhZ2VTcGFjZTsKICAgICAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlC
dWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMjAgKzIyMywyMiBAQCBp
bmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2UucHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAg
ICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNb
aV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5pbXByZWNpc2VBbGxv
Y2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVj
dG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0g
ICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQotCiAgICAgbV9ub3JtYWxTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JF
YWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VD
b3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnBy
ZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1faW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1
cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgJKHJldmlzaW9u
IDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNkZWZpbmUgSEVBUF9NRU1PUllfSUQgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0zKSkKIAotI2RlZmluZSBF
TkFCTEVfU1VQRVJfUkVHSU9OIDAKKyNkZWZpbmUgRU5BQkxFX1NVUEVSX1JFR0lPTiAxCiAKICNp
Zm5kZWYgRU5BQkxFX1NVUEVSX1JFR0lPTgogI2lmIFVTRShKU1ZBTFVFNjQpICYmICFDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHJldmlz
aW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFZNOwogCiBjbGFzcyBTdXBlclJlZ2lvbiA6IHB1YmxpYyBXVEY6Ok1ldGFBbGxvY2F0b3Igewor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgU3Vw
ZXJSZWdpb24oKTsKICAgICB2aXJ0dWFsIH5TdXBlclJlZ2lvbigpOwogCisgICAgdm9pZCogYmFz
ZSgpIHsgcmV0dXJuIG1fcmVzZXJ2YXRpb25CYXNlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQqIGFsbG9jYXRlTmV3U3BhY2Uoc2l6ZV90JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVn
aXN0ZXJJRCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBp
bmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90T2Jq
ZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIEp1bXAgYWRkU3RydWN0
dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0
aW9uQ2hlY2soSlNDZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpAQCAtMzc2LDYgKzM3NiwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2Rl
IHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCisgICAgICAgIHZvaWQgZW1pdExvYWRT
dHJ1Y3R1cmUoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKTsKKyAgICAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVn
aXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsK
KyAgICAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0
ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlSW50KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTc3MjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwog
ICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAg
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDAsIHJl
Z1QxKTsKICAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QwLCBpbnN0cnVjdGlvbls2XS51LmFycmF5
UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBkb25l
LmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFn
TWFza1JlZ2lzdGVyKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihleHBlY3RlZFN0cnVjdHVyZS0+aWQoKSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFp
bigpKSwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZgogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVj
a3MoTWFjcm9Bc3NlbWJsZXImIGppdCwgR1BSUmVnIGJ1dHRlcmZseSkKIHsKLSAgICBtX3N0cnVj
dHVyZUNoZWNrID0gaml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICBtX3N0cnVj
dHVyZUNoZWNrID0gaml0LnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1f
YmFzZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICBt
X3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
KyAgICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkp
OwogICAgIAogICAgIG1fcHJvcGVydHlTdG9yYWdlTG9hZCA9IGppdC5jb252ZXJ0aWJsZUxvYWRQ
dHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCks
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGJ1dHRlcmZseSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcg
KzgwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihtX3ZtLT5zdHJpbmdTdHJ1Y3R1
cmUtPmlkKCkpKSk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMigxKSkpOwogICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nVmFsdWVPZmZzZXQoKSksIGRzdCk7CiAg
ICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkc3QpKTsKQEAgLTU1MSw3ICs1
NTEsNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAKIEFMV0FZ
U19JTkxJTkUgSklUOjpKdW1wIEpJVDo6Y2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7
CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAtNTk5LDkg
KzU5OSw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8KICAgICBq
dW1wLmxpbmtUbyhtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXRdLCB0
aGlzKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90T2Jq
ZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0gICAgcmV0
dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4g
YnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKQEAgLTY3MiwxMSArNjcyLDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QoUmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CiAg
ICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3Mgc3RydWN0dXJlCi0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworCisgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTEyNDIsNiArMTI0Miw0MSBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0VGFnQXNCb29sSW1tCiAgICAgb3IzMihUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWcpOwogfQogCitBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBk
ZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCit7CisgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisgICAg
bG9hZFB0cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOyAK
KyAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBkZXN0LCBUaW1lc0VpZ2h0KSwgZGVzdCk7
Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBl
SW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklE
KQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTgoVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSk7CisgICAgc3RvcmU4KFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgp
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZz
ZXQoKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlw
ZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQoreworICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUKKyAgICBsb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkpOworCisgICAgLy8gU3RvcmUgdGhl
IFR5cGVJbmZvIGlubGluZSBmbGFncworICAgIGxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
KyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBpbmRleGluZyB0
eXBlCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgc3RvcmU4KHNjcmF0Y2gs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAorICAgIGxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2gpOworICAgIHN0b3JlMzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTMyXzY0KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4
LDggKzEyOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNl
b2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE0OCw4ICsxNDcsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0IHByb3Rv
dHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9i
amVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJl
Z1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUs
IGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFp
bnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTU5LDcgKzE1Nyw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAgIC8vIExv
YWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVh
bCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBu
dWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdh
aW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDMpOwog
ICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwg
cmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkBA
IC0xODQsMTIgKzE4MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1
Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4
KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1
bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCBy
ZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJl
Z1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjMxLDggKzIyOSw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1Qw
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVj
dHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJl
Z1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwogICAgIGVt
aXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAg
ICAKQEAgLTI5Myw4ICsyOTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3Ro
aXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVl
UmVnaXN0ZXIpOwogICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZXR1
cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVSZWdpc3Rl
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVj
dCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1p
dEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAKICAgICAvLyBHcmFi
IHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihK
U1N0YWNrOjpSZXR1cm5QQywgcmVnVDEpOwpAQCAtMzMwLDcgKzMyNiw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
CisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICBUcnVzdGVkSW1tMzIobV92bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAg
IGlzSW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTM4Miw4ICszODAs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgSnVtcCBp
c0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3Qs
IGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBv
biB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
KyAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdU
MCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIEp1bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7
CkBAIC00MDUsOCArNDAzLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0
aW9uKgogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsK
IAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7Cisg
ICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSks
IHRhcmdldCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
KTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdh
c05vdEltbWVkaWF0ZSA9IGp1bXAoKTsKQEAgLTUwMSwxMCArNDk5LDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3BuYW1lcyhJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
YmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKSk7Ci0gICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLm9mZnNl
dCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAg
IGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQor
ICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBt
X2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChl
bWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5l
IHRoZSBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMg
Y2FsbCBkb2Vzbid0IHNlZW0gdG8gYmUgaG90LgpAQCAtNTU4LDcgKzU1NCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIHJlZ1QwKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsK
KyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKICAgICBjYWxsSGFz
UHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVz
cyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVk
U3RydWN0dXJlKSkpKSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KQEAg
LTU2OSw3ICs1NjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9u
CiAgICAgTGFiZWwgY2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgbG9hZDY0KEFkZHJlc3MocmVn
VDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1By
b3BlcnR5LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QyKSk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVt
aXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDEpOwogICAgIGNhbGxIYXNQcm9wZXJ0
eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMykpKTsKICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBi
cmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMpKS5saW5rVG8oY2hlY2tQcm90b3R5
cGUsIHRoaXMpOwpAQCAtNzM5LDEyICs3MzUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVs
bChJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDAp
OwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAg
d2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCBy
ZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJl
Z1QwLCByZWdUMiwgcmVnVDApOwpAQCAtNzcxLDEyICs3NjcsMTIgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
MSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwog
ICAgIEp1bXAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIo
Tm90RXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDApOwpAQCAtODQyLDEwICs4MzgsMTAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEpOwogCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93
Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICBsb2Fk
UHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1Qx
LCByZWdUMCwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDAsIHJlZ1QyKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsOSBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAg
ICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBm
YWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaDMyKE5vdEVxdWFsLCAK
KyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisg
ICAgICAgIFRydXN0ZWRJbW0zMih2bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogCiAgICAg
Ly8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2Yg
bG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJl
c3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QyKTsK
QEAgLTExMSw3ICsxMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0
aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUo
cmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdT
aGFwZU1hc2spLCByZWdUMik7CiAKQEAgLTIwOSw3ICsyMTEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRl
ciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5v
dFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2gzMihOb3RFcXVhbCwgCisgICAgICAgIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBUcnVz
dGVkSW1tMzIobV92bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgZW1pdE5ha2VkQ2Fs
bChDb2RlTG9jYXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1Ykdl
bmVyYXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywg
cmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yODAs
NyArMjg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0
IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJl
Z1QyLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwog
ICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtMzIxLDcgKzMyNSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVu
dCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKICAgICAKQEAgLTUxOCw3ICs1MjIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCiAgICAgaWYgKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygp
KSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QxLCBy
ZWdUMik7CiAgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJl
Z1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CiAgICAgfQogCkBAIC02OTgsNyArNzAyLDgg
QEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludAogewogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1QwKTsKICAgICBsb2FkUHRyKHN0cnVjdHVyZVNs
b3QsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSkpOworICAgIGVtaXRMb2Fk
U3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgcmVnVDIsIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFs
UHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTg3Niw3ICs4ODEsNyBAQCBKSVQ6
Okp1bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAgICAgICAgIHN0cnVjdHVyZS0+
YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoc3R1YkluZm8tPmFkZFdhdGNocG9pbnQobV9jb2RlQmxv
Y2spKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihv
YmplY3QpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBvayA9IGJyYW5jaFB0cihFcXVhbCwgQWRk
cmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgSnVtcCBvayA9IGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHNj
cmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1
cmUtPmlkKCkpKTsKICAgICAgICAgYnJlYWtwb2ludCgpOwogICAgICAgICBvay5saW5rKHRoaXMp
OwogI2VuZGlmCkBAIC04ODUsNyArODkwLDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJl
VHJhbnNpdGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0
KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKKyAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwog
fQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCogb2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0xMDI5LDcgKzEwMzQs
MTMgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIAogICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBz
Y3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsK
KyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
Y2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTEwOTksOCArMTExMCwxNCBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAjZW5kaWYKICAgICAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShi
YXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJl
Z1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTExNTIsNyArMTE2
OSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOworICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKGJhc2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5
cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkp
OwogICAgIApAQCAtMTIxOCw3ICsxMjM1LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIGVhcmx5U2Ny
YXRjaCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwgZWFybHlTY3JhdGNoLCBsYXRlU2Ny
YXRjaCk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2
ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50
VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAK
KyAgICAgICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lz
dGVySUQgc2NyYXRjaFJlZyk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0
ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpTVHlwZSk7CiAKICAgICAgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0
ZXIpOwpAQCAtMzkxLDkgKzM5MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYK
IAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1
cmUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIGRlc3RSZWcpCisgICAgeworICAgICAg
ICBsb2FkMzIoQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBk
ZXN0UmVnKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIodm0oKS0+aGVhcC5ibG9ja0Fs
bG9jYXRvcigpLnN1cGVyUmVnaW9uKCkuYmFzZSgpKSwgZGVzdFJlZyk7CisgICAgfQorCiAgICAg
QUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1
bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpT
VHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1
Y3R1cmUoYmFzZVJlZywgc2NyYXRjaFJlZyk7CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVx
dWFsLCBBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgpAQCAtNjYsNyArNjcsNyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29k
ZUJsCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sg
JiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClz
dHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0
ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hC
dWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIGlmIChjb21wYWN0KQpAQCAtOTQsMTAgKzk1LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0
cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0aGlzIGNv
ZGUsIHRoZSBvYmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBBc3NlcnQK
ICAgICAgICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgICAgIGppdC5icmVha3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAjZW5kaWYK
QEAgLTEwNiwxMCArMTA3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjaygKICAgICAKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihv
YmplY3QpLCBzY3JhdGNoR1BSKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKAotICAgICAgICBq
aXQuYnJhbmNoUHRyKAorICAgICAgICBqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+
aWQoKSkpKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApA
QCAtMjA2LDcgKzIwNywxMCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NT
dHViCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAKICAgICBT
dHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKQEAgLTI4Miw4ICsyODYsNyBAQCBzdGF0aWMg
Ym9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgICAgIAotICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOyAKLSAgICAgICAgc3R1YkppdC5sb2FkOChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spKSk7CiAgICAgICAgIApAQCAtNDY5
LDcgKzQ3MiwxMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAg
ICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCh2bSwgY29kZUJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdyb25nU3RydWN0ID0gc3R1Ykpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHdyb25nU3RydWN0ID0gc3R1YkppdC5icmFuY2gzMigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBUaGUgc3RyYXRlZ3kgd2UgdXNlIGZvciBzdHVicyBpcyBhcyBmb2xsb3dzOgogICAgICAg
ICAvLyAxKSBDYWxsIERGRyBoZWxwZXIgdGhhdCBjYWxscyB0aGUgZ2V0dGVyLgpAQCAtNjgyLDEw
ICs2ODgsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgICAgICBzdHVi
Sml0LnB1c2hUb1NhdmUoc2NyYXRjaEdQUik7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgYmFkU3RydWN0dXJlID0gc3R1YkppdC5icmFuY2hQdHIoCisgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYmFkU3RydWN0dXJlID0gc3R1YkppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgCiAjaWYgRU5B
QkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04MTEs
NyArODE3LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAg
ICAgIAogICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1Ykpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
c3R1YkppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIob2xkU3Ry
dWN0dXJlLT5pZCgpKSkpOwogICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygK
ICAgICAgICAgb2xkU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2Nr
KCksIHN0dWJJbmZvLCBzdHViSml0LCBmYWlsdXJlQ2FzZXMsCkBAIC04NjksNyArODc4LDcgQEAg
c3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhh
c1N0b3JhZ2UgPSB0cnVlOwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIERGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHViSml0LCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBiYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAg
ICAgc3R1YkppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKQEAgLTExODIs
MTAgKzExOTEsMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgICAgICAgICAgbmVl
ZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
c3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICAKICAgICAgICAgU3RydWN0
dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwpAQCAtMTMxMCwxMCArMTMxOSwxMCBAQCB2b2lk
IGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhCiAjZW5kaWYKICAgICAKICAgICBz
bG93UGF0aC5hcHBlbmQoCi0gICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBzdHVi
Sml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5k
KAogICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKQEAgLTEzODUsMTAgKzEzOTQsMTAgQEAgdm9p
ZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaAogICAgICAgICAgICAgUmVwYXRj
aEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1
Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVy
KSk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVz
ZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENv
bXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7
CiAjZWxzZQpAQCAtMTQxOSwxMCArMTQyOCwxMCBAQCB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNo
QnVmZmVyJiByZXBhdGNoCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAg
ICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oMCkpOwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJl
TGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDApKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE1Nzcy
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVy
SUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50
LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
dm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBl
bmQoYnJhbmNoMzIoTm90RXF1YWwsIAorICAgICAgICAgICAgICAgIEFkZHJlc3MoZHN0LCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
dm0uc3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7
Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNjcmF0
Y2gpOwogICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU3NzI0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCkBAIC0xODQsNyArMTg1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRMb2FkU3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9u
QXJnR1BSMiwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAg
ICAgICBqaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
QEAgLTEwMDIsOSArMTAwMyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJ
dGVyYXQKICAgICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQs
IEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxKTsKICAgICAKICAgICAvLyBQdWxsIG91dCB0aGUgYnV0dGVyZmx5IGZyb20gaXRl
cmF0ZWRPYmplY3QKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDIpOwotICAgIAotICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyKTsKICAgICAKICAgICBqaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVN
YXNrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDM4IEBAIG1hY3JvIHZh
bHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAgICBlbmQKIGVuZAogCittYWNybyBs
b2FkU3RydWN0dXJlKGNlbGwsIHN0cnVjdHVyZSkKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJl
V2l0aFNjcmF0Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBzY3JhdGNoCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3NjcmF0Y2hdLCBzY3Jh
dGNoCisgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1
Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZGkgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlLCA4XSwgc3RydWN0dXJlCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZUFuZENsb2Ji
ZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV92bVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFZNOjpoZWFwICsg
SGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxs
XSwgY2VsbAorICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAor
CittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gpCisgICAgbG9hZGIgU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBzY3Jh
dGNoCisgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKwor
ICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3N0cnVj
dHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2NlbGxd
CisKKyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3N0
cnVjdHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5cGVbY2Vs
bF0KKworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9zdHJ1Y3R1cmVJRFtzdHJ1Y3R1cmVdLCBzY3Jh
dGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorZW5k
CiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTMxOCwxMCArMzUw
LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5v
cFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxP
YmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBicG5l
cSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNDAyLDExICs0MzQsMTEgQEAg
bWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIs
IHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJ0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0
MApAQCAtNzMzLDggKzc2NSw3IEBAIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGJ0YnogSlNDZWxsOjpt
X2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKQEAg
LTc0NiwyNCArNzc3LDIzIEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigzLCB0MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNs
b3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKICAgICAKICAgICAjIFJlZ2lz
dGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQogICAgIG1vdmUgMSwgdDAKIC5v
cEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0Mgot
ICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0MgorICAgIGxvYWRTdHJ1Y3R1
cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGVbdDNdLCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQogICAgIGJ0
cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAKICAgICBtb3ZlIDAsIHQwCiAub3BJ
bnN0YW5jZW9mRG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAgICBkaXNwYXRj
aCg0KQogCkBAIC03ODMsMTcgKzgxMywxNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAg
IHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZpbmVk
Q2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJueiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjpt
X2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0K
ICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCi0gICAgY3BlcSBT
dHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQzCi0gICAgb3JxIFZhbHVlRmFsc2Us
IHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBjcGVxIFN0cnVjdHVyZTo6bV9n
bG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBzdG9y
ZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtODI2LDggKzg1Niw3
IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQy
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQogICAgIGJ0cW56IHQwLCB0YWdN
YXNrLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdU
eXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIs
IDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTg3OSwxNCArOTA4LDE1IEBAIG1hY3JvIGdldEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBj
YWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKICAgICAjIHdl
IHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MywgdDIsIHQx
KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJwbmVxIHQyLCB0MSwgLm9w
R2V0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAg
ICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAg
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAg
ICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKICAgICAgICAgICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAgIGxvYWRxIFtwcm9wZXJ0eVN0b3Jh
Z2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIFtjZnIsIHQxLCA4
XQpAQCAtOTEyLDcgKzk0Miw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0
MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEFycmF5TGVu
Z3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDMsIHQyLCB0MCkKICAgICBhcnJheVByb2ZpbGUodDIsIHQx
LCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKICAgICBi
dGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QXJyYXlMZW5ndGhTbG93CkBAIC05NDks
MTUgKzk3OSwxNiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiBtYWNybyBwdXRC
eUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQzKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCi0g
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2Ny
YXRjaCh0MCwgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJw
bmVxIHQyLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAg
ICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2Ny
YXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKKyAg
ICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikKICAgICAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHNjcmF0Y2gpCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
dDApCiAgICAgICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCkBA
IC05ODIsOSArMTAxMywxMCBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hl
Y2tzCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCisg
ICAgYnBuZXEgdDIsIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCB0MikKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCi0gICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxD
aGVja3ModDEsIHQzKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKICAgICBnZXRQ
cm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQwLApAQCAtOTk1LDE1ICsxMDI3LDE1IEBAIG1hY3Jv
IHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICAgICAgICAgIHdyaXRlQmFy
cmllcih0MSkKICAgICAgICAgICAgIHN0b3JlcSB0MSwgW3QzXQogICAgICAgICAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCi0gICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyh0MCwg
dDEsIHQyKQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1h
Y3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBub0Fk
ZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1t
YWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBz
dHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAg
IGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywg
c2NyYXRjaCkKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCkBA
IC0xMDEyLDcgKzEwNDQsOCBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1
cmUsCiAgICAgYnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVl
TnVsbCwgLmRvbmUKIC5sb29wOgogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90
b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJn
KHByb3RvQ2VsbCwgc2NyYXRjaDIpCisgICAgbW92ZSBzY3JhdGNoMiwgb2xkU3RydWN0dXJlCiAg
ICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRk
cCA4LCBzY3JhdGNoCiAgICAgYnFuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1
cmVdLCBWYWx1ZU51bGwsIC5sb29wCkBAIC0xMDM5LDcgKzEwNzIsNyBAQCBfbGxpbnRfb3BfZ2V0
X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlW
YWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRT
dHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9u
KDQsIHQzKQogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MykKQEAgLTExMjUsNyArMTE1OCw3IEBAIF9sbGludF9vcF9nZXRfYnlfcG5h
bWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVBuYW1l
U2xvdykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0s
IHQxCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCiAgICAgYnBuZXEgdDIsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QxXSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKQEAgLTExNjcsNyArMTIwMCw3IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVj
aywgc2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcFB1
dEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDEsIHQyLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig0LCB0MykKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDApCkBAIC0xMjc3LDggKzEzMTAsOCBAQCBtYWNybyBlcXVhbE51bGwo
Y2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRl
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgY2VsbEhhbmRsZXIo
dDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdl
dCkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBjZWxsSGFu
ZGxlcih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQog
CiAudGFyZ2V0OgpAQCAtMTQxMCw4ICsxNDQzLDcgQEAgX2xsaW50X29wX3N3aXRjaF9jaGFyOgog
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgdGFn
TWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MV0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCiAgICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QxXSwgMSwgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDFdLCB0MAogICAgIGJ0cHog
IHQwLCAub3BTd2l0Y2hPblJvcGUKQEAgLTE0NTUsOSArMTQ4Nyw5IEBAIG1hY3JvIGFycmF5UHJv
ZmlsZUZvckNhbGwoKQogICAgICAgICBuZWdwIHQzCiAgICAgICAgIGxvYWRxIFRoaXNBcmd1bWVu
dE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25l
Ci0gICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgICAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKICAgICAgICAgbG9hZHBGcm9tSW5zdHJ1
Y3Rpb24oNiwgdDEpCi0gICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVu
U3RydWN0dXJlW3QxXQorICAgICAgICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2Vl
blN0cnVjdHVyZVt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTUyMCw4ICsxNTUy
LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAgICAgYnRx
bnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90
T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNO
b3RPYmplY3Q6CkBAIC0xNTM2LDggKzE1NjcsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBl
LCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3Jl
cSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1NjcsNyArMTU5Nyw3IEBA
IF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MykK
ICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQzCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdp
dGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAg
IGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc1LDcgKzE2MDUs
NyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9v
cDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGwsIC5vcE5l
eHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgdDIKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0
aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xv
dwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3Rv
dHlwZUxvb3AKQEAgLTE4MDQsOCArMTgzNCw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgog
bWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwRnJv
bUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0
UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC00MDAsOCArNDAwLDggQEAgbWFjcm8gYWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3IsIHN0cnVj
dAogICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFthbGxvY2F0
b3JdCiAgICAgCiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAgICAgICBzdG9y
ZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVw
IDAsIEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCisgICAgICAgIHN0b3JlU3RydWN0dXJl
V2l0aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkKICAgICBlbmQKIGVuZAog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2Fs
bDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVv
ZihKU0NlbGwpID09IHNpemVvZih1aW50NjRfdCksIGpzY2VsbF9pc19laWdodF9ieXRlcyk7CiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNDZWxsKTsKIAogdm9pZCBK
U0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5j
bHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAi
SGVhcC5oIgorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgor
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1
ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCkBAIC05NCw3
ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGNsZWFyU3Ry
dWN0dXJlKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9CisgICAgdm9pZCBjbGVhclN0cnVjdHVy
ZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0KIAogICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFtZSgp
OwogCkBAIC0xMzUsMjAgKzEzNywyNiBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGZhc3RHZXRP
d25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlE
T2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X3N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0
cnVjdHVyZUlEKTsKICAgICB9CiAKLSAgICB2b2lkKiBzdHJ1Y3R1cmVBZGRyZXNzKCkKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGws
IG1fZmxhZ3MpOwogICAgIH0KLSAgICAgICAgCi0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0g
ICAgU3RydWN0dXJlKiB1bnZhbGlkYXRlZFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJl
LnVudmFsaWRhdGVkR2V0KCk7IH0KLSNlbmRpZgotICAgICAgICAKKworICAgIHN0YXRpYyBwdHJk
aWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNDZWxsLCBtX3R5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
aW5kZXhpbmdUeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX2luZGV4aW5nVHlwZSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IFR5
cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CiBwcm90
ZWN0ZWQ6CiAKQEAgLTE3MCw4ICsxNzgsMTIgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAotICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAgU3RydWN0dXJlSUQgbV9zdHJ1
Y3R1cmVJRDsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5n
VHlwZTsKKyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxhZ3M7CisgICAgdWludDhf
dCBtX3VudXNlZDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0MiwxMSBAQCBpbmxpbmUgSlNDZWxs
OjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUCiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpCitpbmxpbmUg
SlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IG1fc3RydWN0
dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkpCisgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkp
CiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQpAQCAtNTYsNyArNTks
NyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChtX3N0cnVjdHVyZUlEKTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRh
ZykKQEAgLTY0LDIzICs2NywzMSBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9u
KFZNJiB2CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgQVNTRVJUKHZtLmlzSW5pdGlh
bGl6aW5nT2JqZWN0KCkpOwogICAgIHZtLnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKDApOwot
ICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgaWYgKHN0cnVjdHVyZSkgeworI2VuZGlmCisgICAgICAg
IG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgIG1fdHlwZSA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICAgICAgbV9mbGFncyA9IHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICB9
CiAjZW5kaWYKLSAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZSh2bSwgdGhpcywgc3Ry
dWN0dXJlKTsKICAgICAvLyBWZXJ5IGZpcnN0IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZl
IGEgcmVhbCBzdHJ1Y3R1cmUuCi0gICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICF2bS5zdHJ1Y3R1
cmVTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZUlEIHx8ICF2bS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOworICAgIHJldHVybiBIZWFwOjpo
ZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fc3RydWN0dXJlSUQpOwogfQogCiBp
bmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKICAgICBNQVJLX0xPR19QQVJFTlQodmlzaXRvciwgY2VsbCk7CiAKLSAg
ICB2aXNpdG9yLmFwcGVuZCgmY2VsbC0+bV9zdHJ1Y3R1cmUpOworICAgIC8vIEZJWE1FOiBJdCdz
IHNpbGx5IGFuZCBzb21ld2hhdCBkYW5nZXJvdXMgdG8gaGF2ZSB0byBkbyB0aGlzIHRvIHNhdGlz
ZnkgU2xvdFZpc2l0b3IuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1
cmUoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTExNiwxNyArMTI3LDE3IEBAIGlubGluZSBi
b29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKIAogaW5saW5lIGJvb2wgSlNDZWxsOjpp
c09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT5pc09iamVjdCgpOwor
ICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNPYmplY3QoKTsKIH0KIAogaW5saW5lIGJvb2wgSlND
ZWxsOjppc1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOworICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0dl
dHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gR2V0dGVyU2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlND
ZWxsOjppc1Byb3h5KCkgY29uc3QKQEAgLTEzNiwxNyArMTQ3LDIxIEBAIGlubGluZSBib29sIEpT
Q2VsbDo6aXNQcm94eSgpIGNvbnN0CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNBUElWYWx1ZVdy
YXBwZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKKyAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3JhcHBlclR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpT
Q2VsbDo6c2V0U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkgPT0g
dGhpcy0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsK
LSAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBtX3N0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCkpOwotICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUt
PnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKLSAgICAgICAgfHwg
bV9zdHJ1Y3R1cmUuZ2V0KCkgPT0gc3RydWN0dXJlKTsKLSAgICBtX3N0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIHN0cnVjdHVyZSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0g
dGhpcy0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpKTsKKyAgICBBU1NFUlQoIXRoaXMtPnN0cnVj
dHVyZSgpCisgICAgICAgIHx8IHRoaXMtPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpCisgICAgICAgIHx8IEhlYXA6OmhlYXAodGhpcyktPnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlLT5pZCgpKSA9PSBzdHJ1Y3R1cmUpOworICAg
IHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHN0cnVjdHVyZSk7CisgICAgbV9zdHJ1Y3R1cmVJ
RCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBlSW5mbygp
LmlubGluZVR5cGVGbGFncygpOworICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCk7CisgICAgbV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOwog
fQogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGVGb3JEZXN0
cnVjdGlvbigpIGNvbnN0CkBAIC0xNTYsNyArMTcxLDcgQEAgaW5saW5lIGNvbnN0IE1ldGhvZFRh
YmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6
bWV0aG9kVGFibGUoKSBjb25zdAogewotICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUg
PSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkpCisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVj
dHVyZSA9IHN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
cm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKICAgICByZXR1
cm4gJmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMTU3
NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDcgQEAgaW5saW5lIGNvbnN0IENsYXNz
SW5mbyogSlNDZWxsOjpjbGFzc0luZgogewogICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3Io
dGhpcyktPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNs
YXNzSW5mbygpOwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgIHJldHVybiBtX3N0cnVj
dHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1f
c3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNlbmRpZgorICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+
Y2xhc3NJbmZvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAko
cmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtNzcsNiArNzcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJv
cGVydHlOYW1lQXJyYXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldo
ZW5MZW5ndGhJc05vdFplcm8pLCBpbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBt
X2xlbmd0aCk7IH0KQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CisKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgICAgICAgICAK
ICAgICAgICAgYm9vbCBpc1JvcGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTU3
NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNUeXBl
IHsKK2VudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgVW5zcGVjaWZpZWRUeXBlLAogICAgIFVu
ZGVmaW5lZFR5cGUsCiAgICAgQm9vbGVhblR5cGUsCkBAIC02NCw2ICs2NCw4IEBAIGVudW0gSlNU
eXBlIHsKICAgICBBY3RpdmF0aW9uT2JqZWN0VHlwZSwKIH07CiAKK0NPTVBJTEVfQVNTRVJUKHNp
emVvZihKU1R5cGUpID09IHNpemVvZih1aW50OF90KSwgc2l6ZW9mX2pzdHlwZV9pc19vbmVfYnl0
ZSk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
UHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCA5OwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDEwOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSA9IDEgPDwgMTE7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDEyOwogCiAgICAgY2xh
c3MgVHlwZUluZm8gewogICAgIHB1YmxpYzoKQEAgLTg0LDYgKzg1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGJvb2wgcHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcpOyB9CiAgICAgICAgIGJv
b2wgaGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZs
YWdzMihIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QpOyB9CiAgICAgICAgIGJvb2wgc3RydWN0
dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUhh
c1JhcmVEYXRhKTsgfQorICAgICAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlzSW1tb3J0YWwpOyB9CiAKICAgICAgICAg
c3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNldCgpCiAgICAgICAgIHsKQEAgLTk1LDYgKzk3LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5
cGVJbmZvLCBtX3R5cGUpOwogICAgICAgICB9CiAKKyAgICAgICAgdHlwZWRlZiB1aW50OF90IElu
bGluZVR5cGVGbGFnczsKKyAgICAgICAgSW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygp
IGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3
ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBERUNMQVJFX0lORk87
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJ
c0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludDMyX3Q+IEluZGV4VHJhaXRz
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgs
NyArMTM4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4pLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0yMDIsNiArMjAyLDkgQEAgcHVibGljOgogICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpOwogI2VuZGlmCiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
U3RydWN0dXJlSXNJbW1vcnRhbDsKKwogcHJpdmF0ZToKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwg
dW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgSlNDZWxs
KiwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlwZSwgMCksIGluZm8oKSk7CisgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhMZWFmVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBERUNMQVJFX0lORk87CkBAIC04NSw2ICs4NSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBSZWdFeHBLZXkga2V5KCkgeyByZXR1cm4gUmVnRXhwS2V5KG1f
ZmxhZ3MsIG1fcGF0dGVyblN0cmluZyk7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsK
KwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKICAgICBwcml2YXRlOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
biB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBP
UlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAkocmV2aXNpb24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1Nyw3IEBAIFN0cnVjdHVy
ZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmoKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3Ry
dWN0dXJlU3RydWN0dXJlLmdldCgpKQogICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIGds
b2JhbE9iamVjdCwgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0Pjo6TWF5QmVOdWxsKQogICAg
ICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIHByb3RvdHlwZSkKKyAgICAsIG1fc3RydWN0dXJlSUQo
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKICAgICAsIG1fY2xh
c3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlh
bGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCkBAIC0xODQsMTAg
KzE4NSwxMSBAQCBjb25zdCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTCiBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGwp
CiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywganNOdWxsKCkpCisgICAgLCBtX3N0cnVjdHVy
ZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCiAgICAgLCBt
X2NsYXNzSW5mbyhpbmZvKCkpCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRp
YWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90
eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCisgICAgLCBtX3R5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlz
SW1tb3J0YWwpCiAgICAgLCBtX2luZGV4aW5nVHlwZSgwKQogICAgICwgbV9pbmxpbmVDYXBhY2l0
eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCkBAIC0yMDYs
NiArMjA4LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgIDogSlNDZWxsKHZt
LCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhp
cywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5o
ZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpKQogICAgICwgbV9jbGFzc0lu
Zm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKQEAg
LTIyMyw2ICsyMjYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVj
CiAgICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1ZSkKICAgICAsIG1fc3RhdGljRnVuY3Rpb25SZWlm
aWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0aW9uUmVpZmllZCkKIHsKKyAgICBBU1NFUlQoIXBy
ZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CiAgICAgaWYgKHByZXZp
b3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgJiYgcHJldmlvdXMtPnJhcmVE
YXRhKCktPm5lZWRzQ2xvbmluZygpKQogICAgICAgICBjbG9uZVJhcmVEYXRhRnJvbSh2bSwgcHJl
dmlvdXMpOwogICAgIGVsc2UgaWYgKHByZXZpb3VzLT5wcmV2aW91c0lEKCkpCkBAIC0yMzMsNiAr
MjM3LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAg
ICAgbV9nbG9iYWxPYmplY3Quc2V0KHZtLCB0aGlzLCBwcmV2aW91cy0+bV9nbG9iYWxPYmplY3Qu
Z2V0KCkpOwogfQogCitTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKQoreworICAgIGlmICh0eXBlSW5m
bygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEhlYXA6Omhl
YXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5kZWFsbG9jYXRlSUQodGhpcywgbV9zdHJ1Y3R1
cmVJRCk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAg
ICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9u
QXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBA
IC05NSw2ICs5Nyw4IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHB1YmxpYzoKKyAgICBTdHJ1Y3R1
cmVJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlSUQ7IH0KKwogICAgIHN0YXRpYyB2
b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3Ry
dWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlP
ZmZzZXQmLCBQdXRQcm9wZXJ0eVNsb3Q6OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25v
d25Db250ZXh0KTsKQEAgLTMwMSw2ICszMDUsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisgICAg
c3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCk7CisgICAgfQorCiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBwcm90b3R5cGVPZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJvdG90eXBlKTsKQEAgLTQ3OSw2ICs0
ODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX25hbWVJblByZXZpb3Vz
OwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+IG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXM7CiAK
KyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOwogICAgIGNvbnN0IENsYXNzSW5mbyogbV9j
bGFzc0luZm87CiAKICAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFi
bGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHJldmlzaW9uIDE1NzcyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0
dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4p
LCBpbmZvKCkpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwog
CkBAIC02NCw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBoZWFkKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
SURUYWJsZS5oIgorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK1N0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgaWYgKCFtX2ZpcnN0RnJlZU9mZnNldCkgeworICAgICAgICBTdHJ1
Y3R1cmVPck9mZnNldCBuZXdFbnRyeTsKKyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3Ry
dWN0dXJlOworCisgICAgICAgIFN0cnVjdHVyZUlEIHJlc3VsdCA9IG1fdGFibGUuc2l6ZSgpOwor
ICAgICAgICBtX3RhYmxlLmFwcGVuZChuZXdFbnRyeSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgU3RydWN0dXJlSUQgcmVzdWx0ID0gbV9maXJzdEZyZWVPZmZzZXQ7Cisg
ICAgbV9maXJzdEZyZWVPZmZzZXQgPSBtX3RhYmxlW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7
CisgICAgbV90YWJsZVtyZXN1bHRdLnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQobV90YWJsZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJlID09IHN0cnVjdHVyZSk7CisgICAg
bV90YWJsZVtzdHJ1Y3R1cmVJRF0ub2Zmc2V0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9m
aXJzdEZyZWVPZmZzZXQgPSBzdHJ1Y3R1cmVJRDsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmVJ
RFRhYmxlOjpnZXQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCit7CisgICAgcmV0dXJuIG1fdGFi
bGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFN0cnVjdHVyZUlEVGFibGVfaAorI2RlZmluZSBTdHJ1Y3R1cmVJRFRhYmxlX2gKKwor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVj
dHVyZTsKKwordHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJRDsKKworY2xhc3MgU3RydWN0dXJl
SURUYWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1Ymxp
YzoKKyAgICBTdHJ1Y3R1cmVJRFRhYmxlKCkKKyAgICAgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgw
KQorICAgIHsKKyAgICAgICAgLy8gV2UgcHJlLWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28g
dGhhdCB0aGUgbnVsbCBTdHJ1Y3R1cmUKKyAgICAgICAgLy8gY2FuIHN0aWxsIGJlIHJlcHJlc2Vu
dGVkIGFzIHRoZSBTdHJ1Y3R1cmVJRCAnMCcuCisgICAgICAgIGFsbG9jYXRlSUQoMCk7CisgICAg
fQorCisgICAgdm9pZCoqIGJhc2UoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4o
Jm1fdGFibGUpOyB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGdldChTdHJ1
Y3R1cmVJRCk7CisgICAgdm9pZCBkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQp
OworICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRlSUQoU3RydWN0dXJlKik7CisKK3ByaXZhdGU6Cisg
ICAgdW5pb24gU3RydWN0dXJlT3JPZmZzZXQgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZTsKKyAgICAgICAgU3RydWN0dXJlSUQgb2Zmc2V0OworICAgIH07CisKKyAgICB1aW50MzJfdCBt
X2ZpcnN0RnJlZU9mZnNldDsKKyAgICBWZWN0b3I8U3RydWN0dXJlT3JPZmZzZXQ+IG1fdGFibGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN0cnVjdHVyZUlEVGFibGVf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShy
ZXZpc2lvbiAxNTc3MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNiArNDg3LDkgQEAgcHVibGljOgogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRTeW1ib2xUYWJsZShWTSYgdm0pCiAgICAg
ICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRTeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAkocmV2aXNp
b24gMTU3NzI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0
cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAg
ICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214923</attachid>
            <date>2013-10-22 20:44:52 -0700</date>
            <delta_ts>2013-10-25 12:31:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131022204437.patch</filename>
            <type>text/plain</type>
            <size>157769</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MCBA
QAorMjAxMy0xMC0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBm
cmVlIHVwIDMyIGJpdHMgb2Ygc3BhY2UgaW4gSlNDZWxsIGhlYWRlcnMsIHdoaWNoIHdlIGNhbiB1
c2UgZm9yIAorICAgICAgICBvdGhlciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBJbmRleGluZ1R5cGUs
IEpTVHlwZSwgSlNUeXBlSW5mbyB0eXBlIGZsYWdzLCBhbmQgCisgICAgICAgIGdhcmJhZ2UgY29s
bGVjdGlvbiBtZXRhZGF0YS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmJfcm0pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFN0cnVjdHVyZVB0cik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAg
ICAgICAqIGhlYXAvUmVnaW9uLmg6CisgICAgICAgICogaGVhcC9TdXBlclJlZ2lvbi5oOgorICAg
ICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6YmFzZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9v
YmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
bmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAo
SlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6
CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5o
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpn
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKIDIwMTMtMTAtMjIgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE1pbm9yIFZNKiAtPiBW
TSYgY2xlYW51cHMgaW4gSGFzaFRhYmxlIGFuZCBLZXl3b3Jkcy4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjk1LDYgKzY5NSw4IEBACiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElD
YWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
ICovOyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2RjQ2MjUxN0U5
NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJCTJBRDM1M0Q5
MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgxNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFEMzUzREExODE1QzEwQjAwNjFFODE3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFE
ODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4
Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBF
Q0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9
OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMw
MEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwpAQCAtMTkxMSw2ICsxOTEzLDggQEAK
IAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgx
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlv
blNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUw
MEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGli
OyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJ
NDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU5NSw2ICszNTk5LDggQEAKIAkJCQlBN0JEQUVD
MzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCUE3
QkRBRUM0MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAogCQkJCUE3
QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJCQkyQUQz
NTNENzE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFE
MzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MDY1LDYg
KzQwNzEsNyBAQAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1
QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RBMTgxNUMx
MEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4
QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlv
bnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTM4OCw2ICs1Mzk1LDcgQEAKIAkJCQkxNDdGMzlENDEw
N0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3
RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTJBRDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVy
UHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0Eg
LyogSlNQcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5
NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzU5LDYgKzM1OSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBk
YXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlh
bFJpZ2h0VmFsdWUpKTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
LmgJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24o
Y29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1
c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGlu
aXRpYWxSaWdodFZhbHVlKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRo
UGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
LmgJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjI4LDYgKzYyOCwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9
CiAKKyAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyNpZiBDUFUoWDg2KQorICAgICAgICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0
b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVnaXN0ZXJzOworICAgICAgICAvLyBlc3AuLmVkaSBhcmUg
bWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0ZXJzIQorICAgICAgICBpZiAoc3JjID49IDQpIHsKKyAg
ICAgICAgICAgIC8vIFBpY2sgYSB0ZW1wb3JhcnkgcmVnaXN0ZXIuCisgICAgICAgICAgICBSZWdp
c3RlcklEIHRlbXAgPSBnZXRVbnVzZWRSZWdpc3RlcihhZGRyZXNzKTsKKworICAgICAgICAgICAg
Ly8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgor
ICAgICAgICAgICAgc3dhcChzcmMsIHRlbXApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92
Yl9ybSh0ZW1wLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIHN3
YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlKTsKKyAgICB9CisKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRl
eCBhZGRyZXNzKQogICAgIHsKICNpZiBDUFUoWDg2KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNp
b24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNiArNTkyLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFi
ZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZxX2k2NHIoaW5pdGlhbFZhbHVlLm1fdmFsdWUsIGRlc3QpOworICAgICAgICByZXR1
cm4gRGF0YUxhYmVsUHRyKHRoaXMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBh
dGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQ
dHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJ
bW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRp
YWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIpOwpAQCAtNjA0LDYgKzYxMSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
MzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBk
YXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMw
NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9Q
X01PVl9FYkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CisKKyAg
ICB2b2lkIG1vdmJfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwgc3Jj
LCBiYXNlLCBvZmZzZXQpOworICAgIH0KICAgICAKICAgICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJ
RCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50
IHNjYWxlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRh
bCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0lORk87CiB9OwpAQCAt
NTQ1LDcgKzU0NSw3IEBAIHByaXZhdGU6CiAKIHByb3RlY3RlZDoKIAotICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6
OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEFycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMKIHB1YmxpYzoKICAgICBBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlR1BSLAotICAg
ICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0ZW1wR1BSLCBHUFJSZWcgc3RydWN0dXJl
R1BSKQorICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIsIEdQUlJlZyB0ZW1wR1BSLCBHUFJSZWcg
dGVtcDJHUFIsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAs
IG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2RlLT5hcnJheU1vZGUo
KSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BS
KQogICAgICAgICAsIG1fcHJvcGVydHlHUFIocHJvcGVydHlHUFIpCiAgICAgICAgICwgbV90ZW1w
R1BSKHRlbXBHUFIpCisgICAgICAgICwgbV90ZW1wMkdQUih0ZW1wMkdQUikKICAgICAgICAgLCBt
X3N0cnVjdHVyZUdQUihzdHJ1Y3R1cmVHUFIpCiAgICAgewogICAgICAgICBBU1NFUlQobV9vcCA9
PSBBcnJheWlmeSB8fCBtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpOwpAQCAtMTIxLDE3ICsx
MjIsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICAKICAgICAgICAgaWYgKG1fb3AgPT0gQXJyYXlp
ZnlUb1N0cnVjdHVyZSkgewogICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIGppdC0+ZW1pdExvYWRTdHJ1Y3R1cmUobV9iYXNlR1BSLCBtX3RlbXBHUFIsIG1fdGVt
cDJHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAg
ICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQs
IGppdC0+bV9qaXQuYnJhbmNoV2Vha1B0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG1fdGVt
cEdQUiwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFs
YXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxp
bmcgZG9lcyBub3Qgc2F2ZQogICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBp
dCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKICAg
ICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0
cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICBq
aXQtPmVtaXRMb2FkU3RydWN0dXJlKG1fYmFzZUdQUiwgbV9zdHJ1Y3R1cmVHUFIsIG1fdGVtcDJH
UFIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdl
IGhhdmUgdGhlIGtpbmQgb2YgYXJyYXkgc3RvcmFnZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCiAg
ICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBj
aGVjaywgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhlIApAQCAtMTUzLDYgKzE1MSw3IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0eUdQUjsKICAg
ICBHUFJSZWcgbV90ZW1wR1BSOworICAgIEdQUlJlZyBtX3RlbXAyR1BSOwogICAgIEdQUlJlZyBt
X3N0cnVjdHVyZUdQUjsKICAgICBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyIG1fYmFkUHJvcGVydHlK
dW1wOwogICAgIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXIgbV9iYWRJbmRleGluZ1R5cGVKdW1wOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDIxIEBAIHB1YmxpYzoKICAgICAgICAgYWRk
V2Vha1JlZmVyZW5jZSh3ZWFrUHRyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVj
dHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVm
ZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgSnVtcCBicmFuY2hTdHJ1Y3R1cmVQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmUtPmlkKCkpKTsKKyAgICB9CisKICAgICB2b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxv
Y2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpCiAgICAgewogICAgICAgICAvLyBPU1IgZW50cnkgaXMgbm90IGFsbG93ZWQg
aW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw5
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1ZVNv
dXJjZS5ncHIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlI
ZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gyKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gyLCBzY3JhdGNoMSwg
QXNzZW1ibHlIZWxwZXJzOjpUaW1lc0VpZ2h0KSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MSwxMiArMjcxLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9i
YWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3Qo
dGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlm
ICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsK
LSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRy
dXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI4NSw2ICsyODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5t
b3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAg
ICBlbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAg
ICAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBK
SVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIsIHJlc3VsdEdQUik7CiAgICAgfQpAQCAtMzM3LDE2ICszNDEsMjAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAg
ICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVy
bywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdH
UFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAgICAgICAg
IGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iob3Bl
cmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIGVtaXRM
b2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBi
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC0x
NTIxLDQxICsxNTI5LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVh
bGkKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBz
dHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTU5NSwyMSArMTU5OCwyMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgc3BlY3VsYXRpb25X
YXRjaHBvaW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxl
ZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAg
c3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjIyLDIxICsxNjI0LDIwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIs
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0x
NzAwLDIxICsxNzAxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amUKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAg
ICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQs
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hp
bGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogCkBAIC0xNzI3LDIxICsxNzI3LDIw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBzcGVjdWxhdGlv
bldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAg
ICAgfQogICAgIApAQCAtMTg1OCw2ICsxODU3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdE9yT3RoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpOwpAQCAtMTg2NiwzMyArMTg2NywzNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1
bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0
ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9u
IHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVy
ZSk7CisgICAgICAgIHNjcmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dFZhbGlkKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLQogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWVH
UFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApA
QCAtMjAxMSwzMyArMjAxNCw0MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JP
dGhlckJyCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZVVzZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcg
c3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKworICAgIGlmICghbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1
cmUpOworICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgfQogICAg
IAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZCgpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVV
c2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpaZXJvLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2
YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikp
KSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsK
QEAgLTM0NzQsNyArMzQ4NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFBy
aW1pdGl2ZSA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKQEAgLTM1MDEsMTAgKzM1MTcsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoMiA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAg
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
b3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM3MzEsNyArMzc0
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7
CiAgICAgICAgICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
LSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1t
UHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
Q2FzZXMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNj
cmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6
Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4NzMsMTEgKzM4ODksOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoVGVzdDY0KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1
ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0
aGlzVmFsdWVHUFIsIHRlbXBHUFIpOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlv
bjsKQEAgLTQxNjUsMTQgKzQxNzksMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtp
bmQsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
V2Vha1N0cnVjdHVyZSgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Cisg
ICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKworICAgICAgICAgICAgZW1p
dExvYWRTdHJ1Y3R1cmUoYmFzZS5ncHIoKSwgc3RydWN0dXJlLmdwcigpLCBzY3JhdGNoLmdwcigp
KTsgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25l
OwogICAgICAgICAgICAgCkBAIC00MjA3LDcgKzQyMjIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBub2Rl
LT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNP
Sy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtNDIyOSw3ICs0MjQ3LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNv
bW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9w
bGFuLCBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZSk7CiAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCiAgICAgICAg
IAogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKQEAgLTQyMzcsNyArNDI1Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VHUFIsIG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3Ry
dWN0dXJlLCBXcml0ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNzKTsKICNlbmRpZgogICAgICAgICAK
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9k
ZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAg
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIGJhc2VH
UFIsIHNjcmF0Y2hHUFIpOyAKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTQ0MDUsOCArNDQyNSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7
CiAKICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZScuCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7
Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwLCBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQzNSw4ICs0NDU3LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJh
bmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAKQEAg
LTQ0ODMsOCArNDUwNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2pp
dC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHZhbHVlLmdwcigpLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgCisgICAgICAg
ICAgICByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1
ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00NTIzLDggKzQ1NDksNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJh
bmRTcGVjdWxhdGlvbik7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwot
ICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHRlbXBHUFIg
PSB0ZW1wLmdwcigpOwogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3QgZG9uZUp1bXBzOwpAQCAtNDUzOCw4ICs0NTYyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7
CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkg
fHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlR1BS
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKFN0cmluZ1R5cGUpKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gU3RyaW5nVXNlKQogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFs
dWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5n
KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFs
bFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1Nzg0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NjYsOSArNzY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcnJheShOb2RlKiBubwogICAgIGNhc2UgQXJyYXk6OkFycmF5U3RvcmFnZToKICAgICBjYXNl
IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZVJlZywgdGVt
cEdQUiwgdGVtcDIuZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQ
Uik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCAwLApAQCAtNzg4LDggKzc4
OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICBSRUxF
QVNFX0FTU0VSVChleHBlY3RlZENsYXNzSW5mbyk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7Ci0gICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXAuZ3ByKCkpOwor
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNl
UmVnLCB0ZW1wLmdwcigpLCB0ZW1wMi5ncHIoKSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUs
CiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTgwNSw4ICs4MDUsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZQogICAgIEFTU0VSVChub2RlLT5hcnJheU1v
ZGUoKS5kb2VzQ29udmVyc2lvbigpKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0cnVj
dHVyZTsKICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgR1BSUmVnIHRlbXAy
R1BSID0gdGVtcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJS
ZWc7CiAgICAgCiAgICAgaWYgKG5vZGUtPm9wKCkgIT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewpA
QCAtODE5LDEzICs4MjEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSog
bm9kZQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICAKICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7Ci0gICAgICAgIHNsb3dQYXRo
LmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9q
aXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgIG5vZGUtPnN0cnVj
dHVyZSgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlUmVn
LCBzdHJ1Y3R1cmVHUFIsIHRlbXBHUFIpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDgo
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKQEAgLTgzNCw3ICs4MzUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlCiAgICAgfQogICAgIAog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKGFkb3B0UHRyKG5ldyBBcnJheWlmeVNsb3dQYXRoR2Vu
ZXJhdG9yKAotICAgICAgICBzbG93UGF0aCwgdGhpcywgbm9kZSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHRlbXBHUFIsIHN0cnVjdHVyZUdQUikpKTsKKyAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG5v
ZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB0ZW1wR1BSLCB0ZW1wMkdQUiwgc3RydWN0dXJlR1BS
KSkpOwogICAgIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMTM1OSwyNCAr
MTM2MCwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCAKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAg
ICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVj
dCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwK
LSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0
dXJlLmdwcigpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAg
ICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUob3AxR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkp
OwogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+
U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAg
ICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5j
aGlsZDEoKSwKQEAgLTEzOTEsNyArMTM5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZU9iamUKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUob3AyR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwog
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3Bl
Y09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAg
ICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwKQEAgLTI4NDQsMTAgKzI4NDYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsRm9yRgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBH
UFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZykKK3ZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQ
UlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcp
CiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocHJv
dG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChzY3Jh
dGNoUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVnIHdpdGggdGhlIHZh
bHVlIGJlaW5nIGNoZWNrZWQuCkBAIC0yODU1LDcgKzI4NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgCiAgICAgLy8gV2FsayB1cCB0aGUgcHJvdG90
eXBlIGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmluZyB0byBwcm90
b3R5cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0KTsKLSAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShz
Y3JhdGNoUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yODk0LDkgKzI4OTYsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKQEAgLTI5MTMs
NyArMjkxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAg
ICAgICAgCiAgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIAotICAgICAgICBj
b21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBz
Y3JhdGNoUmVnKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFs
dWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgICAgICAK
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTI5MjksMTIgKzI5MzMsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwog
ICAgIAogICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBwcm90
b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3Jh
dGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAg
IAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5
cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUs
IHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVnLCBub2RlLCBEYXRh
Rm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ2NTAsMTEgKzQ2NTYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAK
LSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKTsKICAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVj
dHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCAKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlQ2VsbE9mZnNldCgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgCkBAIC00Njc5LDEwICs0Njg3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVk
aWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
ZWVkQ2FsbCA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBuZWVkQ2FsbC5saW5rKCZt
X2ppdCk7CkBAIC00ODgyLDEwICs0ODkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZU9iamVjdChFZGcKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVk
Z2UpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwogICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
RmluYWxPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDg5NSw5ICs0OTAzLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJh
bmQuZ3ByKCk7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoZ3By
LCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjRmluYWxPYmplY3Qs
IG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCkBA
IC00OTE4LDEwICs0OTI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVz
dDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncyhn
cHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVj
T3RoZXIpKSB7CkBAIC00OTQxLDEwICs0OTUwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0KICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIs
IHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2Vs
bC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwg
U3BlY090aGVyKSkgewpAQCAtNDk2NCwxMCArNDk3MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCks
IGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVn
IHN0b3JhZ2UpCkBAIC01MDIwLDcgKzUwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09i
amVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7Ci0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0
Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShl
ZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRn
ZSBlZGdlKQpAQCAtNTA0NywxNSArNTA1NiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVTdHJpbmdPclN0CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5n
IHwgU3BlY1N0cmluZ09iamVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7Ci0gICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhn
cHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAK
KyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUo
ZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1
cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpKTsKICAgICAKICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgCkBAIC01MzIw
LDEwICs1MzI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUK
ICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAg
CiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRH
UFIoKSwgdGVtcEdQUik7CkBAIC01NjIwLDEwICs1NjI2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJh
bmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxv
YWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEt
PmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hTdHJpbmdPblN0cmlu
ZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTczMyw3ICs3MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgbm9u
U3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0g
ICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVn
LCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZyk7CisgICAg
dm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBH
UFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZywgR1BSUmVnIHNj
cmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICAKICAg
ICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3MpCkBAIC0yMDYyLDYgKzIw
NjIsNzggQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAg
IH0KKworICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBk
ZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBkZXN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaEdQUiwgZGVzdEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBkZXN0R1BSKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9p
ZCBlbWl0TG9hZFN0cnVjdHVyZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIGJhc2VHUFIsIEdQ
UlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIGppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgZGVzdEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKGppdC52bSgpLT5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hHUFIsIGRlc3RHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdEdQUik7CisgICAgfQorCisgICAgdm9pZCBlbWl0U3Rv
cmVTdHJ1Y3R1cmUoVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAg
IHsKKyAgICAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxj
b25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1ZSk7CisgICAgICAgIG1faml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIH0KKworICAg
IHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0
dXJlLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnKQorICAgIHsKKyAgICAgICAgZW1pdFN0b3JlU3Ry
dWN0dXJlV2l0aFR5cGVJbmZvKG1faml0LCBzdHJ1Y3R1cmUsIGRlc3RHUFIpOworICAgIH0KKwor
ICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKEdQUlJlZyBzdHJ1Y3R1cmVH
UFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIC8v
IFN0b3JlIHRoZSB0eXBlIGluZm8gZmxhZ3MKKyAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTgoc2NyYXRjaEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgSlNUeXBlCisgICAgICAgIG1faml0LmxvYWQ4
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTgoc2NyYXRj
aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBpbmRleGluZyB0eXBlCisgICAg
ICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2pp
dC5zdG9yZTgoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlND
ZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBTdHJ1
Y3R1cmVJRAorICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmUoc3RydWN0dXJlR1BSLCBkZXN0R1BS
LCBzY3JhdGNoR1BSKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oQ0NhbGxIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0dXJl
LCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJl
UHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwor
ICAgICAgICAvLyBXZSBoYXZlIHRvIGNhc3QgdG8gc2lnbmVkIGJlY2F1c2Ugc3RvcmU4IGdldHMg
bWFkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBzaWduZWQgY2hhciByYW5nZS4KKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZv
KCkudHlwZSgpKSA8PSAyNTUpOworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkgPD0gMjU1KTsKKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPmluZGV4aW5n
VHlwZSgpKSA8PSAyNTUpOworCisgICAgICAgIGppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDhfdD4oc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkpLCAKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpKTsKKyAgICAgICAgaml0LnN0b3JlOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50OF90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpKSwgCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSkpOworICAgICAgICBqaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDxpbnQ4X3Q+KHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkpKSwgCisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSk7CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZShqaXQsIHN0cnVjdHVyZSwgZGVzdCk7
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlKENDYWxsSGVscGVy
cyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgR1BSUmVnIGRlc3RHUFIpCisgICAgewor
ICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0
IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgaml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRl
c3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgIH0KKworICAgIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BSLCBH
UFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworICAgIH0KICAgICAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGEgY2VsbCBvZiBhIHNwZWNpZmlj
IHNpemUuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+IC8vIFN0cnVjdHVy
ZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCkBAIC0yMDc3LDcgKzIxNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGFsbG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgp
KSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgotICAg
ICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lmaWMgc2l6
ZS4KQEAgLTMwMjksOCArMzEwMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamUKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9j
dXJyZW50Tm9kZS0+Y29kZU9yaWdpbiktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSkpIHsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNW
YWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxvY2F0aW9uLCBUcnVzdGVkSW1t
UHRyKHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVj
dHVyZUxvY2F0aW9uLCBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKTsKICAgICB9CiAgICAgbV9qaXQu
YWRkTGF6aWx5KAogICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnQoTm90U3RyaW5nT2JqZWN0
KSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAko
cmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxv
Y2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWFrQmxvY2s7
CiAvLyBzaG9ydCBwZXJpb2RzIG9mIHRpbWUgYW5kIHRoZW4gZnJlZWluZyB0aGVtIG9uIGEgc2Vj
b25kYXJ5IHRocmVhZC4KIAogY2xhc3MgQmxvY2tBbGxvY2F0b3IgeworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgQmxvY2tBbGxvY2F0b3IoKTsK
ICAgICB+QmxvY2tBbGxvY2F0b3IoKTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGUoVCopOwogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiB2b2lkIGRlYWxsb2NhdGVDdXN0b21TaXplKFQqKTsKIAorICAgIFN1cGVyUmVn
aW9uJiBzdXBlclJlZ2lvbigpIHsgcmV0dXJuIG1fc3VwZXJSZWdpb247IH0KKwogcHJpdmF0ZToK
ICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxh
dGl2ZSk7CiAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24g
MTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikK
ICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBS
RUxFQVNFX0FTU0VSVChjZWxsKTtcCi0gICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0
ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRl
ZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVy
ZSgpKTsgXAorICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUo
KSA9PSBjZWxsLT5zdHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3
aGlsZSAoMCkKIAogI2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xh
c3NJbmZvKSBkbyB7XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV3Jp
dGVCYXJyaWVyU3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAt
MTg2LDYgKzE4Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBp
c0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFsRGVwdGg7IH0KIAorICAgICAg
ICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKKyAgICAgICAgU3RydWN0dXJlSURU
YWJsZSYgc3RydWN0dXJlSURUYWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENvcGllZEJsb2NrOwpAQCAtMjM2LDcgKzI0MCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyQ29sbGVjdCgpOwogCiAgICAgICAgIEpTU3Rh
Y2smIHN0YWNrKCk7Ci0gICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwog
ICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNyZW1lbnREZWZlcnJh
bERlcHRoKCk7CiAgICAgICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwpAQCAtMjU2
LDYgKzI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSGVhcE9wZXJh
dGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yIG1fYmxv
Y2tBbGxvY2F0b3I7CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxl
OwogICAgICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNwYWNlOwogICAgICAgICBDb3BpZWRTcGFj
ZSBtX3N0b3JhZ2VTcGFjZTsKICAgICAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlC
dWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMjAgKzIyMywyMiBAQCBp
bmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRT
cGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2UucHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAg
ICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNb
aV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5pbXByZWNpc2VBbGxv
Y2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVj
dG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0g
ICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQotCiAgICAgbV9ub3JtYWxTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25vcm1hbERlc3RydWN0
b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JF
YWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VD
b3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnBy
ZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1faW1tb3J0YWxTdHJ1
Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1
cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgJKHJldmlzaW9u
IDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAKICNkZWZpbmUgSEVBUF9NRU1PUllfSUQgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0zKSkKIAotI2RlZmluZSBF
TkFCTEVfU1VQRVJfUkVHSU9OIDAKKyNkZWZpbmUgRU5BQkxFX1NVUEVSX1JFR0lPTiAxCiAKICNp
Zm5kZWYgRU5BQkxFX1NVUEVSX1JFR0lPTgogI2lmIFVTRShKU1ZBTFVFNjQpICYmICFDUFUoQVJN
NjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHJldmlz
aW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDEwICszNSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IFZNOwogCiBjbGFzcyBTdXBlclJlZ2lvbiA6IHB1YmxpYyBXVEY6Ok1ldGFBbGxvY2F0b3Igewor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgU3Vw
ZXJSZWdpb24oKTsKICAgICB2aXJ0dWFsIH5TdXBlclJlZ2lvbigpOwogCisgICAgdm9pZCogYmFz
ZSgpIHsgcmV0dXJuIG1fcmVzZXJ2YXRpb25CYXNlOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQqIGFsbG9jYXRlTmV3U3BhY2Uoc2l6ZV90JikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVn
aXN0ZXJJRCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBp
bmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90T2Jq
ZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIEp1bXAgYWRkU3RydWN0
dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0
aW9uQ2hlY2soSlNDZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlz
dCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpAQCAtMzc2LDYgKzM3NiwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2Rl
IHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCisgICAgICAgIHZvaWQgZW1pdExvYWRT
dHJ1Y3R1cmUoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKTsKKyAgICAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVn
aXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsK
KyAgICAgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0
ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKwogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlSW50KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTc4NDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bj
b2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwog
ICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAg
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDAsIHJl
Z1QxKTsKICAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QwLCBpbnN0cnVjdGlvbls2XS51LmFycmF5
UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBkb25l
LmxpbmsodGhpcyk7CiAgICAgICAgIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFn
TWFza1JlZ2lzdGVyKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihleHBlY3RlZFN0cnVjdHVyZS0+aWQoKSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFp
bigpKSwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05MCwxMCArOTAsMTAgQEAgdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpmaW5hbGl6
ZShMaW5rQnVmZgogCiB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVj
a3MoTWFjcm9Bc3NlbWJsZXImIGppdCwgR1BSUmVnIGJ1dHRlcmZseSkKIHsKLSAgICBtX3N0cnVj
dHVyZUNoZWNrID0gaml0LnBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKKyAgICBtX3N0cnVj
dHVyZUNoZWNrID0gaml0LnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1f
YmFzZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICBt
X3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
KyAgICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkp
OwogICAgIAogICAgIG1fcHJvcGVydHlTdG9yYWdlTG9hZCA9IGppdC5jb252ZXJ0aWJsZUxvYWRQ
dHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCks
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIGJ1dHRlcmZseSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcg
KzgwLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihtX3ZtLT5zdHJpbmdTdHJ1Y3R1
cmUtPmlkKCkpKSk7CiAgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMigxKSkpOwogICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nVmFsdWVPZmZzZXQoKSksIGRzdCk7CiAg
ICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFRlc3QzMihaZXJvLCBkc3QpKTsKQEAgLTU1MSw3ICs1
NTEsNyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAKIEFMV0FZ
U19JTkxJTkUgSklUOjpKdW1wIEpJVDo6Y2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCByZWcsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7
CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAtNTk5LDkg
KzU5OSw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8KICAgICBq
dW1wLmxpbmtUbyhtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXRdLCB0
aGlzKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90T2Jq
ZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0gICAgcmV0
dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4g
YnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKQEAgLTY3MiwxMSArNjcyLDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QoUmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CiAg
ICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3Mgc3RydWN0dXJlCi0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworCisgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTEyNDIsNiArMTI0Miw0MSBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0VGFnQXNCb29sSW1tCiAgICAgb3IzMihUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWcpOwogfQogCitBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBk
ZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCit7CisgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisgICAg
bG9hZFB0cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOyAK
KyAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNoLCBkZXN0LCBUaW1lc0VpZ2h0KSwgZGVzdCk7
Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBl
SW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklE
KQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworICAgIHN0b3JlOChUcnVzdGVkSW1t
MzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTgoVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSk7CisgICAgc3RvcmU4KFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgp
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZz
ZXQoKSkpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlw
ZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQoreworICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUKKyAgICBsb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkpOworCisgICAgLy8gU3RvcmUgdGhl
IFR5cGVJbmZvIGlubGluZSBmbGFncworICAgIGxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
KyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBpbmRleGluZyB0
eXBlCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgc3RvcmU4KHNjcmF0Y2gs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAorICAgIGxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2gpOworICAgIHN0b3JlMzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTMyXzY0KQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5
LDggKzEyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNl
b2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE0OSw4ICsxNDgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0IHByb3Rv
dHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9i
amVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJl
Z1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUs
IGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFp
bnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDcgKzE1OCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAgIC8vIExv
YWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVh
bCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBu
dWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdh
aW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDMpOwog
ICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwg
cmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkBA
IC0xODUsMTIgKzE4MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1
Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4
KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1
bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCBy
ZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJl
Z1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjMyLDggKzIzMCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVl
LCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1Qw
KTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVj
dHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJl
Z1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwogICAgIGVt
aXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAg
ICAKQEAgLTI5NCw4ICsyOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3Ro
aXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVl
UmVnaXN0ZXIpOwogICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZXR1
cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVSZWdpc3Rl
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVj
dCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1p
dEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAKICAgICAvLyBHcmFi
IHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihK
U1N0YWNrOjpSZXR1cm5QQywgcmVnVDEpOwpAQCAtMzMxLDcgKzMyNyw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
CisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICBUcnVzdGVkSW1tMzIobV92bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAg
IGlzSW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTM4Myw4ICszODEs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgSnVtcCBp
c0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3Qs
IGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBv
biB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
KyAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdU
MCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIEp1bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7
CkBAIC00MDYsOCArNDA0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0
aW9uKgogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsK
IAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7Cisg
ICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSks
IHRhcmdldCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1Qw
KTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdh
c05vdEltbWVkaWF0ZSA9IGp1bXAoKTsKQEAgLTUwMiwxMCArNTAwLDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3BuYW1lcyhJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
YmFzZSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
YmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKSk7Ci0gICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLm9mZnNl
dCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAg
IGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQor
ICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBt
X2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChl
bWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5l
IHRoZSBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMg
Y2FsbCBkb2Vzbid0IHNlZW0gdG8gYmUgaG90LgpAQCAtNTU5LDcgKzU1NSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGJhc2UsIHJlZ1QwKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsK
KyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKICAgICBjYWxsSGFz
UHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVz
cyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVk
U3RydWN0dXJlKSkpKSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KQEAg
LTU3MCw3ICs1NjYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9u
CiAgICAgTGFiZWwgY2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgbG9hZDY0KEFkZHJlc3MocmVn
VDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1By
b3BlcnR5LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QyKSk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVt
aXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDEpOwogICAgIGNhbGxIYXNQcm9wZXJ0
eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMykpKTsKICAg
ICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBi
cmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMpKS5saW5rVG8oY2hlY2tQcm90b3R5
cGUsIHRoaXMpOwpAQCAtNzQ4LDEyICs3NDQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVs
bChJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDAp
OwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAg
d2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCBy
ZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJl
Z1QwLCByZWdUMiwgcmVnVDApOwpAQCAtNzgwLDEyICs3NzYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
MSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwog
ICAgIEp1bXAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIo
Tm90RXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDApOwpAQCAtODUxLDEwICs4NDcsMTAgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEpOwogCiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93
Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICBsb2Fk
UHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1Qx
LCByZWdUMCwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDAsIHJlZ1QyKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NyArNTYsOSBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAg
ICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBm
YWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaDMyKE5vdEVxdWFsLCAK
KyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisg
ICAgICAgIFRydXN0ZWRJbW0zMih2bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogCiAgICAg
Ly8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2Yg
bG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJl
c3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QyKTsK
QEAgLTExMSw3ICsxMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0
aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUo
cmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdT
aGFwZU1hc2spLCByZWdUMik7CiAKQEAgLTIwOSw3ICsyMTEsOSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRl
ciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsK
ICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5v
dFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2gzMihOb3RFcXVhbCwgCisgICAgICAgIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBUcnVz
dGVkSW1tMzIobV92bS0+c3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgZW1pdE5ha2VkQ2Fs
bChDb2RlTG9jYXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1Ykdl
bmVyYXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywg
cmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yODAs
NyArMjg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0
IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJl
Z1QyLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwog
ICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtMzIxLDcgKzMyNSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVu
dCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKICAgICAKQEAgLTUxOCw3ICs1MjIsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCiAgICAgaWYgKCppZGVu
dCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygp
KSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QxLCBy
ZWdUMik7CiAgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJl
Z1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CiAgICAgfQogCkBAIC02OTgsNyArNzAyLDgg
QEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludAogewogICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1QwKTsKICAgICBsb2FkUHRyKHN0cnVjdHVyZVNs
b3QsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSkpOworICAgIGVtaXRMb2Fk
U3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgcmVnVDIsIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFs
UHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTg3Niw3ICs4ODEsNyBAQCBKSVQ6
Okp1bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAgICAgICAgIHN0cnVjdHVyZS0+
YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoc3R1YkluZm8tPmFkZFdhdGNocG9pbnQobV9jb2RlQmxv
Y2spKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihv
YmplY3QpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBvayA9IGJyYW5jaFB0cihFcXVhbCwgQWRk
cmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgSnVtcCBvayA9IGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHNj
cmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1
cmUtPmlkKCkpKTsKICAgICAgICAgYnJlYWtwb2ludCgpOwogICAgICAgICBvay5saW5rKHRoaXMp
OwogI2VuZGlmCkBAIC04ODUsNyArODkwLDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJl
VHJhbnNpdGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0
KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KTsKKyAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwog
fQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCogb2JqZWN0
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKdW1w
TGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0xMDI5LDcgKzEwMzQs
MTMgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIAogICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBz
Y3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsK
KyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
Y2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIo
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTEwOTksOCArMTExMCwxNCBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAjZW5kaWYKICAgICAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKworI2lmIFVTRShKU1ZBTFVF
MzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShi
YXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJl
Z1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJh
bmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTExNTIsNyArMTE2
OSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAg
ICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOworICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKGJhc2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBw
YXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5
cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkp
OwogICAgIApAQCAtMTIxOCw3ICsxMjM1LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIGVhcmx5U2Ny
YXRjaCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwgZWFybHlTY3JhdGNoLCBsYXRlU2Ny
YXRjaCk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2
ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50
VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAK
KyAgICAgICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lz
dGVySUQgc2NyYXRjaFJlZyk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0
ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpTVHlwZSk7CiAKICAgICAgICAg
dm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0
ZXIpOwpAQCAtMzkxLDkgKzM5MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYK
IAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1
cmUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIGRlc3RSZWcpCisgICAgeworICAgICAg
ICBsb2FkMzIoQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBk
ZXN0UmVnKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW1QdHIodm0oKS0+aGVhcC5ibG9ja0Fs
bG9jYXRvcigpLnN1cGVyUmVnaW9uKCkuYmFzZSgpKSwgZGVzdFJlZyk7CisgICAgfQorCiAgICAg
QUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1
bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpT
VHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1
Y3R1cmUoYmFzZVJlZywgc2NyYXRjaFJlZyk7CiAgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVx
dWFsLCBBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJv
dXRpbmUuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgpAQCAtNjYsNyArNjcsNyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29k
ZUJsCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sg
JiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClz
dHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0
ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCks
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hC
dWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIGlmIChjb21wYWN0KQpAQCAtOTQsMTAgKzk1LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0
cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0aGlzIGNv
ZGUsIHRoZSBvYmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBBc3NlcnQK
ICAgICAgICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgICAgIGppdC5icmVha3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAjZW5kaWYK
QEAgLTEwNiwxMCArMTA3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjaygKICAgICAKICAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihv
YmplY3QpLCBzY3JhdGNoR1BSKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKAotICAgICAgICBq
aXQuYnJhbmNoUHRyKAorICAgICAgICBqaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+
aWQoKSkpKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApA
QCAtMjA2LDcgKzIwNywxMCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NT
dHViCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoMzIoCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAKICAgICBT
dHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKQEAgLTI4Miw4ICsyODYsNyBAQCBzdGF0aWMg
Ym9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAgIAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgICAgIAotICAgICAgICBzdHVi
Sml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOyAKLSAgICAgICAgc3R1YkppdC5sb2FkOChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0
Y2hHUFIpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spKSk7CiAgICAgICAgIApAQCAtNDY5
LDcgKzQ3MiwxMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAg
ICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCh2bSwgY29kZUJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdyb25nU3RydWN0ID0gc3R1Ykpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHdyb25nU3RydWN0ID0gc3R1YkppdC5icmFuY2gzMigKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBUaGUgc3RyYXRlZ3kgd2UgdXNlIGZvciBzdHVicyBpcyBhcyBmb2xsb3dzOgogICAgICAg
ICAvLyAxKSBDYWxsIERGRyBoZWxwZXIgdGhhdCBjYWxscyB0aGUgZ2V0dGVyLgpAQCAtNjgyLDEw
ICs2ODgsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogICAgICAgICBzdHVi
Sml0LnB1c2hUb1NhdmUoc2NyYXRjaEdQUik7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgYmFkU3RydWN0dXJlID0gc3R1YkppdC5icmFuY2hQdHIoCisgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYmFkU3RydWN0dXJlID0gc3R1YkppdC5icmFuY2gzMigKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgCiAjaWYgRU5B
QkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04MTEs
NyArODE3LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAg
ICAgIAogICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1Ykpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
c3R1YkppdC5icmFuY2gzMigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIob2xkU3Ry
dWN0dXJlLT5pZCgpKSkpOwogICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygK
ICAgICAgICAgb2xkU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2Nr
KCksIHN0dWJJbmZvLCBzdHViSml0LCBmYWlsdXJlQ2FzZXMsCkBAIC04NjksNyArODc4LDcgQEAg
c3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhh
c1N0b3JhZ2UgPSB0cnVlOwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIERGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHViSml0LCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBiYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAg
ICAgc3R1YkppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0
b3JhZ2Uoc2xvdC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKQEAgLTExODIs
MTAgKzExOTEsMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgICAgICAgICAgbmVl
ZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
c3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICAKICAgICAgICAgU3RydWN0
dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgpOwpAQCAtMTMxMCwxMCArMTMxOSwxMCBAQCB2b2lk
IGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhCiAjZW5kaWYKICAgICAKICAgICBz
bG93UGF0aC5hcHBlbmQoCi0gICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBzdHVi
Sml0LmJyYW5jaDMyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5k
KAogICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKQEAgLTEzODUsMTAgKzEzOTQsMTAgQEAgdm9p
ZCByZXNldEdldEJ5SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaAogICAgICAgICAgICAgUmVwYXRj
aEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1
Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1Yklu
Zm8ucGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVy
KSk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDApKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVz
ZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigwKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENv
bXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7
CiAjZWxzZQpAQCAtMTQxOSwxMCArMTQyOCwxMCBAQCB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNo
QnVmZmVyJiByZXBhdGNoCiAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAg
ICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oMCkpOwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJl
TGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDApKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRj
aC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE1Nzg0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02NSwxMyArNjUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVy
SUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50
LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
dm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBl
bmQoYnJhbmNoMzIoTm90RXF1YWwsIAorICAgICAgICAgICAgICAgIEFkZHJlc3MoZHN0LCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
dm0uc3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7
Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNjcmF0
Y2gpOwogICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
Y2xhc3NJbmZvKSkpOwogICAgICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU3ODQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCkBAIC0xODQsNyArMTg1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRMb2FkU3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9u
QXJnR1BSMiwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAg
ICAgICBqaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
QEAgLTEwMDIsOSArMTAwMyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJ
dGVyYXQKICAgICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQs
IEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxKTsKICAgICAKICAgICAvLyBQdWxsIG91dCB0aGUgYnV0dGVyZmx5IGZyb20gaXRl
cmF0ZWRPYmplY3QKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDIpOwotICAgIAotICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyKTsKICAgICAKICAgICBqaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVN
YXNrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNiArMTkzLDM4IEBAIG1hY3JvIHZh
bHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAgICBlbmQKIGVuZAogCittYWNybyBs
b2FkU3RydWN0dXJlKGNlbGwsIHN0cnVjdHVyZSkKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJl
V2l0aFNjcmF0Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBzY3JhdGNoCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3NjcmF0Y2hdLCBzY3Jh
dGNoCisgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1
Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZGkgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlLCA4XSwgc3RydWN0dXJlCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZUFuZENsb2Ji
ZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV92bVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFZNOjpoZWFwICsg
SGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxs
XSwgY2VsbAorICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAor
CittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gpCisgICAgbG9hZGIgU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBzY3Jh
dGNoCisgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKwor
ICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3N0cnVj
dHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2NlbGxd
CisKKyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3N0
cnVjdHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5cGVbY2Vs
bF0KKworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9zdHJ1Y3R1cmVJRFtzdHJ1Y3R1cmVdLCBzY3Jh
dGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorZW5k
CiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTMxOCwxMCArMzUw
LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5v
cFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxP
YmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBicG5l
cSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNDAyLDExICs0MzQsMTEgQEAg
bWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIs
IHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJ0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0
MApAQCAtNzMzLDggKzc2NSw3IEBAIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGJ0YnogSlNDZWxsOjpt
X2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKQEAg
LTc0NiwyNCArNzc3LDIzIEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigzLCB0MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNs
b3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKICAgICAKICAgICAjIFJlZ2lz
dGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQogICAgIG1vdmUgMSwgdDAKIC5v
cEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0Mgot
ICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0MgorICAgIGxvYWRTdHJ1Y3R1
cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGVbdDNdLCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQogICAgIGJ0
cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAKICAgICBtb3ZlIDAsIHQwCiAub3BJ
bnN0YW5jZW9mRG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAgICBkaXNwYXRj
aCg0KQogCkBAIC03ODMsMTcgKzgxMywxNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAg
IHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZpbmVk
Q2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJueiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjpt
X2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0K
ICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCi0gICAgY3BlcSBT
dHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQzCi0gICAgb3JxIFZhbHVlRmFsc2Us
IHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBjcGVxIFN0cnVjdHVyZTo6bV9n
bG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBzdG9y
ZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtODI2LDggKzg1Niw3
IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQy
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQogICAgIGJ0cW56IHQwLCB0YWdN
YXNrLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdU
eXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIs
IDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTg3OSwxNCArOTA4LDE1IEBAIG1hY3JvIGdldEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBj
YWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKICAgICAjIHdl
IHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MywgdDIsIHQx
KQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJwbmVxIHQyLCB0MSwgLm9w
R2V0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAg
ICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAg
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAg
ICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKICAgICAgICAgICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAgIGxvYWRxIFtwcm9wZXJ0eVN0b3Jh
Z2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIFtjZnIsIHQxLCA4
XQpAQCAtOTEyLDcgKzk0Miw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0
MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEFycmF5TGVu
Z3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDMsIHQyLCB0MCkKICAgICBhcnJheVByb2ZpbGUodDIsIHQx
LCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKICAgICBi
dGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QXJyYXlMZW5ndGhTbG93CkBAIC05NDks
MTUgKzk3OSwxNiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiBtYWNybyBwdXRC
eUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQzKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCi0g
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2Ny
YXRjaCh0MCwgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJw
bmVxIHQyLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAg
ICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2Ny
YXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKKyAg
ICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikKICAgICAgICAgICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHNjcmF0Y2gpCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
dDApCiAgICAgICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCkBA
IC05ODIsOSArMTAxMywxMCBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hl
Y2tzCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCisg
ICAgYnBuZXEgdDIsIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCB0MikKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCi0gICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwotICAgIGFkZGl0aW9uYWxD
aGVja3ModDEsIHQzKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKICAgICBnZXRQ
cm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQwLApAQCAtOTk1LDE1ICsxMDI3LDE1IEBAIG1hY3Jv
IHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICAgICAgICAgIHdyaXRlQmFy
cmllcih0MSkKICAgICAgICAgICAgIHN0b3JlcSB0MSwgW3QzXQogICAgICAgICAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCi0gICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyh0MCwg
dDEsIHQyKQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1h
Y3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBub0Fk
ZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1t
YWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBz
dHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAg
IGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywg
c2NyYXRjaCkKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCkBA
IC0xMDEyLDcgKzEwNDQsOCBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1
cmUsCiAgICAgYnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVl
TnVsbCwgLmRvbmUKIC5sb29wOgogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90
b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJn
KHByb3RvQ2VsbCwgc2NyYXRjaDIpCisgICAgbW92ZSBzY3JhdGNoMiwgb2xkU3RydWN0dXJlCiAg
ICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRk
cCA4LCBzY3JhdGNoCiAgICAgYnFuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1
cmVdLCBWYWx1ZU51bGwsIC5sb29wCkBAIC0xMDM5LDcgKzEwNzIsNyBAQCBfbGxpbnRfb3BfZ2V0
X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlW
YWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRT
dHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9u
KDQsIHQzKQogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MykKQEAgLTExMjUsNyArMTE1OCw3IEBAIF9sbGludF9vcF9nZXRfYnlfcG5h
bWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVBuYW1l
U2xvdykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0s
IHQxCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCiAgICAgYnBuZXEgdDIsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QxXSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMpCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKQEAgLTExNjcsNyArMTIwMCw3IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVj
aywgc2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcFB1
dEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDEsIHQyLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig0LCB0MykKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDApCkBAIC0xMjc3LDggKzEzMTAsOCBAQCBtYWNybyBlcXVhbE51bGwo
Y2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRl
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgY2VsbEhhbmRsZXIo
dDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdl
dCkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBjZWxsSGFu
ZGxlcih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQog
CiAudGFyZ2V0OgpAQCAtMTQxMCw4ICsxNDQzLDcgQEAgX2xsaW50X29wX3N3aXRjaF9jaGFyOgog
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgdGFn
TWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MV0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCiAgICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QxXSwgMSwgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDFdLCB0MAogICAgIGJ0cHog
IHQwLCAub3BTd2l0Y2hPblJvcGUKQEAgLTE0NTUsOSArMTQ4Nyw5IEBAIG1hY3JvIGFycmF5UHJv
ZmlsZUZvckNhbGwoKQogICAgICAgICBuZWdwIHQzCiAgICAgICAgIGxvYWRxIFRoaXNBcmd1bWVu
dE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25l
Ci0gICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgICAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKICAgICAgICAgbG9hZHBGcm9tSW5zdHJ1
Y3Rpb24oNiwgdDEpCi0gICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVu
U3RydWN0dXJlW3QxXQorICAgICAgICBzdG9yZXAgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2Vl
blN0cnVjdHVyZVt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTUyMCw4ICsxNTUy
LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAgICAgYnRx
bnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90
T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNO
b3RPYmplY3Q6CkBAIC0xNTM2LDggKzE1NjcsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBl
LCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3Jl
cSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1NjcsNyArMTU5Nyw3IEBA
IF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MykK
ICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQzCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdp
dGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAg
IGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc1LDcgKzE2MDUs
NyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9v
cDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGwsIC5vcE5l
eHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgdDIKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0
aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xv
dwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3Rv
dHlwZUxvb3AKQEAgLTE4MDQsOCArMTgzNCw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgog
bWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwRnJv
bUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0
UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC00MDAsOCArNDAwLDggQEAgbWFjcm8gYWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3IsIHN0cnVj
dAogICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFthbGxvY2F0
b3JdCiAgICAgCiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAgICAgICBzdG9y
ZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVw
IDAsIEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCisgICAgICAgIHN0b3JlU3RydWN0dXJl
V2l0aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkKICAgICBlbmQKIGVuZAog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAxNTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2Fs
bDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVv
ZihKU0NlbGwpID09IHNpemVvZih1aW50NjRfdCksIGpzY2VsbF9pc19laWdodF9ieXRlcyk7CiBT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSlNDZWxsKTsKIAogdm9pZCBK
U0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5j
bHVkZSAiQ2FsbERhdGEuaCIKICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAi
SGVhcC5oIgorI2luY2x1ZGUgIkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgor
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1
ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCkBAIC05NCw3
ICs5Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGNsZWFyU3Ry
dWN0dXJlKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9CisgICAgdm9pZCBjbGVhclN0cnVjdHVy
ZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0KIAogICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFtZSgp
OwogCkBAIC0xMzUsMjAgKzEzNywyNiBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGZhc3RHZXRP
d25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBwdHJk
aWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlE
T2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X3N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0
cnVjdHVyZUlEKTsKICAgICB9CiAKLSAgICB2b2lkKiBzdHJ1Y3R1cmVBZGRyZXNzKCkKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICZtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGws
IG1fZmxhZ3MpOwogICAgIH0KLSAgICAgICAgCi0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0g
ICAgU3RydWN0dXJlKiB1bnZhbGlkYXRlZFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJl
LnVudmFsaWRhdGVkR2V0KCk7IH0KLSNlbmRpZgotICAgICAgICAKKworICAgIHN0YXRpYyBwdHJk
aWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNDZWxsLCBtX3R5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3Qg
aW5kZXhpbmdUeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX2luZGV4aW5nVHlwZSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IFR5
cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CiBwcm90
ZWN0ZWQ6CiAKQEAgLTE3MCw4ICsxNzgsMTIgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAotICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAgU3RydWN0dXJlSUQgbV9zdHJ1
Y3R1cmVJRDsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5n
VHlwZTsKKyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxhZ3M7CisgICAgdWludDhf
dCBtX3VudXNlZDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0MiwxMSBAQCBpbmxpbmUgSlNDZWxs
OjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUCiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhy
ZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpCitpbmxpbmUg
SlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IG1fc3RydWN0
dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkpCisgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkp
CiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQpAQCAtNTYsNyArNTks
NyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChtX3N0cnVjdHVyZUlEKTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRh
ZykKQEAgLTY0LDIzICs2NywzMyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9u
KFZNJiB2CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgQVNTRVJUKHZtLmlzSW5pdGlh
bGl6aW5nT2JqZWN0KCkpOwogICAgIHZtLnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKDApOwot
ICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgaWYgKHN0cnVjdHVyZSkgeworI2VuZGlmCisgICAgICAg
IG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAgIG1fdHlwZSA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICAgICAgbV9mbGFncyA9IHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAgICAgICAgbV9zdHJ1Y3R1
cmUuc2V0RWFybHlWYWx1ZSh2bSwgdGhpcywgc3RydWN0dXJlKTsKICAgICAvLyBWZXJ5IGZpcnN0
IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEgcmVhbCBzdHJ1Y3R1cmUuCi0gICAgQVNT
RVJUKG1fc3RydWN0dXJlIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgIEFTU0VSVCht
X3N0cnVjdHVyZUlEIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwogfQogCiBpbmxpbmUgU3Ry
dWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0
dXJlLmdldCgpOworICAgIHJldHVybiBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBNQVJLX0xP
R19QQVJFTlQodmlzaXRvciwgY2VsbCk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmY2VsbC0+bV9z
dHJ1Y3R1cmUpOworICAgIC8vIEZJWE1FOiBJdCdzIHNpbGx5IGFuZCBzb21ld2hhdCBkYW5nZXJv
dXMgdG8gaGF2ZSB0byBkbyB0aGlzIHRvIHNhdGlzZnkgU2xvdFZpc2l0b3IuCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
QEAgLTExNiwxNyArMTI5LDE3IEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCog
Y2VsbCkKIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNP
YmplY3QoKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOwor
ICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZTsK
IH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0dldHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBl
OworICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2V0dGVyU2V0
dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QKQEAgLTEz
NiwxNyArMTQ5LDIxIEBAIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiAKIGlu
bGluZSBib29sIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAogewotICAgIHJldHVy
biBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsK
KyAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3Jh
cHBlclR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkgPT0gdGhpcy0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFz
c0luZm8oKSA9PSBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotICAgIEFTU0VSVCghbV9zdHJ1
Y3R1cmUKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUuZ2V0KCkgPT0gc3RydWN0
dXJlKTsKLSAgICBtX3N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7CisgICAgQVNT
RVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gdGhpcy0+c3RydWN0dXJlKCktPmNsYXNzSW5m
bygpKTsKKyAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpCisgICAgICAgIHx8IHRoaXMtPnN0
cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpCisg
ICAgICAgIHx8IEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0
dXJlLT5pZCgpKSA9PSBzdHJ1Y3R1cmUpOworICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMs
IHN0cnVjdHVyZSk7CisgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICBt
X2ZsYWdzID0gc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpOworICAgIG1f
dHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgbV9pbmRleGluZ1R5cGUg
PSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOwogfQogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFi
bGUqIEpTQ2VsbDo6bWV0aG9kVGFibGVGb3JEZXN0cnVjdGlvbigpIGNvbnN0CkBAIC0xNTYsNyAr
MTczLDcgQEAgaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxp
bmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAogewotICAg
IGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkp
CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZSgpLT5zdHJ1Y3R1
cmUoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0
dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKICAgICByZXR1cm4gJmNsYXNzSW5mbygpLT5tZXRob2RUYWJs
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0
cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTEgKzMzLDcgQEAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZgogewog
ICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRlc3RydWN0b3JUeXBlKCkgPT0g
TWFya2VkQmxvY2s6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpT
RGVzdHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOwotI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQotICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFz
c0luZm8oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNl
bmRpZgorICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgIAogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwpAQCAtNzcsNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8
IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBKU09iamVj
dCogb2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlz
aW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJ
bmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8pLCBpbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTGVuZ3RoKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0aCk7IH0KQEAgLTE3NCw2ICsxNzQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpTVmFsdWU7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBpc1JvcGUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNUeXBlIHsKK2VudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgVW5zcGVjaWZpZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5cGUsCiAgICAgQm9vbGVhblR5
cGUsCkBAIC02NCw2ICs2NCw4IEBAIGVudW0gSlNUeXBlIHsKICAgICBBY3RpdmF0aW9uT2JqZWN0
VHlwZSwKIH07CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50
OF90KSwgc2l6ZW9mX2pzdHlwZV9pc19vbmVfYnl0ZSk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgJKHJldmlzaW9uIDE1Nzg0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0g
MSA8PCA5OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0
eVNsb3QgPSAxIDw8IDEwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVIYXNS
YXJlRGF0YSA9IDEgPDwgMTE7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUlz
SW1tb3J0YWwgPSAxIDw8IDEyOwogCiAgICAgY2xhc3MgVHlwZUluZm8gewogICAgIHB1YmxpYzoK
QEAgLTg0LDYgKzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHJvaGliaXRz
UHJvcGVydHlDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmcpOyB9CiAgICAgICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVydHlT
bG90KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0
eVNsb3QpOyB9CiAgICAgICAgIGJvb2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7IHJl
dHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBib29s
IHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVj
dHVyZUlzSW1tb3J0YWwpOyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNl
dCgpCiAgICAgICAgIHsKQEAgLTk1LDYgKzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVJbmZvLCBtX3R5cGUpOwogICAgICAgICB9
CiAKKyAgICAgICAgdHlwZWRlZiB1aW50OF90IElubGluZVR5cGVGbGFnczsKKyAgICAgICAgSW5s
aW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0K
KwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEu
aAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyKCk7CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludDMyX3Q+IEluZGV4VHJhaXRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShyZXZpc2lvbiAx
NTc4NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhD
b21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CkBAIC0y
MDIsNiArMjAyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5jeSgpOwogI2Vu
ZGlmCiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogcHJp
dmF0ZToKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsK
ICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDE1Nzg0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhM
ZWFmVHlwZSwgMCksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERUNMQVJF
X0lORk87CkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdFeHBL
ZXkga2V5KCkgeyByZXR1cm4gUmVnRXhwS2V5KG1fZmxhZ3MsIG1fcGF0dGVyblN0cmluZyk7IH0K
IAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24gMTU3ODQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdz
OwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTU3ODQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDYgKzE1Nyw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmoKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKQogICAg
ICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIGdsb2JhbE9iamVjdCwgV3JpdGVCYXJyaWVyPEpT
R2xvYmFsT2JqZWN0Pjo6TWF5QmVOdWxsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIHBy
b3RvdHlwZSkKKyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
YWxsb2NhdGVJRCh0aGlzKSkKICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1f
dHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zm
c2V0KGludmFsaWRPZmZzZXQpCkBAIC0xODQsMTAgKzE4NSwxMSBAQCBjb25zdCBDbGFzc0luZm8g
U3RydWN0dXJlOjpzX2luZm8gPSB7ICJTCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAg
ICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGwpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhp
cywganNOdWxsKCkpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmFsbG9jYXRlSUQodGhpcykpCiAgICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAgICAgLCBt
X3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29m
ZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4pCisgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwpCiAgICAgLCBtX2luZGV4aW5n
VHlwZSgwKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2lu
ZChOb25lRGljdGlvbmFyeUtpbmQpCkBAIC0yMDYsNiArMjA4LDcgQEAgU3RydWN0dXJlOjpTdHJ1
Y3R1cmUoVk0mIHZtKQogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1
cmUqIHByZXZpb3VzKQogICAgIDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0
KCkpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlw
ZSgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxv
Y2F0ZUlEKHRoaXMpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQog
ICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAg
ICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKQEAgLTIyMyw2ICsyMjYsNyBAQCBTdHJ1Y3R1cmU6
OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1
ZSkKICAgICAsIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0
aW9uUmVpZmllZCkKIHsKKyAgICBBU1NFUlQoIXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVy
ZUlzSW1tb3J0YWwoKSk7CiAgICAgaWYgKHByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUhh
c1JhcmVEYXRhKCkgJiYgcHJldmlvdXMtPnJhcmVEYXRhKCktPm5lZWRzQ2xvbmluZygpKQogICAg
ICAgICBjbG9uZVJhcmVEYXRhRnJvbSh2bSwgcHJldmlvdXMpOwogICAgIGVsc2UgaWYgKHByZXZp
b3VzLT5wcmV2aW91c0lEKCkpCkBAIC0yMzMsNiArMjM3LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAgICAgbV9nbG9iYWxPYmplY3Quc2V0KHZtLCB0
aGlzLCBwcmV2aW91cy0+bV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCitTdHJ1Y3R1cmU6On5T
dHJ1Y3R1cmUoKQoreworICAgIGlmICh0eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUo
KS5kZWFsbG9jYXRlSUQodGhpcywgbV9zdHJ1Y3R1cmVJRCk7Cit9CisKIHZvaWQgU3RydWN0dXJl
OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihj
ZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4
LDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3Qg
Q2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFj
aXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC05NSw2ICs5Nyw4IEBAIHByb3RlY3RlZDoK
ICAgICB9CiAKIHB1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RydWN0dXJlSUQ7IH0KKwogICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRp
b24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmLCBQdXRQcm9wZXJ0eVNsb3Q6OkNv
bnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0KTsKQEAgLTMwMSw2ICszMDUs
MTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJ
RE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZSwgbV9zdHJ1Y3R1cmVJRCk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBwcm90b3R5
cGVPZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmUsIG1fcHJvdG90eXBlKTsKQEAgLTQ3OSw2ICs0ODgsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBtX25hbWVJblByZXZpb3VzOwogICAgIFdyaXRlQmFycmllcjxKU0NlbGw+
IG1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXM7CiAKKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVy
ZUlEOwogICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAKICAgICBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGUgbV90cmFuc2l0aW9uVGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDE1Nzg0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAot
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3Vu
ZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOyB9CisgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwogCkBAIC02NCw2ICs2Nyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJv
dGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBoZWFkKQogICAgICAgICB7CiAg
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCisjaW5jbHVkZSA8d3Rm
L0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1N0cnVjdHVyZUlEIFN0cnVjdHVyZUlE
VGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgaWYgKCFtX2Zp
cnN0RnJlZU9mZnNldCkgeworICAgICAgICBTdHJ1Y3R1cmVPck9mZnNldCBuZXdFbnRyeTsKKyAg
ICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3RydWN0dXJlOworCisgICAgICAgIFN0cnVjdHVy
ZUlEIHJlc3VsdCA9IG1fdGFibGUuc2l6ZSgpOworICAgICAgICBtX3RhYmxlLmFwcGVuZChuZXdF
bnRyeSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgU3RydWN0dXJlSUQg
cmVzdWx0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBtX3Rh
YmxlW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7CisgICAgbV90YWJsZVtyZXN1bHRdLnN0cnVj
dHVyZSA9IHN0cnVjdHVyZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFN0cnVjdHVy
ZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQg
c3RydWN0dXJlSUQpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV90YWJsZVtzdHJ1Y3R1cmVJRF0u
c3RydWN0dXJlID09IHN0cnVjdHVyZSk7CisgICAgbV90YWJsZVtzdHJ1Y3R1cmVJRF0ub2Zmc2V0
ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBzdHJ1Y3R1cmVJ
RDsKK30KKworU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQoU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQpCit7CisgICAgcmV0dXJuIG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cnVjdHVyZUlEVGFibGVfaAor
I2RlZmluZSBTdHJ1Y3R1cmVJRFRhYmxlX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZTsKKwordHlwZWRlZiB1aW50MzJfdCBT
dHJ1Y3R1cmVJRDsKKworY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7CisgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRFRhYmxlKCkK
KyAgICAgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgwKQorICAgIHsKKyAgICAgICAgLy8gV2UgcHJl
LWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0aGUgbnVsbCBTdHJ1Y3R1cmUKKyAg
ICAgICAgLy8gY2FuIHN0aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBTdHJ1Y3R1cmVJRCAnMCcu
CisgICAgICAgIGFsbG9jYXRlSUQoMCk7CisgICAgfQorCisgICAgdm9pZCoqIGJhc2UoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUpOyB9CisKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBTdHJ1Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCk7CisgICAgdm9pZCBkZWFsbG9j
YXRlSUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRl
SUQoU3RydWN0dXJlKik7CisKK3ByaXZhdGU6CisgICAgdW5pb24gU3RydWN0dXJlT3JPZmZzZXQg
eworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJlSUQgb2Zm
c2V0OworICAgIH07CisKKyAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBWZWN0
b3I8U3RydWN0dXJlT3JPZmZzZXQ+IG1fdGFibGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIFN0cnVjdHVyZUlEVGFibGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTc4NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
ODcsNiArNDg3LDkgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAorcHJv
dGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVj
dHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBT
aGFyZWRTeW1ib2xUYWJsZShWTSYgdm0pCiAgICAgICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRT
eW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1dlYWtNYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaAkocmV2aXNpb24gMTU3ODQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyAr
NjEsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215198</attachid>
            <date>2013-10-25 12:31:31 -0700</date>
            <delta_ts>2013-10-30 18:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131025123130.patch</filename>
            <type>text/plain</type>
            <size>309779</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MDMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1OSBA
QAorMjAxMy0xMC0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAq
IGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4NkNvbW1vbjo6Z2V0VW51c2VkUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmU4KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpjYW5KdW1wUmVwbGFj
ZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ6OnN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoT25BZGRyZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnJldmVy
dEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAq
IGFzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmg6CisgICAgICAgIChKU0M6OlJlcGF0Y2hCdWZmZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAgIChK
U0M6OlJlcGF0Y2hCdWZmZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZiX3JtKToKKyAgICAgICAgKiBieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAg
IChKU0M6OkFycmF5UHJvZmlsZTo6QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQ
cm9maWxlOjphZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6QXJy
YXlQcm9maWxlOjpvYnNlcnZlU3RydWN0dXJlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoZWFwKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hTdHJ1Y3R1cmVQdHIpOgorICAgICAgICAqIGRmZy9E
RkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENv
bXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPbkNlbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNDZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhv
bGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxp
dHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JP
dGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNv
bXBhcmVOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9y
T3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaGVhcC9CbG9ja0FsbG9jYXRvci5oOgor
ICAgICAgICAoSlNDOjpCbG9ja0FsbG9jYXRvcjo6c3VwZXJSZWdpb24pOgorICAgICAgICAqIGhl
YXAvR0NBc3NlcnRpb25zLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0M6
OkhlYXA6OnN0cnVjdHVyZUlEVGFibGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoK
KyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayk6CisgICAgICAgICogaGVh
cC9TdXBlclJlZ2lvbi5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6Cisg
ICAgICAgIChKU0M6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcjo6TmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
KToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZDZWxsTm90T2JqZWN0KToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVP
cENhbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZkNlbGxO
b3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENl
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6
CisgICAgICAgIChKU0M6OkpJVDo6YnJhbmNoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6YnJh
bmNoU3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRl
ZmluZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVx
X251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVx
X251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3df
b3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJp
bmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklU
OjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1
cmVDaGVjayk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTSW50
ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAoSlNDOjph
ZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpyZXBsYWNlV2l0aEp1
bXApOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAg
ICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlE
TGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6
OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6Cisg
ICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2FsbCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJ
RCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxp
emVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpT
U3RyaW5nQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2Fk
QXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9y
cy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9V
bnVzZWRQb2ludGVyLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQXJn
dW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJh
c2U6OmlzRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6
OmNsZWFyQ29kZVZpcnR1YWwpOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjp1bmxp
bmtDYWxscyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAg
ICAgKEpTQzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291
bnRXaXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdp
dGhBbnlJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRX
aXRoQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0
aEFueUluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVj
dG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlND
OjpKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6
c29ydCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlND
OjpKU0FycmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0Fy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGVhclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp0eXBlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppbmRleGluZ1R5cGUpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dmlzaXRD
aGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0dldHRlclNldHRl
cik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNQcm94eSk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6bWV0aG9kVGFibGUpOgorICAgICAgICAoSlNDOjpK
U0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0
aWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAg
ICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxhYmxlT2JqZWN0
U2xvdyk6CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVu
dGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVh
dGVJbml0aWFsSW5kZXhlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0ludDMyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJs
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3Vz
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFn
ZVdpdGhvdXRDb3B5aW5nRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVy
dFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZl
cnRJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRv
Q29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5
U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRv
Q29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMlNsb3cpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlRG91YmxlU2xvdyk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjplbnN1cmVDb250aWd1b3VzU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjplbnN1cmVBcnJheVN0b3JhZ2VTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3Vy
ZUFycmF5U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3Bl
cnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0
cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVj
dG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRE
aXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXROZXdWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291bnRFbGVtZW50
cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6Z2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2ts
eSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmNhblNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJ
bmRleFF1aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5k
ZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjplbnN1cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGlndW91
cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5U3Rv
cmFnZU9yTnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmN1cnJlbnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2Jh
bE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aXNBY3RpdmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJbnN0
YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3Qp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29w
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0U2NvcGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNU
eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0lt
bW9ydGFsKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlubGluZVR5cGVGbGFncyk6CisgICAg
ICAgICogcnVudGltZS9NYXBEYXRhLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJv
cGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRl
U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAoSlNDOjpS
ZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZh
bHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6flN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmFs
bG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxl
OjpnZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL1dlYWtNYXBEYXRhLmg6CisKIDIwMTMtMTAtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggTVNWQyBhZ2FpbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03MDIsNiArNzAyLDggQEAKIAkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxi
YWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyMTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi87
IH07CiAJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNF
MDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTJBN0E1OEVGMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdD
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1
OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLzsgfTsKKwkJMkFEMzUzRDkxODE1
QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMzUzRDcxODE1QzEwQjAwNjFFODE3IC8qIFN0
cnVjdHVyZUlEVGFibGUuY3BwICovOyB9OworCQkyQUQzNTNEQTE4MTVDMTBCMDA2MUU4MTcgLyog
U3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkFEMzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUQ4OTMy
QjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYg
LyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5
NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07CiAJ
CTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3
OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CkBAIC0xOTI1LDYgKzE5MjcsOCBAQAogCQky
NjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJH
Qy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlckdDLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFEMzUzRDcxODE1QzEwQjAwNjFFODE3IC8q
IFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJB
RDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25T
Y29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2Nv
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNG
OTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBh
dGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk0NDkw
OTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjE4LDYgKzM2MjIsOCBAQAogCQkJCUE3QkRBRUMzMTdG
NEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQTdCREFF
QzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTdCREFF
QzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVyYXRvci5oICovLAorCQkJCTJBRDM1M0Q3
MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLywKKwkJCQkyQUQzNTNE
ODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovLAogCQkJKTsKIAkJCXBh
dGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQwODgsNiArNDA5
NCw3IEBACiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM1MTdBREI1RjMwMDVBQjE3
NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFEMzUzREExODE1QzEwQjAw
NjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM3
MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3QjIgLyogQXJyYXlDb252ZW50aW9ucy5o
IGluIEhlYWRlcnMgKi8sCkBAIC01NDE3LDYgKzU0MjQsNyBAQAogCQkJCTE0N0YzOUQ0MTA3RUMz
NzYwMDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDgyQjdFNDBB
NDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdG
OTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkFEMzUzRDkxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2
YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTg0RTFBMTdCRURCRDMwMDdDQjYzQSAvKiBK
U1Byb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxNUY2NUQxN0MxOTlDRTAwNzk0RDQw
IC8qIEpTUHJvbWlzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1i
bGVyLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTksNyArNDE5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gRGF0YUxhYmVsMzI6CiAgICAgLy8KLSAgICAvLyBBIERh
dGFMYWJlbFB0ciBpcyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29u
dGFpbmluZyBhIHBvaW50ZXIgdG8gYmUKKyAgICAvLyBBIERhdGFMYWJlbDMyIGlzIHVzZWQgdG8g
cmVmZXIgdG8gYSBsb2NhdGlvbiBpbiB0aGUgY29kZSBjb250YWluaW5nIGEgMzItYml0IGNvbnN0
YW50IHRvIGJlCiAgICAgLy8gcGF0Y2hlZCBhZnRlciB0aGUgY29kZSBoYXMgYmVlbiBnZW5lcmF0
ZWQuCiAgICAgY2xhc3MgRGF0YUxhYmVsMzIgewogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1w
bGF0ZUFzc2VtYmxlclR5cGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1OSw2ICszNTksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChi
cmFuY2hQdHJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1
ZSkpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0
Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigw
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyV2l0aFBhdGNo
KGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpKTsKKyAgICB9CisKICAg
ICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoanVtcCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjM4LDYgKzIzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1w
KG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVl
ID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cldpdGhQ
YXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oaW5pdGlhbFJpZ2h0VmFsdWUubV92YWx1ZSkpKTsKKyAgICB9CisKICAgICBEYXRh
TGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjA5LDYgKzYwOSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBYODZSZWdp
c3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
IGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChh
ZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICAgICByZXR1cm4gWDg2
UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSAhPSBYODZSZWdpc3Rl
cnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVieDsKKworICAgICAg
ICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWN4KTsKKyAgICAgICAgcmV0
dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0KKwogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTYyOCw2
ICs2NDAsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4g
b25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5l
ZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAgICAgaWYgKHNyYyA+PSA0
KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgorICAgICAgICAg
ICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7CisKKyAgICAg
ICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBz
dG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAg
ICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQorCisg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CkBA
IC01OTIsNiArNTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1t
MzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBwYWRCZWZv
cmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW5pdGlhbFZhbHVlLm1f
dmFsdWUsIGRlc3QpOworICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOworICAgIH0K
KwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRh
TGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIp
OwpAQCAtNjA0LDYgKzYxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoMzJX
aXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJl
bDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJ
bW0zMigwKSkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmlnaHRWYWx1ZS5tX3ZhbHVlLCBsZWZ0Lm9m
ZnNldCwgbGVmdC5iYXNlKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CkBAIC02NDQsNiArNjY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdp
c3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lz
dGVyOyB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAog
ICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25S
ZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtNjU1LDE2
ICs2NzcsMzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgt
dG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBz
dGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMy
IGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5
dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29k
ZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zm
c2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxh
YmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFu
Y2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisKKyAgICBzdGF0aWMgQ29k
ZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNz
KENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOworICAgIH0KICAgICAKICAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCB2b2lk
KiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBU
b19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVz
cyBhZGRyZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFu
Y2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0
ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgWDg2QXNzZW1ibGVyOjpy
ZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwpOwogICAgIH0KKworICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0
Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQogICAgIHsKQEAgLTE3NSw2ICsxODAsMTEgQEAgcHVibGljOgogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJX
aXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwogICAgIH0KIAorICAg
IHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goaW5zdHJ1
Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0KKwogcHJpdmF0ZToKICNpZiBFTkFC
TEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTEgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBtb3ZiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2
aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3NiwyNSBAQCB2b2lkIGR1bXBBcnJh
eU1vZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZSkKKyAgICBpZiAoIW1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fb2JzZXJ2
ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVy
ZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgp
LT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7CisgICAgbV9v
YnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVj
dHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKICAgICAg
ICAgJiYgaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJyYXlNb2RlcykpIHsKLSAgICAg
ICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNl
ZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyA9IGFycmF5TW9kZUZy
b21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgICAgICBtX2RpZFBlcmZvcm1GaXJz
dFJ1blBydW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4
ZWRBY2Nlc3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmlu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8o
KTsKKyAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0
cnVjdHVyZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlT
dHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkKKyAgICAgICAgJiYgIWds
b2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1
cmUpKQogICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwotICAg
IG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7
CiB9CiAKIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAx
NTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewog
cHVibGljOgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICwgbV9sYXN0U2Vl
blN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAg
ICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxz
ZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAg
ICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpIHsg
cmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9
CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2Vy
dmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyBy
ZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5k
cygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlU3Ry
dWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0
cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3Ry
dWN0dXJlLT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKik7CkBAIC0xODgsNyAr
MTg4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBwb2x5bW9ycGhpY1N0cnVj
dHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7Ci0gICAg
U3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGU7IC8vIFRoaXMgZmxhZyBt
YXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0
IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBp
bmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUg
aW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBm
b3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9v
bCBtX291dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMg
OiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRleCkuZGF0YSgpOwogICAgIH0KIAor
ICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0KICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0dXJlRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVjdHVyZUZs
YWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0NSw3ICs1NDUsNyBAQCBwcml2YXRl
OgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHB1Ymxp
YzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDIzICsxMjIsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAobV9vcCA9
PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUp
OwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAgICAgICAg
ICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQsIGppdC0+
bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEFsYXMs
IHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcg
ZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBi
ZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAg
ICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Ci0gICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJh
eSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3Vs
dCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGlu
ZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCiAgICAgICAgICAgICAv
LyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4K
ICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgbV9zdHJ1
Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAg
ICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUobV9zdHJ1
Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUxLDcgKzI1MSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1B0
cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVm
ZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNo
U3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNl
CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNC
bG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dl
ZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lz
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQu
bV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRy
KHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3Jh
dGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBz
Y3JhdGNoMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OCw5ICsxMjgsOSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAg
ICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNj
cmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRj
aDEpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3Jh
dGNoMSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIG1faml0Lm9yMzIoc2NyYXRjaDIsIEFz
c2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJy
YXlNb2RlcygpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAg
ICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
YXJnVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdFBheWxvYWRHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxl
cjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3RydWN0
dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0Lm1vdmUoaW52
ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BS
KTsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBoCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAg
ICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
YXJnVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8s
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpLCBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKICAgIAogICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKQEAgLTExNjQsMTgg
KzExNjQsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKQEAgLTExODcsNyArMTE4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RFcXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9k
ZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMTI0MiwxMCArMTI0MiwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwK
QEAgLTEyNzEsMTAgKzEyNzEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dFRvT2JqZQogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BS
KSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApA
QCAtMTM1MSwxMCArMTM1MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQ
Uik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMzc5LDEwICsxMzc5LDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQ
Uiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE0OTksMTAgKzE0OTksMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQ
Uik7CiAKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LApAQCAtMTYzMCwxMCArMTYzMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFs
dWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKQEAgLTMxNTYsNyArMzE1
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
YWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9w
MVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKQEAgLTMxODksNyArMzE4OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAog
ICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwg
cmVzdWx0R1BSKTsKICAgICAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtMzU2
OCw3ICszNTY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0aGlzVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGhpc1ZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdGVt
cEdQUik7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOCgKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLApAQCAt
Mzg3MywxMiArMzg3MywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgQmFkQ2FjaGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2UuZ3ByKCkpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2Uu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIApAQCAtMzkxMyw3ICsz
OTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sg
PSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhvcDEuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5v
ZGUtPnN0cnVjdHVyZSgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+
c3RydWN0dXJlKCkpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBpc09L
LmxpbmsoJm1faml0KTsKICNlbHNlCkBAIC0zOTQyLDcgKzM5NDIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlR1BS
LCBub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSwgV3JpdGVCYXJy
aWVyRm9yR2VuZXJpY0FjY2Vzcyk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0
b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0
YSgpLm5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDEyOSw3ICs0MTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUu
Z3ByKCkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSkpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDE1OSw3ICs0MTU5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXls
b2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2pp
dC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CkBAIC00MjAzLDcgKzQyMDMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQy
NTcsNyArNDI1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAo
IW5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdGVtcEdQUik7CiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAg
ICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAg
ICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5nKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDEyICsyNzEsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAg
ICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8g
VHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBu
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjg1LDYgKzI4OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BS
UmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3By
KCk7CiAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iob3BlcmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2Jh
bE9iamVjdEdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BS
LCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IEpJVENv
bXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RH
UFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BSKTsKICAgICB9CkBAIC0zMzcsMTYg
KzM0MSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAg
fSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOworICAgICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9w
ZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGFyZ0dQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGJyYW5jaFRl
c3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7Cisg
ICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCAKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCksIAorICAgICAgICAgICAgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7CiAKICAgICAg
ICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmpl
Y3QuZ3ByKCk7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihvcGVyYW5kLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0
Y2guZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9i
amVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xv
YmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDog
dGFrZW4pOwogICAgIH0KQEAgLTE1MjEsNDEgKzE1MjksMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZv
ck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlz
KTsKLSAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLQotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCi0gICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5j
aGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBA
IC0xNTk1LDIxICsxNTk4LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RU
b09iamUKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewog
ICAgICAgICBzcGVjdWxhdGlvbldhdGNocG9pbnRGb3JNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCk7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hp
bGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVj
dHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTE2MjIsMjEgKzE2
MjQsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIGlm
IChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIHNwZWN1
bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxk
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkp
OwogICAgIH0KICAgICAKQEAgLTE3MDAsMjEgKzE3MDEsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAK
QEAgLTE3MjcsMjEgKzE3MjcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZQogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7
CiAgICAgICAgIHNwZWN1bGF0aW9uV2F0Y2hwb2ludEZvck1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xODU4LDYgKzE4NTcsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJl
ZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
OworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CkBAIC0xODY2LDMzICsxODY3LDM1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgLy8g
VGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUg
cmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCiAgICAgICAgIC8vIERvIHRoaXMgYXQgdGhl
IHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVy
IGFsbG9jYXRpb24uCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2godGhpcyk7CiAgICAgICAgIHN0cnVjdHVy
ZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc2NyYXRjaC5hZG9wdChyZWFsU2NyYXRj
aCk7CiAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICAgICAgc2Ny
YXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
dmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBv
aW50Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwotCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVj
dHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBlbWl0
TG9hZFN0cnVjdHVyZSh2YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVV
c2UsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0yMDExLDMzICsyMDE0LDQzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlVXNlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmU7CiAgICAgR1BSUmVn
IHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOworICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOworCisgICAg
aWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOworICAgICAgICBzdHJ1Y3R1
cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7CisgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS5ncHIoKTsKKyAgICB9CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50
Rm9yTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKLQogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc2NyYXRj
aEdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwog
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAg
IGVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZVVzZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJl
bnROb2RlLT5jb2RlT3JpZ2luKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQubGluaygmbV9qaXQpOwpAQCAtMzQ3NCw3ICszNDg3LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BS
LCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwpAQCAtMzUw
MSwxMCArMzUxNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJp
bmcpIHsKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2pp
dC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJv
LCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aDEubGluaygmbV9q
aXQpOwpAQCAtMzczMSw3ICszNzQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1
bHRHUFIsIHN0b3JhZ2VHUFIpKTsKICAgICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BS
LCBzdG9yYWdlR1BSKTsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9k
ZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNB
cnJheT4ocmVzdWx0R1BSLCBJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQ
Uiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09i
amVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFn
ZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAtMzg3Mywx
MSArMzg4OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgdGhpc1ZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAg
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwog
ICAgICAgICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZUdQUiwgdGVtcEdQUik7CiAgICAgICAgIEpfSklU
T3BlcmF0aW9uX0VKIGZ1bmN0aW9uOwpAQCAtNDE2NSwyNCArNDE3OSwyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgICAgICAgICBleGl0S2luZCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5n
cHIoKSksIDAsCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQo
KVswXSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVj
dHVyZSh0aGlzKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKQotICAgICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CisgICAgICAgICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShKSVRDb21waWxlcjo6
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkp
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAorICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0cnVjdHVy
ZVNldCgpLmxhc3QoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1f
aml0KTsKICAgICAgICAgfQpAQCAtNDIwNyw3ICs0MjE3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhv
cDEuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbm9k
ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlz
T0subGluaygmbV9qaXQpOwogI2Vsc2UKQEAgLTQyMjksNyArNDI0Miw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5j
b21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1f
cGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaCh0aGlzKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAg
ICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAogICAgICAg
ICAKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCkBAIC00MjM3LDcgKzQyNTIs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHdy
aXRlQmFycmllcihiYXNlR1BSLCBub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0
cnVjdHVyZSwgV3JpdGVCYXJyaWVyRm9yR2VuZXJpY0FjY2Vzcyk7CiAjZW5kaWYKICAgICAgICAg
Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5v
ZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAg
ICBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBiYXNl
R1BSLCBzY3JhdGNoR1BSKTsgCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CkBAIC00NDA1LDggKzQ0MjAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
LCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
WmVybywgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogCiAgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0MzUsOCArNDQ1MiwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5v
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdw
cigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJy
YW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwog
ICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAg
ICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogCkBA
IC00NDgzLDggKzQ1MDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1
YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIAorICAgICAg
ICAgICAgcmVzdWx0LmdwcigpKTsKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFs
dWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIApAQCAtNDUyMyw4ICs0NTQ0LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVHlwZU9mOiB7CiAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOwogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsK
LSAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IGRvbmVKdW1wczsKQEAgLTQ1MzgsOCArNDU1NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1Zh
bHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENlbGwp
OwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgp
IHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1Zh
bHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmlu
Zyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21h
bGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0R1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTgw
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzY3LDkgKzc2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNo
ZWNrQXJyYXkoTm9kZSogbm8KICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
dGVtcEdQUik7Ci0gICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXBHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAogICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlUmVnKSwgMCwKICAgICAgICAgICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUo
dGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKQEAgLTc3OCw4ICs3NzYsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8g
PSBBcmd1bWVudHM6OmluZm8oKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUs
CisgICAgICAgICAgICBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAg
bm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBleHBlY3RlZENsYXNzSW5mbyA9IGNsYXNzSW5mb0ZvclR5cGUobm9kZS0+YXJyYXlN
b2RlKCkudHlwZWRBcnJheVR5cGUoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg4LDggKzc5Miw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICBSRUxFQVNF
X0FTU0VSVChleHBlY3RlZENsYXNzSW5mbyk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7Ci0gICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXAuZ3ByKCkpOworICAg
IEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlUmVn
LCB0ZW1wLmdwcigpLCB0ZW1wMi5ncHIoKSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAg
ICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCiAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTgxOSwxNiArODIzLDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUqIG5vZGUKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3Qgc2xvd1BhdGg7CiAgICAgCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVj
dHVyZSkgewotICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigKKyAg
ICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CiAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAgICAg
CiAgICAgICAgIG1faml0LmxvYWQ4KAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQ
Uik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6
OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAogICAgICAgICBzbG93
UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5h
cnJheU1vZGUoKSkpOwogICAgIH0KQEAgLTEzNTksMjQgKzEzNjAsMjUgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCi0gICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCi0gICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jh
cnkgc3RydWN0dXJlKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJl
KG9wMUdQUiwgc3RydWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3RhdGUu
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCkBAIC0xMzkxLDcgKzEz
OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKG9w
MkdQUiwgc3RydWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCkBAIC0yODQ0LDE4ICsyODQ2
LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckYKICAgICBub1Jl
c3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZG
b3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BS
UmVnIHNjcmF0Y2hSZWcpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZv
ck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJS
ZWcgc2NyYXRjaFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKQogewogICAgIC8vIENoZWNrIHRoYXQg
cHJvdG90eXBlIGlzIGFuIG9iamVjdC4KLSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHByb3RvdHlwZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0
Y2hSZWcpOwotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qoc2NyYXRjaFJlZykpOworICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0
KHByb3RvdHlwZVJlZykpOwogICAgIAogICAgIC8vIEluaXRpYWxpemUgc2NyYXRjaFJlZyB3aXRo
IHRoZSB2YWx1ZSBiZWluZyBjaGVja2VkLgogICAgIG1faml0Lm1vdmUodmFsdWVSZWcsIHNjcmF0
Y2hSZWcpOwogICAgIAogICAgIC8vIFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUg
dmFsdWUgKGluIHNjcmF0Y2hSZWcpLCBjb21wYXJpbmcgdG8gcHJvdG90eXBlUmVnLgogICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaFJlZyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaFJlZywgc2NyYXRj
aFJlZywgc2NyYXRjaDJSZWcpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQubG9hZDY0
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBl
T2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3Rh
bmNlID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoUmVnLCBw
cm90b3R5cGVSZWcpOwpAQCAtMjg5NCw5ICsyODk1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKICAgICAg
ICAgR1BSUmVnIHByb3RvdHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAgICBHUFJSZWcgc2NyYXRjaDJSZWcg
PSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAg
R1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CkBAIC0yOTEzLDcgKzI5MTYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgICAgIAogICAgICAgICBp
c0NlbGwubGluaygmbV9qaXQpOwogICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZG
b3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZyk7CisgICAg
ICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVS
ZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwogCkBAIC0yOTI5LDEyICsyOTMyLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAKICAgICBHUFJSZWcg
dmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90
eXBlLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICBH
UFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAKLSAgICBjb21waWxlSW5z
dGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVn
KTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90
eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIGpzVmFsdWVSZXN1bHQoc2NyYXRjaFJlZywgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7
CkBAIC00NjUwLDExICs0NjU1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0
cmluZ09uQ2UKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBt
X2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAg
IAotICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUobm9kZS0+Y2hpbGQx
KCksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVy
ZShub2RlLT5jaGlsZDEoKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTV3JhcHBlck9iamVj
dDo6aW50ZXJuYWxWYWx1ZUNlbGxPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIApAQCAt
NDY3OSwxMCArNDY4NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmU7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0
cmluZykgewotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVkQ2FsbCA9IG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAg
ICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0gbV9q
aXQuanVtcCgpOwogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNDg4Miwx
MCArNDg4OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3QoRWRnCiAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBHUFJSZWcg
Z3ByID0gb3BlcmFuZC5ncHIoKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
UHRyKAorICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2Ug
ZWRnZSkKQEAgLTQ4OTQsMTQgKzQ5MDEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlRmluYWxPYmplYwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRo
aXMpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwotICAgIEdQUlJlZyBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChncHIpLCBlZGdlLCBTcGVjRmluYWxPYmplY3QsIG1faml0LmJyYW5jaDgoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUp
KSk7CiB9CiAKQEAgLTQ5MTgsMTAgKzQ5MjIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlT2JqZWN0T3JPdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hUZXN0NjQoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpT
VmFsdWVSZWdzKGdwciksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAg
IG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVj
Q2VsbCB8IFNwZWNPdGhlcikpIHsKQEAgLTQ5NDEsMTAgKzQ5NDUsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPQogICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVS
ZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
ICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00OTY0LDEwICs0OTY4LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewogICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3Bl
Y1N0cmluZywgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZywgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3Ry
aW5nLCBHUFJSZWcgc3RvcmFnZSkKQEAgLTUwMjAsNyArNTAyNCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZyhFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGdwcikKIHsKLSAgICBzcGVjdWxhdGVT
dHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9y
U3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z09iamVjdChFZGdlIGVkZ2UpCkBAIC01MDQ3LDE1ICs1MDUxLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09yU3QKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2Us
IFNwZWNTdHJpbmcgfCBTcGVjU3RyaW5nT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQ
UiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQdHIo
Ci0gICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICBKSVRDb21w
aWxlcjo6RXF1YWwsIAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpOwogICAgIAotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShl
ZGdlLCBzdHJ1Y3R1cmVHUFIpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVy
ZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSkpOwogICAgIAogICAgIGlzU3RyaW5nLmxpbmsoJm1faml0KTsKICAgICAKQEAgLTUzMjAs
MTAgKzUzMjEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQog
I2VuZGlmCiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2goCi0gICAgICAgICAgICBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAK
ICAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQ
UigpLCB0ZW1wR1BSKTsKQEAgLTU2MjAsMTAgKzU2MjEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaFN0cmluZyhObwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBhZGRCcmFu
Y2goCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBh
eWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+
ZmFsbFRocm91Z2gpOwogICAgICAgICAKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5n
KGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMzLDcgKzczMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVl
cGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBub25T
cGVjdWxhdGl2ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAg
ICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcs
IEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5kUmVzdWx0UmVnKTsKKyAgICB2
b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQ
UlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5kUmVzdWx0UmVnLCBHUFJSZWcgc2Ny
YXRjaDJSZWcpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAgIAogICAg
IHB0cmRpZmZfdCBjYWxsZWVGcmFtZU9mZnNldChpbnQgbnVtQXJncykKQEAgLTIwNjIsNiArMjA2
MiwxMTMgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAg
IH0KKworICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBk
ZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRy
KG1faml0LnZtKCktPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaEdQUik7
CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNo
R1BSLCBkZXN0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3RHUFIpOworI2Vs
c2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIGRlc3RHUFIpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1p
dExvYWRTdHJ1Y3R1cmUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcg
ZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKGpp
dC52bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAg
ICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hHUFIsIGRl
c3RHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdEdQUik7CisjZWxzZQorICAg
ICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IGRlc3RHUFIpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmUo
VHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRp
Y19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgbV9q
aXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxz
ZQorICAgICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCisgICAg
fQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0
ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcpCisgICAgeworICAgICAgICBlbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8obV9qaXQsIHN0cnVjdHVyZSwgZGVzdEdQUik7Cisg
ICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oR1BSUmVnIHN0
cnVjdHVyZUdQUiwgR1BSUmVnIGRlc3RHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNl
CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYmV0dGVyLgorICAgICAgICAvLyBTdG9yZSB0
aGUgdHlwZSBpbmZvIGZsYWdzCisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSk7CisK
KyAgICAgICAgLy8gU3RvcmUgdGhlIEpTVHlwZQorICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KHNjcmF0Y2hHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgaW5kZXhpbmcgdHlwZQorICAgICAgICBtX2pp
dC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4
KHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgU3RydWN0dXJlSUQK
KyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlKHN0cnVjdHVyZUdQUiwgZGVzdEdQUiwgc2NyYXRj
aEdQUik7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oQ0NhbGxIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0dXJl
LCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJl
UHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOwor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVpbnQ2NF90IGJsb2JUb1N0b3JlID0gKnJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3QqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihzdHJ1Y3R1cmVQdHIpICsgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKTsKKyAgICAg
ICAgaml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAg
ICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGJldHRlci4KKyAgICAgICAgLy8gV2UgaGF2ZSB0byBj
YXN0IHRvIHNpZ25lZCBiZWNhdXNlIHN0b3JlOCBnZXRzIG1hZCBpZiB0aGUgdmFsdWUgaXMgb3V0
c2lkZSBvZiB0aGUgc2lnbmVkIGNoYXIgcmFuZ2UuCisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkgPD0gMjU1KTsKKyAg
ICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZv
KCkuaW5saW5lVHlwZUZsYWdzKCkpIDw9IDI1NSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oc3RydWN0dXJlUHRyLT5pbmRleGluZ1R5cGUoKSkgPD0gMjU1KTsKKworICAg
ICAgICBqaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHN0cnVjdHVy
ZVB0ci0+dHlwZUluZm8oKS50eXBlKCkpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSk7CisgICAgICAgIGpp
dC5zdG9yZTgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4oc3RydWN0dXJlUHRyLT50
eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKyAgICAg
ICAgaml0LnN0b3JlOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90PihzdHJ1Y3R1cmVQ
dHItPmluZGV4aW5nVHlwZSgpKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgICAgICBlbWl0U3Rv
cmVTdHJ1Y3R1cmUoaml0LCBzdHJ1Y3R1cmUsIGRlc3QpOworI2VuZGlmCisgICAgfQorCisgICAg
c3RhdGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlKENDYWxsSGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgR1BSUmVnIGRlc3RHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworICAgICAgICBqaXQuc3RvcmUz
MihUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAg
ICBqaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZv
aWQgZW1pdFN0b3JlU3RydWN0dXJlKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BS
LCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
bV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0
dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0
b3JlMzIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2Ny
YXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVyZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7Cisj
ZW5kaWYKKyAgICB9CiAgICAgCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhIGNlbGwgb2YgYSBzcGVj
aWZpYyBzaXplLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1
Y3R1cmVUeXBlIGNhbiBiZSBHUFIgb3IgSW1tUHRyLgpAQCAtMjA3Nyw3ICsyMTg0LDcgQEAgcHVi
bGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhl
YWQoKSkpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIFN0cnVjdHVyZS4K
LSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgZW1pdFN0
b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BS
KTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9iamVjdCBvZiBhIHNwZWNpZmlj
IHNpemUuCkBAIC0zMDI5LDggKzMxMzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVTdHJpbmdPYmplCiAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9jdXJyZW50S25v
d25TdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG1fY3VycmVudE5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkpKSB7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBOb3RTdHJpbmdPYmplY3Qs
IEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgVHJ1c3Rl
ZEltbVB0cihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBz
dHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogICAgIG1f
aml0LmFkZExhemlseSgKICAgICAgICAgc3BlY3VsYXRpb25XYXRjaHBvaW50KE5vdFN0cmluZ09i
amVjdCksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgV2Vha0Js
b2NrOwogLy8gc2hvcnQgcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGVuIGZyZWVpbmcgdGhlbSBvbiBh
IHNlY29uZGFyeSB0aHJlYWQuCiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yIHsKKyAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIEJsb2NrQWxsb2NhdG9y
KCk7CiAgICAgfkJsb2NrQWxsb2NhdG9yKCk7CkBAIC01OSw2ICs2MCw4IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlKFQqKTsKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlQ3VzdG9tU2l6ZShUKik7CiAKKyAgICBTdXBl
clJlZ2lvbiYgc3VwZXJSZWdpb24oKSB7IHJldHVybiBtX3N1cGVyUmVnaW9uOyB9CisKIHByaXZh
dGU6CiAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5nTG9jayhkb3VibGUg
cmVsYXRpdmUpOwogICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHJldmlz
aW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJ
T04pCiAjZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCkgZG8geyBcCiAg
ICAgUkVMRUFTRV9BU1NFUlQoY2VsbCk7XAotICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwtPnVudmFs
aWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkgPT0gY2VsbC0+dW52YWxp
ZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1
Y3R1cmUoKSk7IFwKKyAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT5zdHJ1Y3R1cmUoKS0+c3RydWN0
dXJlKCkgPT0gY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSk7IFwK
IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3Qs
IGNsYXNzSW5mbykgZG8ge1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlz
aW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgogI2luY2x1ZGUg
IldyaXRlQmFycmllclN1cHBvcnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4K
QEAgLTE4Niw2ICsxODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNEZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kZWZlcnJhbERlcHRoOyB9CiAKKyAg
ICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CisgICAgICAgIFN0cnVjdHVy
ZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJldHVybiBtX3N0cnVjdHVyZUlEVGFibGU7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRCbG9jazsKQEAgLTIzNiw3ICsyNDAsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc2l6ZV90IHNpemVBZnRlckNvbGxlY3QoKTsKIAogICAgICAgICBK
U1N0YWNrJiBzdGFjaygpOwotICAgICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3Io
KTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5jcmVtZW50RGVm
ZXJyYWxEZXB0aCgpOwogICAgICAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsKQEAg
LTI1Niw2ICsyNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEhlYXBP
cGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOwogICAgICAgICBCbG9ja0FsbG9jYXRvciBt
X2Jsb2NrQWxsb2NhdG9yOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxlIG1fc3RydWN0dXJlSURU
YWJsZTsKICAgICAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKICAgICAgICAgQ29waWVk
U3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAgICAgICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFy
cmF5QnVmZmVyPiBtX2FycmF5QnVmZmVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDIwICsyMjMsMjIg
QEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhObwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFy
a2VkU3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9ub3JtYWxEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwot
ICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGltcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2UuaW1wcmVjaXNl
QWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fbm9ybWFsRGVz
dHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFs
bG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQogICAgIG1fbm9ybWFs
U3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9ub3JtYWxEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAg
bV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7CiAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVj
aXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFj
ZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwogICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFy
Z2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogCiAgICAgcmV0dXJuIGZ1bmN0b3Iu
cmV0dXJuVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVn
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdp
b24uaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vw
ZXJSZWdpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIFZNOwogCiBjbGFzcyBTdXBlclJlZ2lvbiA6IHB1YmxpYyBXVEY6Ok1ldGFBbGxv
Y2F0b3IgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBwdWJsaWM6
CiAgICAgU3VwZXJSZWdpb24oKTsKICAgICB2aXJ0dWFsIH5TdXBlclJlZ2lvbigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJl
dmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDE1IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB7CiAgICAgcHVibGlj
OgorICAgICAgICBBTFdBWVNfSU5MSU5FIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcihWTSogdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBpbnQgbGluZU51bWJlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgVU5VU0VEX1BBUkFNKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgQVNTRVJUKHZtKTsKKyAg
ICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgICAgICAgICAgQVNTRVJUKCFjYWxsRnJh
bWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOworICAgICAgICAgICAgdm0tPnRvcENhbGxGcmFt
ZSA9IGNhbGxGcmFtZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19JTkxJTkUgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyKFZNKiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw5ICsx
ODQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwYXlsb2FkRm9yKHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoSWZOb3RP
YmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKKyAgICBKdW1wIGJyYW5jaElmQ2VsbE5vdE9iamVj
dChHUFJSZWcgY2VsbFJlZykKICAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBB
ZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CisgICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBB
ZGRyZXNzKGNlbGxSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoT2JqZWN0VHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRj
aEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9
IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcg
cHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1
ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBSZWdp
c3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90T2JqZWN0KFJlZ2lzdGVy
SUQgc3RydWN0dXJlUmVnKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChS
ZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIEp1bXAgYWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlND
ZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpAQCAtMzM1LDggKzMzNSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodW5zaWduZWQsIFJlZ2lz
dGVySUQpIHsgfQogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJ
RCkgeyB9CiAjZW5kaWYKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKFJlZ2lz
dGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5
UHJvZmlsZSopOwotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29k
ZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICB2b2lkIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5cGUsIFJlZ2lz
dGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRl
eGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAg
ICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQ
cm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lh
bENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApAQCAtMzc2LDYgKzM3NiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5
QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCisgICAgICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJl
Z2lzdGVySUQgc2NyYXRjaCk7CisgICAgICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVy
SUQgc2NyYXRjaCk7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBKdW1wIGJyYW5jaFN0
cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKik7
CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBjb25zdGFu
dCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJ
KHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAKICAgICBlbWl0TG9hZChyZXN1bHQsIHJlZ1QxLCBy
ZWdUMCk7CiAgICAgSnVtcCBub3RKU0NlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgbm90T2JqZWN0
ID0gZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMik7CisgICAgSnVtcCBub3RPYmplY3QgPSBlbWl0
SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCk7CiAKICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpSZXR1cm5QQywgcmVnVDIpOwogICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxlckZyYW1lLCBjYWxsRnJhbWVSZWdpc3Rlcik7CkBA
IC0yNDgsNyArMjQ3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2Rl
SQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKICAgICAgICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdUMSk7CiAgICAgICAgICAg
ICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKICAgICAgICAg
ICAgIHN0b3JlUHRyKHJlZ1QxLCBpbnN0cnVjdGlvbls2XS51LmFycmF5UHJvZmlsZS0+YWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAg
ICAgICAgIH0KQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9z
dXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3Rl
ZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDEp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTgw
MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAp
OwogICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0g
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMCk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMCwgaW5zdHJ1Y3Rpb25bNl0u
dS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QxKTsKKyAgICAgICAgICAgIHN0b3JlMzIocmVnVDEsIGluc3RydWN0aW9uWzZdLnUuYXJyYXlQ
cm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVn
VDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRh
YmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwg
cmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExp
bmtCdWZmCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyhN
YWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewotICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgIG1fc3Ry
dWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICBtX3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSk7CiAg
ICAgCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZlcnRpYmxlTG9hZFB0cigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogICAgIEFzc2VtYmxl
ckxhYmVsIG1fbG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1
bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1
bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKDEpKSk7CiAg
ICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNT
dHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVz
dDMyKFplcm8sIGRzdCkpOwpAQCAtNTUxLDcgKzU1MSw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjpjaGVj
a1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
cmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVybiBicmFuY2hT
dHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nh
c2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBpbnQg
dlJlZykKQEAgLTU5OSw5ICs1OTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVt
cFNsb3dUb0hvCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6
ZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZykKK0FMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxs
UmVnKQogewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC02NzIsMTEgKzY3MiwxMSBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dCksIHNjcmF0Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3MoYWxsb2NhdG9yLCBN
YXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAotICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRk
cmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKLQogICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgogICAgIHN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpKTsKKworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAg
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRj
aCk7CiB9CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC03MzEsMjYgKzczMSwyNiBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2Zp
bGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOyAvLyBXZSBoYWQgZm91bmQgdGhpcyBzY3JhdGNoIHJl
Z2lzdGVyIHVzZWZ1bCBoZXJlIGJlZm9yZSwgc28gSSB3aWxsIGtlZXAgaXQgZm9yIG5vdy4KKyAg
ICBSZWdpc3RlcklEIGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlOworICAgIFJlZ2lzdGVySUQg
aW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZTsKICAgICAKLSAgICBSZWdpc3RlcklE
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICBSZWdpc3RlcklEIGlu
ZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICAKLSAgICBpZiAoc2hv
dWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIGFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgeworICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Vs
bCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAgICBsb2FkOChBZGRyZXNzKGNlbGws
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOwogfQogCi1pbmxp
bmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KFJlZ2lz
dGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1Np
dGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBl
LCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoc3RydWN0dXJl
QW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2Zp
bGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChj
ZWxsQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVBy
b2ZpbGUoYnl0ZWNvZGVJbmRleCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIHNjcmF0Y2gsIDApOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoY2VsbEFuZEluZGV4
aW5nVHlwZSwgc2NyYXRjaCwgMCk7CiAjZW5kaWYKIH0KIApAQCAtMTI0NCw2ICsxMjQ0LDY1IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW0KIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRTdG9yZVN0cnVj
dHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEKQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgdWludDY0X3QgYmxvYlRvU3RvcmUgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50NjRfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cnVjdHVyZVB0
cikgKyBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpOworICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
YmV0dGVyLgorICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygp
LnR5cGUoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3Qs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSk7CisgICAgc3RvcmU4KFRydXN0ZWRJbW0z
MihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgIHN0b3JlUHRyKHN0cnVj
dHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZW5kaWYKK30KKworQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQor
ICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYmV0dGVyLgorICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUK
KyAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkp
OworCisgICAgLy8gU3RvcmUgdGhlIFR5cGVJbmZvIGlubGluZSBmbGFncworICAgIGxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKworICAgIC8v
IFN0b3JlIHRoZSBpbmRleGluZyB0eXBlCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7
CisgICAgc3RvcmU4KHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2Vs
bDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJ
RAorICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRI
YW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICByZXR1
cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGppdC5i
cmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQdHIo
Y29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDggKzI1Niw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
VmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI3Niw4ICsyNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAvLyBP
cHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAg
ICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3Rp
bGwgY29udGFpbnMgdmFsdWUuCkBAIC0yODcsNyArMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAv
LyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRy
b3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAgIEp1
bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBicmFu
Y2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTM0MywxMiAr
MzQxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwot
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zODcsOCArMzg1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAg
ICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwog
ICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtNDI3LDcgKzQyNCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJl
Z1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtNTU0
LDkgKzU1MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKIAog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVz
dDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCks
IHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1
bXAoKTsKQEAgLTU4MCw5ICs1NzYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhh
bmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0
aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAg
d2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNjM2LDggKzYzMSw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0
U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2Vu
ZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAg
ICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02ODAsOCArNjc1LDggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93
Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3Zt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdF
cSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTcxMSw4ICs3MDYsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
U3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJv
dGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3ROb3RT
dHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RDZWxs
LmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzY5LDEy
ICs3NjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAgSnVt
cCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAg
ICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTgwMCwxMiArNzk1
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNv
bXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC04NDQsMTAgKzgzOSw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0TG9h
ZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJ
bW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2Jq
ZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUg
dGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBj
YWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC05MDAsNyArODkzLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZvcihi
YXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtOTExLDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBj
YWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1
cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMp
KS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTE2NCw4ICsxMTU3LDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRoaXNS
ZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2lu
c3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE0OSw4ICsxNDgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0
IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
Zk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2Jq
ZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0
IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwg
Y29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDcg
KzE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAg
IC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBp
cyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3Zl
IGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3Qg
Z28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVn
VDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVn
VDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhp
cyk7CkBAIC0xODUsMTIgKzE4MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQo
SW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5r
KHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwog
ICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJl
Z1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1
YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjMyLDggKzIzMCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlw
ZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwog
ICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKICAgICAKQEAgLTI5NCw4ICsyOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0
X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlUmVnaXN0ZXIpOwogICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVS
ZWdpc3RlciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5v
dE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0
ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAKICAgICAv
LyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihKU1N0YWNrOjpSZXR1cm5QQywgcmVnVDEpOwpAQCAtMzMxLDcgKzMyNyw5IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90
SlNDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hTdHJ1Y3R1
cmUoTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgbV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
aXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtMzgzLDggKzM4MSw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBKdW1wIGlz
SW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICAvLyBGaXJzdCwg
aGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9u
IHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1Qw
LCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWwsIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdl
dCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1bXAoKTsK
QEAgLTQwNiw4ICs0MDQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rp
b24qCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwog
CiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5j
aFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAg
ICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwg
dGFyZ2V0KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAp
OwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAgd2Fz
Tm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNTAyLDEwICs1MDAsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihi
YXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShi
YXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0
KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICAgICAg
aXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpKTsKLSAgICB9Cisg
ICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLm9mZnNldCgpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUg
dGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBj
YWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC01NTksNyArNTU1LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwor
ICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOwogICAgIGNhbGxIYXNQ
cm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhBZGRyZXNz
KHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRT
dHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHByb3RvdHlwZSBjaGFpbgpAQCAt
NTcwLDcgKzU2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24K
ICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdU
MiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjYWxsSGFzUHJv
cGVydHkuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDIpKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1p
dExvYWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMSk7CiAgICAgY2FsbEhhc1Byb3BlcnR5
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzKSkpOwogICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0cnVjdHVyZSopKSwgcmVnVDMpOwogICAgIGJy
YW5jaFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhyZWdUMykpLmxpbmtUbyhjaGVja1Byb3RvdHlw
ZSwgdGhpcyk7CkBAIC03NDgsMTIgKzc0NCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxs
KEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7
CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9u
WmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCB3
YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJl
Z1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29tcGFyZVB0cihFcXVhbCwgcmVn
VDAsIHJlZ1QyLCByZWdUMCk7CkBAIC03ODAsMTIgKzc3NiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMx
LCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNo
VGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAg
ICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
cmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29tcGFyZVB0cihO
b3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC04NTEsMTEgKzg0NywxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZWdUMSk7CiAKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwogICAgIGxvYWRQ
dHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFpl
cm8sIHJlZ1QyKSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTkyNyw2ICs5MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9f
dGhpcyhJbnN0cnVjdGlvCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogCiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF90b190aGlzKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNvbnN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19M
SU5FX18pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgSWRl
bnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8gSWRlbnRpZmllcjo6ZnJvbShQ
cml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwogCkBAIC0xNjYsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25Jbk9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKU0NlbGwqIGJh
c2UsIFN0cmluZ0ltcGwqIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAgaWYgKCFiYXNl
LT5pc09iamVjdCgpKSB7CiAgICAgICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJ
bnZhbGlkUGFyYW1ldGVyRXJyb3IoZXhlYywgImluIiwgYmFzZSkpOwpAQCAtMTkyLDcgKzE5Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4KIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5KQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsK
IAogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAgICB2bS0+dGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJpbiIsIGJhc2UpKTsK
QEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlbmVyaWNJbihFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUga2V5KQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElO
RV9fKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgYmFzZSkpKTsKIH0KQEAgLTIx
NCw3ICsyMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNhbGxDdXN0b21HZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGZ1
bmN0aW9uLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgCkBAIC0yMjQsNyArMjI0LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBK
U0NlbGwqIGdldHRlclNldHRlcikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhbGxHZXR0ZXIoZXhlYywgYmFzZSwgZ2V0dGVyU2V0dGVyKSk7CiB9CkBAIC0y
MzIsNyArMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYQog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAg
ICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CkBAIC0yNDIs
NyArMjQyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpYwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAg
ICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwpAQCAtMjUy
LDcgKzI1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18p
OwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwpAQCAt
MjYyLDcgKzI2Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19M
SU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgp
KTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBs
KiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVp
ZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4o
c3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAg
SWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CkBAIC0zMTgsNyAr
MzE4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMzY0LDcgKzM2
NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19M
SU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNz
VHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vz
c1R5cGUpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkU3RyaWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0
QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRl
bnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18p
OwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OwpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
RGlyZWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0
QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBT
dHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRl
bnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGlubGlu
ZSBjaGFyKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGwKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBleGVjQ2FsbGVlLT5jYWxsZWVBc1ZhbHVlKCk7CiAgICAg
SlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1
ZSk7CkBAIC03MzUsNyArNzM1LDcgQEAgaW5saW5lIGNoYXIqIHZpcnR1YWxGb3JXaXRoRnVuY3Rp
b24oRXhlYwogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gZXhlY0NhbGxl
ZS0+Y2FsbGVlQXNWYWx1ZSgpOwogICAgIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5j
dGlvbihjYWxsZWVBc1ZhbHVlKTsKQEAgLTgyMCw3ICs4MjAsNyBAQCBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlTGVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIHJldHVy
biBqc0xlc3M8dHJ1ZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtODI4LDcgKzgyOCw3IEBAIHNpemVfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXMKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
T3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIHJl
dHVybiBqc0xlc3NFcTx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CkBAIC04MzYsNyArODM2LDcgQEAgc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlcwogc2l6ZV90IEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAog
ICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ay
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsKIH0KQEAgLTg0NCw3ICs4NDQsNyBAQCBz
aXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlCiBzaXplX3QgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVf
Xyk7CiAKICAgICByZXR1cm4ganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsKIH0KQEAgLTg1Miw3ICs4
NTIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlCiBzaXplX3Qg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRvQm9vbGVhbihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRvQm9vbGVhbihleGVjKTsKIH0K
QEAgLTg2MCw3ICs4NjAsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0
SlNWCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlRXEoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMsIF9fTElORV9fKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKIH0KQEAgLTg3Miw3ICs4NzIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlU3RyCiAjZW5kaWYKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBib29sIHJl
c3VsdCA9IGFzU3RyaW5nKGxlZnQpLT52YWx1ZShleGVjKSA9PSBhc1N0cmluZyhyaWdodCktPnZh
bHVlKGV4ZWMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04OTIsMjEgKzg5MiwyMSBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNQcm9wZXJ0CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBB
cnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGlu
dCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0
cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHByb2ZpbGUsIHZhbHVlcywgc2l6ZSkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVy
V2l0aFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9m
aWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5KGV4ZWMsIHByb2ZpbGUsIHZh
bHVlcywgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZSogcHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgc2l6ZSkKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7
CiAgICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoc2l6ZSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhTaXplUXVpcmsoZXhlYywgcHJv
ZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzaXplVmFsdWUpKTsKIH0KQEAgLTky
Miw3ICs5MjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5lCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIHJldHVybiBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwogfQpAQCAtMTMwOSw3ICsxMzA5
LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVXaWxsQwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNlKEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZVZhbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlVmFsKTsKQEAgLTEzOTksNyArMTM5OSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRTdWJzY3JpcHQpOwotICAgIAorCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYm
IHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgLy8gU2VlIGlmIGl0J3Mgd29ydGggb3B0
aW1pemluZyB0aGlzIGF0IGFsbC4KICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7CkBAIC0xNjcwLDcgKzE2NzAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0VG9TY29wZShFCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRXhjZXB0aW9uVmFsdWUpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywg
X19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwogICAgIHZtLT50aHJvd0V4Y2VwdGlvbihleGVjLCBl
eGNlcHRpb25WYWx1ZSk7CkBAIC0xNjgyLDcgKzE2ODIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9u
SGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSBl
eGNlcHRpb25WYWx1ZSA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAgIEFTU0VSVChleGNlcHRpb25W
YWx1ZSk7CkBAIC0xNjk0LDcgKzE2OTQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhj
ZXB0aW9uSGFuZGxlCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVk1IYW5kbGVFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIEFTU0VSVCghZXhlYy0+
aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CiAgICAgZ2VuZXJpY1Vud2luZCh2bSwgZXhlYywgdm0t
PmV4Y2VwdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODgsNyArODgsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0
dWJHZW5lCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWls
dXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoSlNDOjpicmFuY2hT
dHJ1Y3R1cmUoaml0LCBOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIAogICAgIC8vIExv
YWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRp
bmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJl
Z1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMSk7CkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgog
ICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDEpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhp
bmdTaGFwZU1hc2spLCByZWdUMSk7CiAKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBu
b3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpOwogICAgIGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdH
ZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hU
ZXN0UHRyKFplcm8sIHJlZ1QwKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rp
b24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKElu
ZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogICAgIApAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsK
KyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMik7CiAgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUlu
ZGV4KHJlZ1QyLCByZWdUMywgbV9ieXRlY29kZU9mZnNldCk7CiAgICAgfQogCkBAIC02MzQsNyAr
NjM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVt
aXRMb2FkUGF5bG9hZChpdGVyLCByZWdUMSk7CiAgICAgCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3Ry
dWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSks
IHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTczNCw3ICs3
MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAg
ZW1pdExvYWQoc2NvcGUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVTbG90
LCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHko
dWludHB0cl90KiBvcGVyYW5kU2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsMTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2Vu
ZQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7
Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0
dXJlKGppdCwKKyAgICAgICAgTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgdm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQg
dGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBq
aXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZz
ZXQoKSksIHJlZ1QyKTsKQEAgLTExMSw4ICsxMTQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKEluc3RydWN0aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwot
ICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBt
b3ZlKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJl
Z1QyLCByZWdUMywgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hh
cGVNYXNrKSwgcmVnVDIpOwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjA5LDcg
KzIxMiw5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBs
aW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAg
ICAgSnVtcCBub25DZWxsID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFz
ZSBhcnJheSBjaGVjawotICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0ciht
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5j
aFN0cnVjdHVyZShOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIGVtaXROYWtlZENhbGwoQ29kZUxvY2F0aW9uTGFiZWwobV92bS0+Z2V0Q1RJU3R1Yihz
dHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIEp1bXAgZmFpbGVkID0g
YnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCwgcmVnVDApOwpAQCAtMjgwLDcgKzI4NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9w
bmFtZShJbnN0cnVjdGkKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJh
c2UpOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2Fk
U3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJl
c3NGb3IoaSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAg
LTMyMSw4ICszMjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9u
CiAgICAgLy8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5kMzJU
b1B0cihyZWdUMSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MCwgYmFzZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1Qz
LCBwcm9maWxlKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZVdpdGhDZWxsKHJlZ1QyLCByZWdUMywgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3Rl
ZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDIpOwogICAgIAogICAgIFBhdGNoYWJsZUp1
bXAgYmFkVHlwZTsKQEAgLTUxOCw4ICs1MjMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBi
YXNlVlJlZyk7CiAgICAgCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVnVDEsIHJlZ1QyLCBtX2J5dGVj
b2RlT2Zmc2V0KTsKKyAgICAgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAgICAgICBlbWl0QXJy
YXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJlZ1QxLCByZWdUMiwgbV9i
eXRlY29kZU9mZnNldCk7CiAgICAgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCkBA
IC02OTgsNyArNzAzLDkgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGlu
dAogewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSkp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDEpKTsKKyAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEdl
dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkBAIC03NjAsNiArNzY3LDgg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKElucwogICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJl
c29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKKyAgICAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxs
T3BlcmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRGcm9tU2NvcGUsIGRzdCwgY3VycmVu
dEluc3RydWN0aW9uKTsKIH0KQEAgLTgyNCw2ICs4MzMsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X3RvX3Njb3BlKEluc3RyCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8
fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAo
cmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0
VG9TY29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KQEAgLTg3Niw3ICs4ODcsNyBAQCBKSVQ6
Okp1bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAgICAgICAgIHN0cnVjdHVyZS0+
YWRkVHJhbnNpdGlvbldhdGNocG9pbnQoc3R1YkluZm8tPmFkZFdhdGNocG9pbnQobV9jb2RlQmxv
Y2spKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihv
YmplY3QpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBvayA9IGJyYW5jaFB0cihFcXVhbCwgQWRk
cmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgSnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShFcXVhbCwgQWRk
cmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICBicmVha3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAjZW5kaWYKQEAg
LTg4NSw3ICs4OTYsNyBAQCBKSVQ6Okp1bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hl
CiAgICAgfQogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoKTsK
LSAgICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVy
biBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlKTsKIH0KIAogdm9pZCBKSVQ6OmFkZFN0cnVjdHVy
ZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgUmVnaXN0
ZXJJRCBzY3JhdGNoKQpAQCAtMTAyOSw3ICsxMDQwLDEzIEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0SW50VHlwZWRBcnJheUdldEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAg
Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
Y3JhdGNoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHB1c2gocmVnVDIpOworI2VuZGlm
CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwgc2NyYXRjaCwgcmVnVDIpOworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpIAorICAgIHBvcChyZWdUMik7CisjZW5kaWYKICAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFk
ZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3Rvcigp
KSwgYmFzZSk7CkBAIC0xMDk5LDggKzExMTYsMTQgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRG
bG9hdFR5cGVkQXJyYXlHZQogI2VuZGlmCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwot
ICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaCk7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHB1c2gocmVnVDIpOwor
I2VuZGlmCisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwgc2NyYXRjaCwgcmVnVDIpOworI2lm
IFVTRShKU1ZBTFVFMzJfNjQpIAorICAgIHBvcChyZWdUMik7CisjZW5kaWYKICAgICBiYWRUeXBl
ID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVy
ZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlw
ZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVy
dHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7
CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZl
Y3RvcigpKSwgYmFzZSk7CkBAIC0xMTUyLDcgKzExNzUsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEludFR5cGVkQXJyYXlQdXRCCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
ZWFybHlTY3JhdGNoKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBlYXJseVNjcmF0Y2gs
IGxhdGVTY3JhdGNoKTsKICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKGVhcmx5U2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICAKQEAgLTEyMTgsNyArMTI0MSw3
IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHUKICAgICAKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOworICAgIGVtaXRMb2FkU3RydWN0
dXJlKGJhc2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUp
KSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5
LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAko
cmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFj
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCi0gICAgICAgIEp1bXAgZW1pdEp1bXBJZk5v
dFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpTVHlwZSk7
CisgICAgICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCBzb3VyY2UsIFJlZ2lz
dGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElm
Tm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSk7CiAKICAgICAgICAgdm9pZCBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSwg
UmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKQEAgLTM5MSwxMCArMzkyLDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIH0KICNlbmRpZgogCi0gICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJ
VDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNl
UmVnLCBSZWdpc3RlcklEIHNjcmF0Y2hSZWcsIEpTVHlwZSB0eXBlKQorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUoUmVnaXN0ZXJJRCBzb3Vy
Y2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAg
bG9hZFB0cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3Jh
dGNoUmVnKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRj
aFJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBl
KSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisgICAg
ICAgIGxvYWRQdHIodm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBzY3JhdGNo
KTsgCisgICAgICAgIGxvYWRQdHIoQmFzZUluZGV4KHNjcmF0Y2gsIGRlc3QsIFRpbWVzRWlnaHQp
LCBkZXN0KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICAgICAg
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIGRlc3QpOworI2VuZGlmCisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBK
U0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUoUmVn
aXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJv
bSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTU4
MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5o
IgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkpJVC5oIgor
I2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKQEAg
LTY2LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENvZGVCbAog
ICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgc2xv
d1BhdGhGdW5jdGlvbik7CiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJlIGNoZWNrICYgdGhl
IG9mZnNldCBvZiB0aGUgbG9hZC4KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCksIHN0cnVjdHVyZSk7CisgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zm
c2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCksIHN0YXRp
Y19jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hCdWZmZXIuc2V0
TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZl
cnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQp
LCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlm
IChjb21wYWN0KQpAQCAtOTQsMTAgKzk3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRy
YW5zaXRpb25DaGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0aGlzIGNvZGUsIHRoZSBv
YmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBBc3NlcnQKICAgICAgICAg
Ly8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAg
ICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBvay5s
aW5rKCZqaXQpOwogI2VuZGlmCkBAIC0xMDYsMTAgKzEwOSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRT
dHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7CiAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZCgKLSAgICAgICAgaml0LmJyYW5jaFB0cigKKyAgICAgICAgYnJhbmNoU3RydWN0dXJl
KGppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVyZSkpOwog
fQogCiBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCkBAIC0xMjgsMTAg
KzEzMSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAKIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0
YXJnZXQpCiB7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1w
UmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZXBsYWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9m
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgKKyAgICAgICAg
ICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRk
cmVzcygKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgLShpbnRwdHJfdClzdHViSW5mby5w
YXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bCh0YXJnZXQpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwOSwxMCBAQCBzdGF0aWMg
dm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgCiAgICAg
U3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0yODIsOCArMjg4LDcgQEAgc3RhdGlj
IGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAKLSAgICAgICAgc3R1
YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsgCi0gICAgICAgIHN0dWJKaXQubG9hZDgoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3Qz
MihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihJc0FycmF5KSkpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQu
YnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOwogICAgICAgICAKQEAgLTQ2
OSw3ICs0NzQsMTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAog
ICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNvZGVCbG9jayk7CiAg
ICAgICAgIAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0cnVjdCA9IHN0dWJK
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCB3cm9uZ1N0cnVjdCA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
c3RydWN0dXJlKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBzdHJhdGVneSB3ZSB1c2UgZm9y
IHN0dWJzIGlzIGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEpIENhbGwgREZHIGhlbHBlciB0aGF0
IGNhbGxzIHRoZSBnZXR0ZXIuCkBAIC02ODIsMTAgKzY5MCwxMCBAQCBzdGF0aWMgdm9pZCBlbWl0
UHV0UmVwbGFjZVN0dWIoCiAgICAgICAgIHN0dWJKaXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsK
ICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBzdHViSml0
LmJyYW5jaFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBicmFu
Y2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgCiAjaWYgRU5B
QkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04MTEs
NyArODE5LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAg
ICAgIAogICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1Ykpp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
YnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBvbGRTdHJ1Y3R1cmUpKTsKICAgICAKICAgICBh
ZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVk
UHJvdG90eXBlKCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVy
ZUNhc2VzLApAQCAtODY5LDcgKzg4MCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9u
U3R1YigKICAgICAgICAgc2NyYXRjaEdQUjFIYXNTdG9yYWdlID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKKyAgICBERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRo
VHlwZUluZm8oc3R1YkppdCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQo
c2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmU2NCh2YWx1ZUdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5l
U3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICog
c2l6ZW9mKEpTVmFsdWUpKSk7CkBAIC0xMTgyLDEwICsxMTkzLDEwIEBAIHN0YXRpYyBib29sIHRy
eVJlcGF0Y2hJbigKICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAg
ICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwot
ICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0xMzEwLDEwICsxMzIxLDEwIEBAIHZvaWQg
bGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2EKICNlbmRpZgogICAgIAogICAgIHNs
b3dQYXRoLmFwcGVuZCgKLSAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5j
aFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUp
KTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRy
KApAQCAtMTM3OSwxNiArMTM5MCwxNiBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUq
IGV4ZWMsIENhCiB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxp
bmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
OwotICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJ
bmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6
Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9u
RGF0YUxhYmVsMzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJ
bW1Ub0NhbGwpOworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJl
cGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhz
dHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1
YkluZm8ucGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2lu
dGVyKSk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVj
dHVyZUxhYmVsLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNh
bGxUb0xvYWRPclN0b3JlKSwgMCk7CiAjZWxzZQpAQCAtMTQxMywxNiArMTQyNCwxNiBAQCB2b2lk
IHJlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXplZEZ1
bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0K
ICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9w
dGltaXplZEZ1bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJl
TGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQo
LShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKLSAgICBpZiAo
TWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KCkpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAor
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5w
YXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1
bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgeworICAgICAgICByZXBhdGNo
QnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
CisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAotICAgICAgICAgICAgICAgIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2lu
dGVyKSk7CiAgICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9p
bnRlcikpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTU4
MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC02NSwxNCArNjcsMTggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1l
bnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3Vt
ZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9m
YWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKCp0aGlzLCBOb3RFcXVhbCwgCisgICAgICAg
ICAgICAgICAgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3Rl
cklEIHNjcmF0Y2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJn
dW1lbnQsIGRzdCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVy
ZShkc3QsIHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRv
IHJlbG9hZCB0aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVkIGl0
LgorICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQs
IFJlZ2lzdGVySUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCkBAIC0xODQsNyArMTg1LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRMb2FkU3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9u
QXJnR1BSMiwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAg
ICAgICBqaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwK
QEAgLTEwMDIsOSArMTAwMyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJ
dGVyYXQKICAgICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQs
IEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSksIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OnJlZ1QxKTsKICAgICAKICAgICAvLyBQdWxsIG91dCB0aGUgYnV0dGVyZmx5IGZyb20gaXRl
cmF0ZWRPYmplY3QKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDIpOwotICAgIAotICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJ
VDo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QyKTsKICAgICAKICAgICBqaXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVN
YXNrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9VbnVzZWRQb2ludGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9VbnVzZWRQb2ludGVyLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9pbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCitzdGF0
aWMgY29uc3QgdWludHB0cl90IHVudXNlZFBvaW50ZXIgPSAweDA7CisjZWxzZQogc3RhdGljIGNv
bnN0IHVpbnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHhkMWU3YmVlZjsKKyNlbmRpZgogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE1ODAzMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDI0IEBAIG1hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVW5jaGUKICAgICAgICAgcGF5bG9hZCkKIGVuZAogCittYWNybyBz
dG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAg
c3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdCisKKyAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyAg
ICBzdG9yZWkgc2NyYXRjaCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXQorCisjICAgIGxv
YWRiIFN0cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBz
dG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXQorIworIyAgICBsb2Fk
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1tzdHJ1Y3R1cmVdLCBz
Y3JhdGNoCisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1fZmxhZ3NbY2VsbF0KKyMKKyMg
ICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVtzdHJ1Y3R1
cmVdLCBzY3JhdGNoCisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1fdHlwZVtjZWxsXQor
IworIyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0KK2Vu
ZAorCiBtYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQogICAgICMgTm90aGluZyB0byBk
bywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xs
ZWN0b3IuCiBlbmQKQEAgLTQyOSw3ICs0NDcsNyBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBs
b2FkaSA0W1BDXSwgdDAKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQwLCB0MiwgLm9wVG9UaGlz
U2xvdwpAQCAtNTEwLDcgKzUyOCw3IEBAIF9sbGludF9vcF9lcV9udWxsOgogICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKLSAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDBdLCB0MQogICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm9wRXFOdWxsTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBqbXAgLm9wRXFOdWxsTm90SW1t
ZWRpYXRlCkBAIC01NTcsNyArNTc1LDcgQEAgX2xsaW50X29wX25lcV9udWxsOgogICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcE5lcU51bGxN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAxLCB0MQogICAgIGptcCAub3BOZXFOdWxs
Tm90SW1tZWRpYXRlCkBAIC01ODQsOCArNjAyLDggQEAgbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlP
cGVyYXRpb24sIHNsb3dQYQogICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKICAgICBiaWIgdDIsIExv
d2VzdFRhZywgLnNsb3cKICAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZwotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDFdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QxXSwgdDMKICAgICBiYm5lcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0
cmluZwogICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
M10sIFN0cmluZ1R5cGUsIC5zbG93CiAubm90U3RyaW5nOgpAQCAtODU2LDcgKzg3NCw3IEBAIF9s
bGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpIDEyW1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2Vs
bFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQw
CiAgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0s
IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CiAg
ICAgZGlzcGF0Y2goNSkKIApAQCAtODcxLDcgKzg4OSw3IEBAIF9sbGludF9vcF9pbnN0YW5jZW9m
OgogICAgIGxvYWRpIDEyW1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwogICAg
IGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCkBAIC04NzksNyArODk3LDcgQEAgX2xsaW50
X29wX2luc3RhbmNlb2Y6CiAgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQy
ID0gdmFsdWUKICAgICBtb3ZlIDEsIHQwCiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDJdLCB0MgogICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W3QyXSwgdDIKICAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKICAgICBidGlu
eiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKQEAgLTkwNiw3ICs5MjQsNyBAQCBfbGxpbnRfb3BfaXNf
dW5kZWZpbmVkOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQogICAg
IGRpc3BhdGNoKDMpCiAub3BJc1VuZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEK
ICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KQEAgLTk0OSw3ICs5NjcsNyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykKICAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5vcElzU3RyaW5nTm90
Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQwCiAgICAgY2JlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgdDEKICAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQpAQCAtMTAxOCw3ICsx
MDM2LDcgQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgICAgIHQzLAog
ICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAg
ICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNs
b3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BH
ZXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgICAgICAgICBsb2Fk
aSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKICAgICAgICAgICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCkBAIC0xMDQ2LDcgKzEw
NjQsNyBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkaSA4W1BDXSwgdDAK
ICAgICBsb2FkcCAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQzLCAub3BHZXRBcnJheUxlbmd0aFNsb3cpCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0M10sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5
LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKICAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywg
Lm9wR2V0QXJyYXlMZW5ndGhTbG93CkBAIC0xMDkwLDcgKzExMDgsNyBAQCBtYWNybyBwdXRCeUlk
KGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAgICAgdDAsCiAgICAgICAgIHQzLAogICAgICAgICBt
YWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAgICAgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgICAgICAg
ICBsb2FkaSAyMFtQQ10sIHQxCiAgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0Miwgc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIoc2NyYXRjaCwgdDIp
CkBAIC0xMTE4LDcgKzExMzYsNyBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFs
Q2hlY2tzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENd
LCB0MgotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNs
b3cKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgLm9wUHV0QnlJZFNs
b3cKICAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAyMFtQQ10sIHQxCiAg
ICAgZ2V0UHJvcGVydHlTdG9yYWdlKApAQCAtMTEzMSw3ICsxMTQ5LDcgQEAgbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbdDNdCiAgICAgICAgICAgICBsb2FkaSAyNFtQQ10sIHQxCiAgICAgICAgICAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyh0
MCwgdDEsIHQyKQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCkBA
IC0xMTQ5LDcgKzExNjcsNyBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1
cmUsCiAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5kb25lCiAubG9vcDoKICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKICAgICBicG5l
cSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDQsIHNj
cmF0Y2gKICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0
cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCkBAIC0xMTc2LDcgKzExOTQsNyBAQCBfbGxpbnRfb3Bf
Z2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQQ10sIHQyCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRC
eVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQzCiAg
ICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCiAgICAgbG9hZGkgMTJbUENdLCB0MwpAQCAtMTI2
Miw3ICsxMjgwLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQogICAg
IGxvYWRpIDIwW1BDXSwgdDAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBsb2Fk
aSAyNFtQQ10sIHQwCiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MApAQCAtMTMwNSw3ICsxMzIz
LDcgQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qx
XSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQzCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDAp
CiAgICAgbG9hZGkgOFtQQ10sIHQwCkBAIC0xNDE3LDcgKzE0MzUsNyBAQCBtYWNybyBlcXVhbE51
bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGNl
bGxIYW5kbGVyKHQyLCBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
Ml0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykKIApAQCAtMTU0OCw3ICsxNTY2LDcgQEAgX2xs
aW50X29wX3N3aXRjaF9jaGFyOgogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dp
dGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0Mywg
dDIKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDEKICAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAg
ICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MApAQCAtMTU5Miw3ICsxNjEw
LDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5lZ2kgdDMKICAgICAg
ICAgYmluZXEgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCBDZWxs
VGFnLCAuZG9uZQogICAgICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdLCB0MAotICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDAKKyAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICAg
ICAgbG9hZHAgMjRbUENdLCB0MQogICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9s
YXN0U2VlblN0cnVjdHVyZVt0MV0KICAgICAuZG9uZToKQEAgLTE2NTksNyArMTY3Nyw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCkBAIC0xNjc1
LDcgKzE2OTMsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0
MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmlu
Z1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTE3MDQsNyArMTcyMiw3IEBAIF9s
bGludF9vcF9uZXh0X3BuYW1lOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQogICAgIGxvYWRpIDhbUENdLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAg
ICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0
Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE3
MTIsNyArMTczMCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wOgogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEK
ICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAg
ICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTE5ODQsNyAr
MjAwMiw3IEBAIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhd
LCB0MAogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsx
OTMsNDEgQEAgbWFjcm8gdmFsdWVQcm9maWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIGVu
ZAogZW5kCiAKK21hY3JvIGxvYWRTdHJ1Y3R1cmUoY2VsbCwgc3RydWN0dXJlKQorZW5kCisKK21h
Y3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dm1bc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0
dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gK
KyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxv
YWRwIFtzY3JhdGNoLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBsb2Fk
U3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKKyAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW2NlbGxdLCBjZWxsCisgICAg
bG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRh
YmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCisgICAgbG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0s
IHN0cnVjdHVyZQorZW5kCisKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGws
IHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURb
c3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3JlcSBzY3JhdGNoLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVj
dHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5
cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxs
OjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwg
SlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGkgU3RydWN0dXJlOjptX3N0cnVjdHVy
ZUlEW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFtjZWxsXQorZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0
ZXIuCiAKQEAgLTMxOSwxMCArMzU0LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAg
YnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbigyLCB0MikKLSAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0
MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpA
QCAtNDAzLDExICs0MzgsMTEgQEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAg
ICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgotICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QyXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRv
bmUKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MCwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2ds
b2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAtNzM0LDggKzc2OSw3IEBAIF9sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKQEAgLTc0NywyNCArNzgxLDIzIEBAIF9sbGludF9vcF9pbnN0YW5j
ZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5
cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0
VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xv
dykKICAgICAKICAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1
ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MgotICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJd
LCB0MgorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxv
YWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDNdLCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJ
bnN0YW5jZW9mRG9uZQogICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAK
ICAgICBtb3ZlIDAsIHQwCiAub3BJbnN0YW5jZW9mRG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwg
dDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2Zy
LCB0MywgOF0KICAgICBkaXNwYXRjaCg0KQogCkBAIC03ODQsMTcgKzgxNywxNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
CisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3Rv
cmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MV0sIHQxCi0gICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQz
Ci0gICAgb3JxIFZhbHVlRmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAg
ICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFs
dWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtODI3LDggKzg2MCw3IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQw
KQogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAg
IHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTg4MCwxNCArOTEy
LDE1IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBm
YXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdo
aWNoIGlzIHdoYXQKICAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQs
IHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNs
b3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MywgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQor
ICAgIGJwbmVxIHQyLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0
MikKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAg
IGxvYWRxIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAgICAgc3RvcmVx
IHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQpAQCAtOTEzLDcgKzk0Niw3IEBAIF9sbGludF9vcF9nZXRf
YXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MCwgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQw
KQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXog
dDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTk1MCwxNSAr
OTgzLDE2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKIG1hY3JvIHB1dEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEg
dDIsIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAg
dDAsCiAgICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNo
KQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgICAg
ICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkK
ICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KQEAgLTk4
Myw5ICsxMDE3LDEwIEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rp
b24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKKyAgICBi
cG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMs
IHQyKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikKLSAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNr
cyh0MSwgdDMpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGdldFByb3Bl
cnR5U3RvcmFnZSgKICAgICAgICAgdDAsCkBAIC05OTYsMTUgKzEwMzEsMTUgQEAgbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KHQxKQogICAgICAgICAgICAgc3RvcmVxIHQxLCBbdDNdCiAgICAgICAgICAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MSkKLSAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0KKyAgICAgICAgICAgIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwg
dDIpCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8g
bm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3Jv
IHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVj
dHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3Jh
dGNoKQogICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEw
MTMsNyArMTA0OCw4IEBAIG1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwK
ICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxs
LCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2Vs
bF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJv
dG9DZWxsLCBzY3JhdGNoMikKKyAgICBtb3ZlIHNjcmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgs
IHNjcmF0Y2gKICAgICBicW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmxvb3AKQEAgLTEwNDAsOCArMTA3Niw4IEBAIF9sbGludF9vcF9nZXRfYnlf
dmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIs
IHQzLCB0MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTEyNiw3ICsx
MTYyLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5UG5hbWVTbG93KQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwgdDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykK
ICAgICBicG5lcSB0MiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDFdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykK
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwpAQCAtMTE2OCw4ICsxMjA0
LDggQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQor
ICAgIG1vdmUgdDEsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0
MCwgdDMsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTEyNzgsOCArMTMxNCw4IEBAIG1hY3JvIGVxdWFs
TnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
ICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1l
ZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFu
ZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAu
dGFyZ2V0KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNl
bGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNo
KDMpCiAKIC50YXJnZXQ6CkBAIC0xNDExLDggKzE0NDcsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2No
YXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQx
LCB0YWdNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hD
aGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAg
YnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAtMTQ1Niw5ICsxNDkxLDkgQEAgbWFjcm8gYXJy
YXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5lZ3AgdDMKICAgICAgICAgbG9hZHEgVGhpc0Fy
Z3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmRvbmUKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJv
ZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KKyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDMKKyAgICAgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRFt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTUyMSw4
ICsxNTU2LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAg
ICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3Q6CkBAIC0xNTM3LDggKzE1NzEsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0
aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJ
c0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1NjgsNyArMTYw
MSw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0s
IHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc2LDcg
KzE2MDksNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGws
IC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwg
dDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBu
YW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3AKQEAgLTE4MDUsOCArMTgzOCw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Nj
b3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFj
cm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDcsMTMgKzI0NywxNCBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgp
CiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5k
ZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQotICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVj
dHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFu
ZEluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHBy
b2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAg
ICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAogICAgIGlmIFZBTFVF
X1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0
U2VlblN0cnVjdHVyZVtwcm9maWxlXQorICAgICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHNjcmF0Y2gKKyAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6
bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Byb2ZpbGVdCiAgICAgZW5kCi0gICAgbG9hZGIgU3RydWN0
dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAgICBsb2FkYiBK
U0NlbGw6Om1faW5kZXhpbmdUeXBlW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCiBtYWNybyBj
aGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQpAQCAtNDAwLDggKzQwMSw4IEBAIG1h
Y3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3QKICAgICAgICAgc3RvcmVwIHNj
cmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxsb2NhdG9yXQogICAgIAogICAgICAgICAj
IEluaXRpYWxpemUgdGhlIG9iamVjdC4KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxs
OjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbcmVzdWx0XQorICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhyZXN1bHQs
IHN0cnVjdHVyZSwgc2NyYXRjaDEpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSAKICAgICB7IAotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcmd1bWVudHNUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVt
QXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9udW1Bcmd1
bWVudHMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0Z1bmN0aW9uRXhlY3V0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7Cisg
ICAgICAgIHJldHVybiB0eXBlKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKICAgICB9CiAK
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1Q
YXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0Owog
CkBAIC02NjksNyArNjY5LDcgQEAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2
YWx1ZQogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+dHlw
ZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBQ
cm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02ODMsNyArNjgzLDcgQEAgaW5saW5lIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxl
Ojp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVU
eXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyktPnVubGlu
a0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5Myw3ICszOTMsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoCiAKIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
bmV3TGVuZ3RoLCBib29sIHRocm93RXhjZXB0aW9uKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
IGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgaWYgKCFuZXdMZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQyMiw3ICs0MjIsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChF
eGVjU3RhdGUqIGV4ZWMsCiAgICAgICAgICAgICBlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwgbmV3
TGVuZ3RoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAg
ICAgIGlmIChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tID4gbmV3
TGVuZ3RoOykKICAgICAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldID0gUU5hTjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIEpT
QXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAKIEpTVmFsdWUgSlNBcnJheTo6cG9w
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xh
c3M6CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAKQEAgLTUzOSw3ICs1
MzksNyBAQCBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAvLyAgLSBwdXNo
aW5nIHRvIGFuIGFycmF5IG9mIGxlbmd0aCAyXjMyLTEgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0
IHRocm93cyBhIHJhbmdlIGVycm9yLgogdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xh
c3M6IHsKICAgICAgICAgY3JlYXRlSW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCAwKTsKICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoLgpAQCAtNjc3LDcgKzY3Nyw3IEBAIGJvb2wgSlNBcnJheTo6
c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UKICAgICAKICAgICAvLyBJZiB0aGUgYXJyYXkgY29u
dGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRlLAogICAgIC8v
IHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCi0gICAgaWYgKG9s
ZExlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNlSW5kZXhp
bmdNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KQorICAgIGlmIChvbGRMZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBp
blNwYXJzZUluZGV4aW5nTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW9sZExlbmd0aCkKQEAgLTc1MSw3
ICs3NTEsNyBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPiAwKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKQEAgLTg0
OSw3ICs4NDksNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAK
ICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFu
IGFibm9ybWFsIHN0YXRlLAogICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJy
YXlQcm90b3R5cGUuCi0gICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVj
dG9yIHx8IHN0b3JhZ2UtPmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAobGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVt
VmFsdWVzSW5WZWN0b3IgfHwgc3RvcmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwgc2hvdWxkVXNlU2xv
d1B1dChpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wg
bW92ZUZyb250ID0gIXN0YXJ0SW5kZXggfHwgc3RhcnRJbmRleCA8IGxlbmd0aCAvIDI7CkBAIC04
ODYsNyArODg2LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQog
CiBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lk
ZWQ6CiAgICAgICAgIC8vIFdlIGNvdWxkIGhhbmRsZSB0aGlzLiBCdXQgaXQgc2hvdWxkbid0IGV2
ZXIgY29tZSB1cCwgc28gd2Ugd29uJ3QuCkBAIC05OTUsMjAgKzk5NSwyMCBAQCBzdGF0aWMgaW50
IGNvbXBhcmVCeVN0cmluZ1BhaXJGb3JRU29ydChjCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBh
cmUodmEtPnNlY29uZCwgdmItPnNlY29uZCk7CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2
b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBj
b21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERh
dGEpCiB7Ci0gICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBpbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhD
b250aWd1b3VzIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOworICAg
IEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBhcnJheUluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlX
aXRoQ29udGlndW91cyB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3Jh
Z2UpOwogICAgIAogICAgIHVuc2lnbmVkIGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsKICAg
ICB1bnNpZ25lZCBuZXdSZWxldmFudExlbmd0aDsKLSAgICBjb21wYWN0Rm9yU29ydGluZzxpbmRl
eGluZ1R5cGU+KAorICAgIGNvbXBhY3RGb3JTb3J0aW5nPGFycmF5SW5kZXhpbmdUeXBlPigKICAg
ICAgICAgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkLAogICAgICAgICBuZXdSZWxldmFudExl
bmd0aCk7CiAgICAgCi0gICAgQ29udGlndW91c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8
aW5kZXhpbmdUeXBlPigpOworICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdE
YXRhPGFycmF5SW5kZXhpbmdUeXBlPigpOwogICAgIAotICAgIGlmIChpbmRleGluZ1R5cGUgPT0g
QXJyYXlXaXRoQXJyYXlTdG9yYWdlICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQo
KSkgeworICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2Ug
JiYgYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CiAgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTcsNyAr
MTAxNyw3IEBAIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wgYWxsVmFsdWVzQXJlTnVtYmVycyA9IHRydWU7Ci0g
ICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBl
KSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToK
ICAgICAgICAgYnJlYWs7CkBAIC0xMDM5LDcgKzEwMzksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRO
dW1lcmljVmVjdG9yKEV4ZWNTdGF0CiAgICAgLy8gYWxzbyBkb24ndCByZXF1aXJlIG1lcmdlc29y
dCdzIHN0YWJpbGl0eSwgc2luY2UgdGhlcmUncyBubyB1c2VyIHZpc2libGUKICAgICAvLyBzaWRl
LWVmZmVjdCBmcm9tIHN3YXBwaW5nIHRoZSBvcmRlciBvZiBlcXVhbCBwcmltaXRpdmUgdmFsdWVz
LgogICAgIGludCAoKmNvbXBhcmUpKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0gICAgc3dp
dGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAg
ICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICAgICAgY29tcGFyZSA9IGNvbXBhcmVOdW1iZXJz
Rm9yUVNvcnRXaXRoSW50MzI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAg
dm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpYyhFeGVjU3RhdGUqIGV4ZQogewogICAgIEFTU0VSVCgh
aW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFy
cmF5Q2xhc3M6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xMTE1LDcgKzExMTUsNyBA
QCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ29udGlndW91c1R5cGVBY2Nlc3NvCiB9OwogCiAKLXRlbXBs
YXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgordGVt
cGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlw
ZT4KIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIENv
bnRpZ3VvdXNEYXRhPFN0b3JhZ2VUeXBlPiBkYXRhLCB1bnNpZ25lZCByZWxldmFudExlbmd0aCkK
IHsKICAgICBpZiAoIXJlbGV2YW50TGVuZ3RoKQpAQCAtMTEzOSwxMSArMTEzOSwxMSBAQCB2b2lk
IEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgYm9vbCBpc1NvcnRpbmdQ
cmltaXRpdmVWYWx1ZXMgPSB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxl
dmFudExlbmd0aDsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlw
ZUFjY2Vzc29yPGluZGV4aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7Ci0gICAgICAgIEFT
U0VSVChpbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsK
KyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRl
eGluZ1R5cGU+OjpnZXRBc1ZhbHVlKGRhdGEsIGkpOworICAgICAgICBBU1NFUlQoYXJyYXlJbmRl
eGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAg
QVNTRVJUKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKTsKICAgICAgICAgdmFsdWVzW2ldLmZpcnN0ID0g
dmFsdWU7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGlu
ZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMikKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdU
eXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiBhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJ
bnQzMikKICAgICAgICAgICAgIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IGlzU29ydGluZ1By
aW1pdGl2ZVZhbHVlcyAmJiB2YWx1ZS5pc1ByaW1pdGl2ZSgpOwogICAgIH0KICAgICAgICAgCkBA
IC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhl
Y1N0CiAgICAgCiAgICAgLy8gSWYgdGhlIHRvU3RyaW5nIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIGxl
bmd0aCBvZiB0aGUgYXJyYXkgb3IgdmVjdG9yIHN0b3JhZ2UsCiAgICAgLy8gaW5jcmVhc2UgdGhl
IGxlbmd0aCB0byBoYW5kbGUgdGhlIG9yaWduYWwgbnVtYmVyIG9mIGFjdHVhbCB2YWx1ZXMuCi0g
ICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBl
KSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToK
ICAgICBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6CkBAIC0xMTg0LDcgKzExODQsNyBAQCB2b2lk
IEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgY2FzZSBBcnJheVdpdGhB
cnJheVN0b3JhZ2U6CiAgICAgICAgIGlmIChhcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkg
PCByZWxldmFudExlbmd0aCkgewogICAgICAgICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhl
Yy0+dm0oKSwgcmVsZXZhbnRMZW5ndGgpOwotICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nl
c3NvcjxpbmRleGluZ1R5cGU+OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9y
YWdlKCktPnZlY3RvcigpKTsKKyAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJy
YXlJbmRleGluZ1R5cGU+OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdl
KCktPnZlY3RvcigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPmxl
bmd0aCgpIDwgcmVsZXZhbnRMZW5ndGgpCiAgICAgICAgICAgICBhcnJheVN0b3JhZ2UoKS0+c2V0
TGVuZ3RoKHJlbGV2YW50TGVuZ3RoKTsKQEAgLTExOTUsNyArMTE5NSw3IEBAIHZvaWQgSlNBcnJh
eTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJlbGV2YW50TGVuZ3RoOyBpKyspCi0gICAgICAgIENvbnRpZ3VvdXNUeXBlQWNj
ZXNzb3I8aW5kZXhpbmdUeXBlPjo6c2V0V2l0aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1
ZXNbaV0uZmlyc3QpOworICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5kZXhp
bmdUeXBlPjo6c2V0V2l0aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3Qp
OwogICAgIAogICAgIEhlYXA6OmhlYXAodGhpcyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMp
OwogfQpAQCAtMTIwNCw3ICsxMjA0LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAg
IHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVu
ZGVjaWRlZDoKICAgICAgICAgcmV0dXJuOwpAQCAtMTMzNiwxMSArMTMzNiwxMSBAQCBzdHJ1Y3Qg
QVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNvbXBhcmUgCiAgICAgc3RhdGljIGhhbmRsZSBudWxs
KCkgeyByZXR1cm4gMHg3RkZGRkZGRjsgfQogfTsKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZv
aWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1
bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQogewog
ICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7Ci0gICAgQVNTRVJUKGluZGV4aW5n
VHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgIEFTU0VSVChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMg
aWdub3JlcyBleGNlcHRpb25zIHJhaXNlZCBpbiB0aGUgY29tcGFyZSBmdW5jdGlvbiBvciBpbiB0
b051bWJlci4KICAgICAgICAgCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCB2b2lkIEpTQXJyYXk6OnNv
cnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgaWYgKG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5n
dGgoKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICB1bnNpZ25lZCB1c2VkVmVjdG9y
TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBlPigpOworICAgIHVuc2lnbmVkIHVz
ZWRWZWN0b3JMZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAg
ICB1bnNpZ25lZCBub2RlQ291bnQgPSB1c2VkVmVjdG9yTGVuZ3RoOwogICAgICAgICAKICAgICBp
ZiAoIW5vZGVDb3VudCkKQEAgLTE0MTcsMTQgKzE0MTcsMTQgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkOyArK2kpIHsK
ICAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAg
ICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAg
IGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKClbaV0gPSB0cmVlLmFic3RyYWN0b3IoKS5t
X25vZGVzWyppdGVyXS52YWx1ZS5hc051bWJlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjdXJyZW50SW5kZXhpbmdEYXRhKClbaV0uc2V0KHZtLCB0aGlzLCB0cmVlLmFic3RyYWN0b3Io
KS5tX25vZGVzWyppdGVyXS52YWx1ZSk7CiAgICAgICAgICsraXRlcjsKICAgICB9CiAgICAgLy8g
UHV0IHVuZGVmaW5lZCB2YWx1ZXMgYmFjayBpbi4KLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBBU1NF
UlQoZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQgPT0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hv
bGQpOwpAQCAtMTQ0MCwxMyArMTQ0MCwxMyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhl
Y1N0YXRlKiBleGVjCiAgICAgLy8gRW5zdXJlIHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVj
dG9yIGFyZSB6ZXJvZWQgb3V0LgogICAgIGZvciAodW5zaWduZWQgaSA9IHVuZGVmaW5lZEVsZW1l
bnRzVGhyZXNob2xkOyBpIDwgY2xlYXJFbGVtZW50c1RocmVzaG9sZDsgKytpKSB7CiAgICAgICAg
IEFTU0VSVChpIDwgYnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlm
IChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBidXR0ZXJm
bHkoKS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY3VycmVudEluZGV4aW5nRGF0YSgpW2ldLmNsZWFyKCk7CiAgICAgfQogICAgIAotICAg
IGlmIChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBp
ZiAoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgYXJyYXlTdG9yYWdl
KCktPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdVc2VkVmVjdG9yTGVuZ3RoOwogfQogCkBAIC0x
NDU0LDcgKzE0NTQsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
CiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lk
ZWQ6CiAgICAgICAgIHJldHVybjsKQEAgLTE0ODYsNyArMTQ4Niw3IEBAIHZvaWQgSlNBcnJheTo6
ZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiBleGUKICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0b3I7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTU0OCw3
ICsxNTQ4LDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAg
IHVuc2lnbmVkIHZlY3RvckVuZDsKICAgICAKICAgICBBU1NFUlQobGVuZ3RoID09IHRoaXMtPmxl
bmd0aCgpKTsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCkBAIC0xNjAzLDQwICsxNjAzLDQwIEBAIHZvaWQgSlNBcnJheTo6
Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSoKICAgICAgICAgY2FsbEZyYW1lLT5zZXRBcmd1bWVu
dChpLCBnZXQoZXhlYywgaSkpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0Fy
cmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZCYgbnVtRGVmaW5lZCwgdW5zaWduZWQmIG5l
d1JlbGV2YW50TGVuZ3RoKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7
Ci0gICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
OworICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAKLSAg
ICB1bnNpZ25lZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBl
PigpOworICAgIHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJh
eUluZGV4aW5nVHlwZT4oKTsKICAgICAKICAgICBudW1EZWZpbmVkID0gMDsKICAgICB1bnNpZ25l
ZCBudW1VbmRlZmluZWQgPSAwOwogICAgICAgICAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IG15
UmVsZXZhbnRMZW5ndGg7ICsrbnVtRGVmaW5lZCkgewogICAgICAgICBBU1NFUlQobnVtRGVmaW5l
ZCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRlcmZseS0+
Y29udGlndW91c0ludDMyKClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBBU1NFUlQodi5pc0ludDMyKCkp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpW251bURlZmluZWRdOwogICAgICAgICAgICAgaWYgKHYgIT0g
dikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVt
RGVmaW5lZF0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUlu
ZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8IHYuaXNV
bmRlZmluZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewog
ICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAg
IGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5
SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYg
PSBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV0uZ2V0KCk7CiAgICAgICAgICAgICBp
ZiAoIXYpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCB2
b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1
dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKHYpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBt
X2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0g
dikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NTMsMjMgKzE2NTMsMjMgQEAgdm9p
ZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgICAgICAgICAgbV9idXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkKytdID0gdjsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxp
bmRleGluZ1R5cGU+KClbaV0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0
YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5nZXQoKTsKICAgICAgICAgaWYgKHYpIHsKICAgICAg
ICAgICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgKytudW1VbmRlZmlu
ZWQ7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobnVtRGVmaW5l
ZCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgaW5kZXhp
bmdEYXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIodik7CisgICAgICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigp
W251bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICAgICAgCiAgICAgbmV3UmVsZXZhbnRMZW5ndGggPSBudW1E
ZWZpbmVkICsgbnVtVW5kZWZpbmVkOwogICAgIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5k
ZXhpbmdUeXBlKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAg
ICAgCi0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhp
bmdUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERv
dWJsZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVtRGVmaW5lZCA9PSBuZXdSZWxldmFudExl
bmd0aCk7CkBAIC0xNjc4LDE5ICsxNjc4LDE5IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNv
cnRpbmcodW5zaWduZWQKICAgICBkZWZhdWx0OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
dW1EZWZpbmVkOyBpIDwgbmV3UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgQVNT
RVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAgICAgaW5kZXhp
bmdEYXRhPGluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIGlu
ZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3UmVs
ZXZhbnRMZW5ndGg7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJU
KGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdU
eXBlID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91
YmxlKClbaV0gPSBRTmFOOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleGluZ0RhdGE8
aW5kZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJy
YXlJbmRleGluZ1R5cGU+KClbaV0uY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAoaGFzQXJyYXlT
dG9yYWdlKGluZGV4aW5nVHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUluZGV4
aW5nVHlwZSkpCiAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0g
bmV3UmVsZXZhbnRMZW5ndGg7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQ2VsbCkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSwganNjZWxsX2lzX2VpZ2h0X2J5dGVzKTsKIFNUQVRJQ19BU1NFUlRfSVNfVFJJ
VklBTExZX0RFU1RSVUNUSUJMRShKU0NlbGwpOwogCiB2b2lkIEpTQ2VsbDo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2
aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgog
I2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
SW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5m
by5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUu
aCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKQEAgLTkyLDkgKzk0LDExIEBAIHB1YmxpYzoK
ICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyopIGNvbnN0OwogICAgIGJvb2wgaXNB
UElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKIAorICAgIEpTVHlwZSB0eXBlKCkgY29uc3Q7CisgICAg
SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSgpIGNvbnN0OwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAg
ICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9CisgICAgdm9p
ZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0KIAogICAgIGNvbnN0IGNo
YXIqIGNsYXNzTmFtZSgpOwogCkBAIC0xMzUsMjAgKzEzOSwyNiBAQCBwdWJsaWM6CiAKICAgICBK
U1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKIAot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX3N0cnVjdHVyZUlEKTsKICAgICB9CiAKLSAgICB2b2lkKiBzdHJ1Y3R1cmVB
ZGRyZXNzKCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NPZmZzZXQoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0NlbGwsIG1fZmxhZ3MpOwogICAgIH0KLSAgICAgICAgCi0jaWYgRU5BQkxFKEdD
X1ZBTElEQVRJT04pCi0gICAgU3RydWN0dXJlKiB1bnZhbGlkYXRlZFN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCk7IH0KLSNlbmRpZgotICAgICAgICAKKwor
ICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3R5cGUpOworICAgIH0KKworICAgIHN0
YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdUeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX2luZGV4aW5nVHlwZSk7CisgICAgfQorCiAgICAg
c3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5
cGVkQXJyYXk7CiBwcm90ZWN0ZWQ6CiAKQEAgLTE3MCw4ICsxODAsMTIgQEAgcHJvdGVjdGVkOgog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAg
ICAgIAotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAgU3Ry
dWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5cGU7
CisgICAgSlNUeXBlIG1fdHlwZTsKKyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxh
Z3M7CisgICAgdWludDhfdCBtX3VudXNlZDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0
eXBlbmFtZSBGcm9tPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbElubGluZXMuaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0MiwxMSBA
QCBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUCiAgICAgQVNTRVJUKCFp
c0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0aGlzLCBzdHJ1
Y3R1cmUpCitpbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IG1fc3RydWN0dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV9pbmRleGluZ1R5
cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKKyAgICAsIG1fdHlwZShzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpKQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5s
aW5lVHlwZUZsYWdzKCkpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwog
fQpAQCAtNTYsNyArNTksNyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZN
JiB2CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAgICBBU1NFUlQobV9z
dHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZUlEKTsKIH0KIAogaW5saW5lIHZvaWQg
SlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVh
dGluZ0Vhcmx5Q2VsbFRhZykKQEAgLTY0LDIzICs2Nyw0MyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6
OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgQVNT
RVJUKHZtLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwogICAgIHZtLnNldEluaXRpYWxpemluZ09i
amVjdENsYXNzKDApOwotICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgaWYgKHN0cnVjdHVyZSkgewor
I2VuZGlmCisgICAgICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgICAg
IG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICAgICAgbV90
eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKTsKKyAgICAgICAgbV9mbGFncyA9IHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyNpZiBFTkFCTEUoR0NfVkFM
SURBVElPTikKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAg
ICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZSh2bSwgdGhpcywgc3RydWN0dXJlKTsKICAg
ICAvLyBWZXJ5IGZpcnN0IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEgcmVhbCBzdHJ1
Y3R1cmUuCi0gICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUp
OworICAgIEFTU0VSVChtX3N0cnVjdHVyZUlEIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwor
fQorCitpbmxpbmUgSlNUeXBlIEpTQ2VsbDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dHlwZTsKK30KKworaW5saW5lIEluZGV4aW5nVHlwZSBKU0NlbGw6OmluZGV4aW5nVHlwZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXhpbmdUeXBlOwogfQogCiBpbmxpbmUgU3RydWN0dXJl
KiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLmdl
dCgpOworICAgIHJldHVybiBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBNQVJLX0xPR19QQVJF
TlQodmlzaXRvciwgY2VsbCk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmY2VsbC0+bV9zdHJ1Y3R1
cmUpOworICAgIC8vIEZJWE1FOiBJdCdzIHNpbGx5IGFuZCBzb21ld2hhdCBkYW5nZXJvdXMgdG8g
aGF2ZSB0byBkbyB0aGlzIHRvIHNhdGlzZnkgU2xvdFZpc2l0b3IuCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTEx
NiwzNyArMTM5LDQxIEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkK
IAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c3RydWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90
eXBlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOworICAg
IHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpp
c0dldHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gR2V0
dGVyU2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IFByb3h5VHlw
ZTsKKyAgICByZXR1cm4gbV90eXBlID09IFByb3h5VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlND
ZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOworICAgIHJldHVybiBt
X3R5cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjpz
ZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQo
c3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSA9PSB0aGlzLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7
Ci0gICAgQVNTRVJUKCFtX3N0cnVjdHVyZQotICAgICAgICB8fCBtX3N0cnVjdHVyZS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAgICAgICB8fCBtX3N0cnVj
dHVyZS5nZXQoKSA9PSBzdHJ1Y3R1cmUpOwotICAgIG1fc3RydWN0dXJlLnNldCh2bSwgdGhpcywg
c3RydWN0dXJlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0aGlzLT5z
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOworICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCkK
KyAgICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFz
QmVlbkludmFsaWRhdGVkKCkKKyAgICAgICAgfHwgSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJl
SURUYWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVyZSk7CisgICAgdm0uaGVh
cC53cml0ZUJhcnJpZXIodGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3N0cnVjdHVyZUlEID0gc3Ry
dWN0dXJlLT5pZCgpOworICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5l
VHlwZUZsYWdzKCk7CisgICAgbV90eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKTsK
KyAgICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiB9CiAKIGlu
bGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZUZvckRlc3RydWN0aW9u
KCkgY29uc3QKQEAgLTE1NiwxMCArMTgzLDExIEBAIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSog
SlNDZWxsOjptZXRob2QKIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhv
ZFRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gbV9z
dHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKCk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVy
ZS0+c3RydWN0dXJlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0g
cm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOwogCi0gICAgcmV0dXJuICZjbGFzc0luZm8oKS0+
bWV0aG9kVGFibGU7CisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RU
YWJsZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8q
IGluZm8pIGNvbnN0CkBAIC0xNzMsMTAgKzIwMSwxMSBAQCBpbmxpbmUgYm9vbCBKU0NlbGw6Omlu
aGVyaXRzKGNvbnN0IENsYXNzCiAvLyBjYXNlIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGhhc2gg
aGFzIHlldCBiZWVuIHNldCBmb3IgdGhpcyBzdHJpbmcuCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
SlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRP
d25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSkgeworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7Cisg
ICAgaWYgKCFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
KCkgJiYgIXN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNIYXNoKCkKLSAgICAgICAg
ICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUp
KQotICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIG5hbWUpOworICAg
ICAgICAgICAgPyBzdHJ1Y3R1cmUtPmdldChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsIG5h
bWUpKQorICAgICAgICAgICAgOiBzdHJ1Y3R1cmUtPmdldChleGVjLT52bSgpLCBuYW1lKTsKICAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGFz
T2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5nZXQoKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
Myw3IEBAIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmYKIHsKICAgICBp
ZiAoTWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT5kZXN0cnVjdG9yVHlwZSgpID09IE1hcmtl
ZEJsb2NrOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Rlc3Ry
dWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsKLSNpZiBFTkFCTEUoR0NfVkFMSURB
VElPTikKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZv
KCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7Ci0jZW5kaWYK
KyAgICByZXR1cm4gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDkgQEAgc3RhdGljIHVuc2lnbmVk
IGxhc3RBcnJheVNpemUgPSAwOwogCiBKU0NlbGwqIGdldENhbGxhYmxlT2JqZWN0U2xvdyhKU0Nl
bGwqIGNlbGwpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUo
KTsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlw
ZSkKKyAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQogICAgICAgICByZXR1
cm4gY2VsbDsKLSAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKElu
dGVybmFsRnVuY3Rpb246OmluZm8oKSkpCisgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT5jbGFz
c0luZm8oKS0+aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAg
IHJldHVybiBjZWxsOwogICAgIHJldHVybiAwOwogfQpAQCAtMjQ4LDExICsyNDcsMTIgQEAgdm9p
ZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbAogICAgIAogICAgIEpTQ2VsbDo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCk7CiAgICAgQnV0dGVyZmx5KiBidXR0ZXJm
bHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICBpZiAoYnV0dGVyZmx5KQotICAgICAg
ICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplKCkpOworICAgICAgICB0aGlzT2JqZWN0LT52
aXNpdEJ1dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6
ZSgpKTsKIAotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT5pbmxpbmVTaXplKCk7CisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gc3RydWN0dXJlLT5pbmxp
bmVTaXplKCk7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+aW5saW5lU3Rv
cmFnZSgpLCBzdG9yYWdlU2l6ZSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yNzYsNyAr
Mjc2LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgIGlm
IChpID4gTUFYX0FSUkFZX0lOREVYKQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6
OmZyb20oZXhlYywgaSksIHNsb3QpOwogICAgIAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC00MTYs
NyArNDE2LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIAogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBi
cmVhazsKICAgICAgICAgCkBAIC01NjAsNyArNTYwLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVj
dDo6ZW50ZXJEaWN0aW9uYXJ5SQogCiB2b2lkIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJbmRl
eGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5L
X0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoK
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKQEAgLTU5NSwxMyArNTk1LDE0IEBA
IHZvaWQgSlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMKIEJ1dHRlcmZseSogSlNP
YmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0
aCwgc2l6ZV90IGVsZW1lbnRTaXplKQogewogICAgIEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlf
SU5ERVgpOwotICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7Cisg
ICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOwogICAg
IEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsK
LSAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICBB
U1NFUlQoIXN0cnVjdHVyZS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgQVNTRVJUKCFp
bmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IHN0
ZDo6bWF4KGxlbmd0aCwgQkFTRV9WRUNUT1JfTEVOKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRl
cmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAgICAgbV9idXR0
ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFj
aXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseSwgdm0sIHRoaXMsIHN0cnVjdHVy
ZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgMCwKICAgICAgICAgZWxl
bWVudFNpemUgKiB2ZWN0b3JMZW5ndGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0UHVibGljTGVu
Z3RoKGxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVu
Z3RoKTsKQEAgLTY0OSwxMCArNjUwLDExIEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6
Y3JlYXRlSW5pdGkKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZShW
TSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewogICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMt
PnN0cnVjdHVyZSgpOworICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBlKCk7
CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3BlcnRpZXMob2xkVHlw
ZSkpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVPckdy
b3dBcnJheVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgp
LCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCisgICAgICAgIG1f
YnV0dGVyZmx5LCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCksIGZhbHNlLCAwLAogICAgICAgICBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVu
Z3RoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0dGVyZmx5KTsKIApAQCAtNjYyLDcgKzY2
NCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmEKICAgICByZXN1
bHQtPm1fc3BhcnNlTWFwLmNsZWFyKCk7CiAgICAgcmVzdWx0LT5tX251bVZhbHVlc0luVmVjdG9y
ID0gMDsKICAgICByZXN1bHQtPm1faW5kZXhCaWFzID0gMDsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
KSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRp
b24oKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5l
d0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3NCwxNCArNjc2LDE0IEBA
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxBcnIKIAogQ29udGlndW91c0pT
VmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMihWTSYgdm0pCiB7Ci0gICAg
QVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBB
U1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgc2V0U3RydWN0dXJlKHZt
LCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9j
YXRlSW50MzIpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpOwog
fQogCiBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvRG91Ymxl
KFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGkt
LTspCiAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwpA
QCAtNjkyLDE2ICs2OTQsMTcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRV
bmRlYwogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0Nv
bnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUo
KSkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29u
c3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyhWTSYgdm0s
IHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRo
aXMtPnN0cnVjdHVyZSgpOwogICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0aCA9IG1fYnV0dGVyZmx5
LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0
dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0g
c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eUNhcGFj
aXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIHVuc2lnbmVkIHByb3Bl
cnR5U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOwogICAgIAogICAgIEJ1dHRlcmZs
eSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRpYWxpemVkKAogICAgICAg
ICB2bSwgdGhpcywgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXpl
Rm9yKG5lZWRlZExlbmd0aCkpOwpAQCAtNzI0LDcgKzcyNyw3IEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnN0cnVjdENvbnZlcnQKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRV
bmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFu
c2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZt
LmhlYXApOwotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAog
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFn
ZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CiAgICAgLy8gTm8gbmVl
ZCB0byBjb3B5IGVsZW1lbnRzLgpAQCAtNzQ2LDcgKzc0OSw3IEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRVbmRlY2lkZWQKIAogQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNv
bnZlcnRJbnQzMlRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlw
ZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpOyBpLS07KSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogY3VycmVudCA9
ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV07CkBAIC03NjYsNyArNzY5LDcgQEAg
Q29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMgogCiBDb250aWd1b3VzSlNW
YWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAg
QVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VS
VChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIHNldFN0cnVjdHVyZSh2bSwg
U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0
ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKQEAg
LTc3NCw3ICs3NzcsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQz
CiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZN
JiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExl
bmd0aCkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNv
bnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5l
ZWRlZExlbmd0aCk7CkBAIC04MDQsNyArODA3LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6
Y29udmVydEludDMyVG9BcgogdGVtcGxhdGU8SlNPYmplY3Q6OkRvdWJsZVRvQ29udGlndW91c01v
ZGUgbW9kZT4KIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5cGUo
KSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKTsgaS0tOykgewogICAgICAgICBkb3VibGUqIGN1cnJlbnQgPSAmbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtpXTsKQEAgLTg0NCw3ICs4NDcsNyBAQCBDb250aWd1b3VzSlNWYWx1
ZXMgSlNPYmplY3Q6OnJhZ2VDb252ZXJ0CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0
RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNp
dGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5o
ZWFwKTsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
OworICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJh
eVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRo
b3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tOykgewpAQCAtODczLDcgKzg3Niw3
IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0EKIEFycmF5U3RvcmFn
ZSogSlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Q
cm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewog
ICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQoaGFzQ29udGlndW91cyhz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzQ29udGlndW91cyhp
bmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNv
bnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5l
ZWRlZExlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xl
bmd0aCgpOyBpLS07KSB7CkBAIC05NTIsNyArOTU1LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjplbnN1cmVJbnQzMgogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1
cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGln
dW91c0pTVmFsdWVzKCk7CkBAIC05NzYsNyArOTc5LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNP
YmplY3Q6OmVuc3VyZURvdWJsZQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1
cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGln
dW91c0RvdWJsZXMoKTsKQEAgLTEwMDIsNyArMTAwNSw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBK
U09iamVjdDo6ZW5zdXJlQ29udGkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAg
ICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0
dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRp
Z3VvdXNKU1ZhbHVlcygpOwpAQCAtMTA0Miw3ICsxMDQ1LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09i
amVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsK
ICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5
SW5kZXhpbmdNb2RlKHZtKTsKQEAgLTEwNzYsNyArMTA3OSw3IEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJl
QXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJiB2bSkK
IHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzog
ewogICAgICAgICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApOwogICAgICAgICBTcGFyc2VB
cnJheVZhbHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsKQEAgLTExMDcs
NyArMTExMCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAog
dm9pZCBKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgQWxsb2NhdGVTbG93UHV0
QXJyYXlTdG9yYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTU0LDEwICsxMTU3LDEwIEBAIHZv
aWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEpTVmEKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKLSAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpCisgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5
cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChzaG91bGRVc2VTbG93UHV0KGlu
ZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaFRvU2xvd1B1
dEFycmF5U3RvcmFnZSh2bSk7CkBAIC0xMjA2LDEwICsxMjA5LDExIEBAIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IKICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJv
cGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMpKTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3Ry
dWN0dXJlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAgICAgICAgc3RydWN0
dXJlKCktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgIHN0cnVjdHVy
ZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKIAotICAgIHN0cnVjdHVyZSgpLT5z
ZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT51bmRlcnNjb3JlUHJvdG8pOworICAgIHN0cnVjdHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVBy
b3RvKTsKIH0KIAogYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTI3MCw3ICsxMjc0LDcgQEAgYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIGlmIChpID4gTUFYX0FS
UkFZX0lOREVYKQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7
CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NTQsNyArMTQ1OCw3IEBAIHZv
aWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAgICAvLyBGSVhNRTogRmls
bGluZyBQcm9wZXJ0eU5hbWVBcnJheSB3aXRoIGFuIGlkZW50aWZpZXIgZm9yIGV2ZXJ5IGludGVn
ZXIKICAgICAvLyBpcyBpbmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBsYXJnZSBhcnJheXMuIFdl
IG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsCiAgICAgLy8gd2hpY2ggYWxtb3N0IGNlcnRhaW5s
eSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5TmFtZUFycmF5LgotICAg
IHN3aXRjaCAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
IGJyZWFrOwpAQCAtMTYwNCwxOSArMTYwOCwyMCBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRp
Y0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChWTSYgdm0sIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHN0cnVj
dHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZS0+
Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUHJv
cGVydHlPZmZzZXQgb2Zmc2V0OwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkgewotICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+cmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKKyAgICBpZiAoc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CisgICAgICAgIG9mZnNldCA9IHN0cnVjdHVy
ZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBwdXREaXJlY3RVbmRlZmluZWQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7
CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwogICAgIGlmIChvZmZzZXQg
PT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHB1dERpcmVjdFVu
ZGVmaW5lZChvZmZzZXQpOwpAQCAtMTg0NSw3ICsxODUwLDcgQEAgYm9vbCBKU09iamVjdDo6YXR0
ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hh
cGU+CiB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0
dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIEFTU0VSVCgoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1h
c2spID09IGluZGV4aW5nU2hhcGUpOworICAgIEFTU0VSVCgoaW5kZXhpbmdUeXBlKCkgJiBJbmRl
eGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1No
b3VsZEJlU3BhcnNlKCkpOwogICAgIAogICAgIC8vIEZvciB1cyB0byBnZXQgaGVyZSwgdGhlIGlu
ZGV4IGlzIGVpdGhlciBncmVhdGVyIHRoYW4gdGhlIHB1YmxpYyBsZW5ndGgsIG9yIGdyZWF0ZXIg
dGhhbgpAQCAtMTk3NCw3ICsxOTc5LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9u
ZFZlY3RvckxlbgogICAgIC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJyYXkgaW5kZXggdGhhdCBp
cyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NFUlQoaSA8PSBNQVhfQVJS
QVlfSU5ERVgpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmIChpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpIHsK
ICAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdl
KApAQCAtMjA0Miw3ICsyMDQ3LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlv
bmRWZWN0bwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAgICAgLy8gaSBzaG91bGQg
YmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVj
dG9yLgotICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpOwogICAg
IEFTU0VSVChhcnJheVN0b3JhZ2UoKSA9PSBzdG9yYWdlKTsKICAgICBBU1NFUlQoaSA+PSBzdG9y
YWdlLT52ZWN0b3JMZW5ndGgoKSB8fCBhdHRyaWJ1dGVzKTsKICAgICBBU1NFUlQoaSA8PSBNQVhf
QVJSQVlfSU5ERVgpOwpAQCAtMjEyNCw3ICsyMTI5LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIGlmIChhdHRyaWJ1dGVzICYgKFJlYWRPbmx5IHwgQWNj
ZXNzb3IpKQogICAgICAgICBub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29ycyh2bSk7CiAg
ICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6
IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBhdHRyaWJ1dGVzKSB7
CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKApAQCAtMjI0OCw3ICsyMjUzLDcgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBKU09iamVjdDo6Z2V0TmV3VgogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aDsKICAgICB1bnNp
Z25lZCBsZW5ndGg7CiAgICAgCi0gICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5k
ZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgIHZlY3Rvckxlbmd0aCA9IG1fYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKTsKICAgICAgICAgbGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
OwogICAgIH0gZWxzZSB7CkBAIC0yMjg3LDcgKzIyOTIsNyBAQCB1bnNpZ25lZCBKU09iamVjdDo6
Y291bnRFbGVtZW50cyhCdXR0ZXJmCiAKIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1lbnRz
KCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIHJldHVy
biAwOwpAQCAtMjMyNiwxMCArMjMzMSwxMSBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rv
ckxlbmd0aChWTSYgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gZ2V0TmV3VmVjdG9y
TGVuZ3RoKG5ld0xlbmd0aCk7CiAKICAgICAvLyBGYXN0IGNhc2UgLSB0aGVyZSBpcyBubyBwcmVj
YXBhY2l0eS4gSW4gdGhlc2UgY2FzZXMgYSByZWFsbG9jIG1ha2VzIHNlbnNlLgorICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgaWYgKExJS0VMWSghaW5k
ZXhCaWFzKSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1
dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPmdyb3dBcnJheVJp
Z2h0KAotICAgICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKKyAgICAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUs
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgICAgIEFycmF5
U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3
VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV3QnV0dGVyZmx5KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjM0Myw3ICsyMzQ5LDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVh
c2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld0luZGV4QmlhcyA9IHN0ZDo6bWlu
KGluZGV4QmlhcyA+PiAxLCBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0gbmV3VmVjdG9yTGVu
Z3RoKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgp
LT5yZXNpemVBcnJheSgKICAgICAgICAgdm0sIHRoaXMsCi0gICAgICAgIHN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVu
Z3RoKSwKKyAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJh
eVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKICAgICAgICAgbmV3SW5kZXhCaWFzLCB0
cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CiAgICAgaWYgKCFu
ZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNTcsNyArMjM2Myw3IEBA
IGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKIHZvaWQgSlNPYmplY3Q6
OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJU
KGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhh
c1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFz
Q29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpIHx8
IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgp
KSk7CiAgICAgQVNTRVJUKGxlbmd0aCA+IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAg
ICAgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gc3RkOjptaW4oCkBAIC0yMzY1LDEx
ICsyMzcxLDEyIEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCAKICAg
ICAgICAgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAgICAgdW5zaWduZWQgb2xkVmVjdG9y
TGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgp
OwogICAgIG1fYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHktPmdyb3dBcnJheVJpZ2h0KAotICAgICAg
ICB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCB0cnVlLAorICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgIG9sZFZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSksCiAgICAgICAgIG5ld1ZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpOwotICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkg
eworICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsgaSA8IG5ld1ZlY3Rvckxlbmd0aDsgKytpKQogICAg
ICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5kYXRhKClbaV0gPSBRTmFO
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
aW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVlKQogewotICAgIGlmICh2
YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCisgICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2
YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKICAgICAgICAgcmV0dXJu
IHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiAwOwogfQpAQCAtMTMyLDE0ICsxMzIsMTQgQEAg
cHVibGljOgogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKQorICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPnB1Ymxp
Y0xlbmd0aCgpOwogICAgIH0KICAgICAgICAgCiAgICAgdW5zaWduZWQgZ2V0VmVjdG9yTGVuZ3Ro
KCkKICAgICB7Ci0gICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRl
eGluZ1R5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewot
ICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihtX2J1dHRlcmZseS0+Y29udGlndW91cygp
W2ldLmdldCgpLmFzSW50MzIoKSk7CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJ
TkdfVFlQRVM6CkBAIC0yMjYsNyArMjI2LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBKU1Zh
bHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgYnJlYWs7
CkBAIC0yNzksNyArMjc5LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGNhblNldElu
ZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExf
VU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHZvaWQgc2V0SW5k
ZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzog
ewogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwog
ICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgewpAQCAtMzY5LDcgKzM2OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplSW5kZXgoVk0mIHZtLCB1bnNpZ25lZCBp
LCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewogICAgICAgICAgICAgc2V0SW5kZXhR
dWlja2x5VG9VbmRlY2lkZWQodm0sIGksIHYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MTgs
NyArNDE4LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGhhc1NwYXJzZU1hcCgpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpAQCAtNDM1LDcgKzQzNSw3
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBpblNwYXJzZUluZGV4aW5nTW9kZSgpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpAQCAtNDkxLDMxICs0OTEs
MzUgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhl
IHByb3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09m
ZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAg
ICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0KG9mZnNldCkgOiBK
U1ZhbHVlKCk7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykgY29uc3QKICAgICB7CiAg
ICAgICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMp
OwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgICAgICBjaGVja09mZnNldChvZmZz
ZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgIH0K
IAogICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiAgICAgewotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGNoZWNr
T2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0
dXJuIG9mZnNldDsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNldCBnZXREaXJlY3RPZmZzZXQo
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykK
ICAgICB7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWMpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxp
bmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1
Y3R1cmUoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
dm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgICAgICBjaGVja09m
ZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVy
biBvZmZzZXQ7CiAgICAgfQogCkBAIC02NDEsNyArNjQ1LDcgQEAgcHVibGljOgogICAgIC8vIGNv
bnRpZ3VvdXMsIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVJ
bnQzMihWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0ludDMyKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0ludDMyKGluZGV4
aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJ
bnQzMigpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVJbnQzMlNsb3codm0p
OwpAQCAtNjUzLDcgKzY1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBvciBhcnJheSBzdG9yYWdlKS4K
ICAgICBDb250aWd1b3VzRG91YmxlcyBlbnN1cmVEb3VibGUoVk0mIHZtKQogICAgIHsKLSAgICAg
ICAgaWYgKExJS0VMWShoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisg
ICAgICAgIGlmIChMSUtFTFkoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKICAgICAgICAgICAgIAog
ICAgICAgICByZXR1cm4gZW5zdXJlRG91YmxlU2xvdyh2bSk7CkBAIC02NjMsNyArNjY3LDcgQEAg
cHVibGljOgogICAgIC8vIGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2Ugb3IgYmVjYXVzZSB3ZSdy
ZSBoYXZpbmcgYSBiYWQgdGltZS4KICAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW5zdXJlQ29udGln
dW91cyhWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGln
dW91cyhpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5j
b250aWd1b3VzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZUNvbnRpZ3Vv
dXNTbG93KHZtKTsKQEAgLTY3NCw3ICs2NzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXR0ZW1wdHMg
dG8gY29udmVydCBlYWNoIGRvdWJsZSB0byBhbiBpbnQzMi4KICAgICBDb250aWd1b3VzSlNWYWx1
ZXMgcmFnZUVuc3VyZUNvbnRpZ3VvdXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VM
WShoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBp
ZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogICAgICAgICAgICAgCiAgICAgICAgIHJl
dHVybiByYWdlRW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAtNjg2LDcgKzY5MCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhbHJlYWR5LgogICAgIEFycmF5U3RvcmFnZSogZW5zdXJlQXJyYXlTdG9y
YWdlKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0FycmF5
U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlQXJy
YXlTdG9yYWdlU2xvdyh2bSk7CkBAIC03MzQsNyArNzM4LDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IHN0b3JhZ2UuIFRoaXMgd2lsbCBhc3NlcnQgb3RoZXJ3aXNlLgogICAgIEFycmF5U3RvcmFnZSog
YXJyYXlTdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIEFTU0VSVChoYXNBcnJheVN0b3Jh
Z2UoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0
b3JhZ2UoKTsKICAgICB9CiAgICAgICAgIApAQCAtNzQyLDcgKzc0Niw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBvYmplY3QgaXMgaW4gYSBtb2RlIHdoZXJlIGl0IGhhcyBhcnJheSBzdG9yYWdlLgog
ICAgIEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlT3JOdWxsKCkKICAgICB7Ci0gICAgICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19U
WVBFUzoKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAg
ICAgICAgICAgICAgICAgCkBAIC04MDgsNyArODEyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
ZW5zdXJlTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgICAgIEFTU0VSVChoYXNDb250aWd1
b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB8fCBoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAg
IEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihpbmRleGlu
Z1R5cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoaW5k
ZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpIDwgbGVuZ3RoKQogICAgICAgICAgICAgZW5zdXJlTGVuZ3RoU2xvdyh2bSwg
bGVuZ3RoKTsKQEAgLTg0Niw3ICs4NTAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDb250aWd1b3Vz
SlNWYWx1ZXMgY3VycmVudEluZGV4aW5nRGF0YSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBj
YXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CkBAIC04NjMsNyArODY3LDcgQEAgcHJvdGVjdGVkOgog
ICAgIEpTVmFsdWUgZ2V0SG9seUluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0
dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCk7CkBAIC05MDMsNyArOTA3LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdW5zaWduZWQgY3VycmVudFJlbGV2YW50TGVuZ3RoKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTk3NSw2ICs5Nzks
MTEgQEAgcHJpdmF0ZToKICAgICAKIHByb3RlY3RlZDoKICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVy
Zmx5OworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV9w
YWRkaW5nOworI2VuZGlmCiB9OwogCiAvLyBKU05vbkZpbmFsT2JqZWN0IGlzIGEgdHlwZSBvZiBK
U09iamVjdCB0aGF0IGhhcyBzb21lIGludGVybmFsIHN0b3JhZ2UsCkBAIC0xMTAxLDM1ICsxMTEw
LDM1IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3QKIAogaW5saW5l
IGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFsT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CisgICAgcmV0
dXJuIHR5cGUoKSA9PSBHbG9iYWxPYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVj
dDo6aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKSA+PSBWYXJpYWJsZU9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUo
KSA+PSBWYXJpYWJsZU9iamVjdFR5cGU7CiB9CiAKIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
U3RhdGljU2NvcGVPYmplY3QoKSBjb25zdAogewotICAgIEpTVHlwZSB0eXBlID0gc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpOworICAgIEpTVHlwZSB0eXBlID0gdGhpcy0+dHlwZSgpOwog
ICAgIHJldHVybiB0eXBlID09IE5hbWVTY29wZU9iamVjdFR5cGUgfHwgdHlwZSA9PSBBY3RpdmF0
aW9uT2JqZWN0VHlwZTsKIH0KIAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNOYW1lU2NvcGVP
YmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IE5hbWVTY29w
ZU9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0FjdGl2YXRpb25PYmpl
Y3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBBY3RpdmF0aW9u
T2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBF
cnJvckluc3RhbmNlVHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBl
OwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQpAQCAtMTE5
MSwxMCArMTIwMCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmlubGluZUdldE93
CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljOwotICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
KTsKICAgICBpZiAoTElLRUxZKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkpIHsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCkt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNldHRlcigpKQor
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFs
dWUuaXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qo
c2xvdCwgdmFsdWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CkBAIC0x
MjczLDE1ICsxMjgzLDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bCgKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09
IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUuYXNJbmRleCgpID09
IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAKLSAgICBpZiAoc3RydWN0dXJlKCktPmlzRGlj
dGlvbmFyeSgpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
KTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbjsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rp
b24pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwg
cHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24p
OwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgICAgIC8v
IElmIHRoZXJlIGlzIGN1cnJlbnRseSBhIHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQgdGhlcmUgbm93
IGVpdGhlciBpc24ndCwKICAgICAgICAgICAgIC8vIG9yIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVy
ZW50LCB0aGVuIGRlc3BlY2lmeS4KICAgICAgICAgICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbiAmJiAoc3BlY2lmaWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCi0g
ICAgICAgICAgICAgICAgc3RydWN0dXJlKCktPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbih2
bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmRlc3BlY2lmeURp
Y3Rpb25hcnlGdW5jdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmICgobW9k
ZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTMwMiwzMyArMTMxMywzMyBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVy
Zmx5OwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFn
ZSgpKQotICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0s
IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVk
TmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVy
Zmx5KHZtLCBzdHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsKKyAgICAgICAgaWYgKHN0cnVjdHVy
ZS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgICAgICBuZXdCdXR0ZXJm
bHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsK
KyAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAg
ICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsK
IAogICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0
dXJlKCktPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2
YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVs
b3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0
TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFk
T25seSkKLSAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVy
dGllcygpOworICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVy
dGllcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpOwotICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSh0aGlzLT5zdHJ1Y3R1
cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQp
KSB7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKTsKKyAgICBpZiAoU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAg
RGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZs
eSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dP
dXRPZkxpbmVTdG9yYWdlKHZtLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSk7CisgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbmV3U3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091
dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxp
bmVDYXBhY2l0eSgpKTsKIAogICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwotICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwotICAgICAgICBzZXRT
dHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKKyAgICAg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAg
c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7
CiAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMg
aXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBu
b3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBh
biB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtMTMzOSw3ICsxMzUwLDcgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0
ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICBvZmZzZXQgPSBz
dHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
ICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzYwLDcgKzEzNzEsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVj
dDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNwZWNpZnksIGZhbGwgdGhyb3Vn
aCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lKSk7Cisg
ICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25U
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCkBAIC0x
MzcyLDcgKzEzODMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
CiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2libGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgdGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0LCBzbG90LmNvbnRleHQoKSk7
CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZz
ZXQsIHNsb3QuY29udGV4dCgpKTsKICAgICAKICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwog
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CkBAIC0xNDM2LDEw
ICsxNDQ3LDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKICAg
ICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNl
dHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdC
dXR0ZXJmbHkgPSBtX2J1dHRlcmZseTsKLSAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93
T3V0T2ZMaW5lU3RvcmFnZSgpKQotICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5l
U3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgp
LT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
dm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsK
LSAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJm
bHkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAg
aWYgKHN0cnVjdHVyZS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAgIG5l
d0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHN0cnVjdHVyZS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFj
aXR5KCkpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRDYWxs
YWJsZU9iamVjdCh2YWx1ZSkpOworICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAKICAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7CisgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKQEAgLTc3LDYgKzc3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1
Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9i
amVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9u
IDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3Ry
YWN0QWNjZXNzKEV4ZWNTdAogSlNPYmplY3QqIEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoSlNTY29w
ZSogc2NvcGUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHNjb3BlOwotICAgIGlmIChvYmpl
Y3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQorICAg
IGlmIChvYmplY3QtPnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQogICAgICAgICByZXR1cm4ganND
YXN0PEpTV2l0aFNjb3BlKj4ob2JqZWN0KS0+b2JqZWN0KCk7CiAKICAgICByZXR1cm4gb2JqZWN0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lv
biAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5m
byhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0
T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKSwgaW5mbygpKTsK
KyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9CkBAIC0xNzQsNiArMTc0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKU1ZhbHVlOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNSb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQpAQCAtNDk3LDcgKzQ5OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wg
aXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+
Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQorICAgIGlubGluZSBib29sIGlzSlNT
dHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPnR5cGUo
KSA9PSBTdHJpbmdUeXBlOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNUeXBlIHsKK2VudW0gSlNUeXBlIDogdWludDhfdCB7
CiAgICAgVW5zcGVjaWZpZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5cGUsCiAgICAgQm9vbGVhblR5
cGUsCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gSlNUeXBlIHsKICAgICBFcnJvckluc3RhbmNlVHlw
ZSwKICAgICBQcm94eVR5cGUsCiAgICAgV2l0aFNjb3BlVHlwZSwKKyAgICBBcmd1bWVudHNUeXBl
LAogCiAgICAgTmFtZVNjb3BlT2JqZWN0VHlwZSwKICAgICAvLyBWYXJpYWJsZU9iamVjdFR5cGUg
bXVzdCBiZSBsZXNzIHRoYW4gTU9TVCBvZiB0aGUgdHlwZXMgb2YgaXRzIHN1YmNsYXNzZXMgYW5k
IG9ubHkgaXRzIHN1YmNsYXNzZXMuCkBAIC02NCw2ICs2NSw4IEBAIGVudW0gSlNUeXBlIHsKICAg
ICBBY3RpdmF0aW9uT2JqZWN0VHlwZSwKIH07CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihKU1R5
cGUpID09IHNpemVvZih1aW50OF90KSwgc2l6ZW9mX2pzdHlwZV9pc19vbmVfYnl0ZSk7CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUHJvaGliaXRz
UHJvcGVydHlDYWNoaW5nID0gMSA8PCA5OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBIYXNJ
bXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDEwOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSA9IDEgPDwgMTE7CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDEyOwogCiAgICAgY2xhc3MgVHlwZUlu
Zm8gewogICAgIHB1YmxpYzoKQEAgLTY2LDcgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgICAgICBKU1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEpTVHlwZT4obV90eXBlKTsgfQotICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpID49IE9iamVjdFR5cGU7IH0KKyAgICAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIGlzT2JqZWN0KHR5cGUoKSk7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgaXNPYmpl
Y3QoSlNUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPj0gT2JqZWN0VHlwZTsgfQogICAgICAgICBi
b29sIGlzRmluYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gRmluYWxPYmplY3RU
eXBlOyB9CiAgICAgICAgIGJvb2wgaXNOdW1iZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gTnVtYmVyT2JqZWN0VHlwZTsgfQogICAgICAgICBib29sIGlzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIHR5cGUoKSA9PSBOYW1lSW5zdGFuY2VUeXBlOyB9CkBAIC04NCw2ICs4Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpIGNv
bnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKTsgfQog
ICAgICAgICBib29sIGhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpIGNvbnN0IHsgcmV0dXJu
IGlzU2V0T25GbGFnczIoSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KTsgfQogICAgICAgICBi
b29sIHN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihT
dHJ1Y3R1cmVIYXNSYXJlRGF0YSk7IH0KKyAgICAgICAgYm9vbCBzdHJ1Y3R1cmVJc0ltbW9ydGFs
KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihTdHJ1Y3R1cmVJc0ltbW9ydGFsKTsgfQog
CiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NPZmZzZXQoKQogICAgICAgICB7CkBAIC05
NSw2ICs5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihUeXBlSW5mbywgbV90eXBlKTsKICAgICAgICAgfQogCisgICAgICAgIHR5cGVkZWYg
dWludDhfdCBJbmxpbmVUeXBlRmxhZ3M7CisgICAgICAgIElubGluZVR5cGVGbGFncyBpbmxpbmVU
eXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJKHJldmlzaW9uIDE1ODAzMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgREVD
TEFSRV9JTkZPOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgog
ICAgIHR5cGVkZWYgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQzMl90PiBJ
bmRleFRyYWl0czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBAQCBib29s
IGpzSXNPYmplY3RUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAgaWYgKCF2LmlzQ2VsbCgp
KQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAotICAgIEpTVHlwZSB0eXBlID0gdi5hc0Nl
bGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpOworICAgIEpTVHlwZSB0eXBlID0g
di5hc0NlbGwoKS0+dHlwZSgpOwogICAgIGlmICh0eXBlID09IFN0cmluZ1R5cGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBlKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgJKHJldmlzaW9uIDE1ODAzMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8o
KSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKQEAgLTIwMiw2ICsyMDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNp
c3RlbmN5KCk7CiAjZW5kaWYKIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOworCiBwcml2YXRlOgogICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkpOwogICAgIFByb3BlcnR5VGFibGUoVk0mLCBKU0NlbGwqLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAko
cmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKExlYWZUeXBlLCAwKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExl
YWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIERFQ0xBUkVfSU5GTzsKQEAgLTg1LDYgKzg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0
ZXJuU3RyaW5nKTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCShyZXZp
c2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDZWxsOjpT
dHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6
U3RydWN0dXJlRmxhZ3M7CiAKIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lv
biAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTMgKzE1NSwxNCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVt
cFN0YXRpc3RpY3MoKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlw
ZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0
dXJlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpKQorICAgICwgbV9pbmRleGluZ1R5cGUoaW5kZXhp
bmdUeXBlKQorICAgICwgbV90eXBlSW5mbyh0eXBlSW5mbykKICAgICAsIG1fZ2xvYmFsT2JqZWN0
KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QsIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD46Ok1h
eUJlTnVsbCkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBt
X2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElu
aXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwg
bV90eXBlSW5mbyh0eXBlSW5mbykKLSAgICAsIG1faW5kZXhpbmdUeXBlKGluZGV4aW5nVHlwZSkK
ICAgICAsIG1faW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2RpY3Rpb25h
cnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxl
KGZhbHNlKQpAQCAtMTgzLDEyICsxODQsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6
c19pbmZvID0geyAiUwogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgOiBKU0Nl
bGwoQ3JlYXRpbmdFYXJseUNlbGwpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlwZSgwKQor
ICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIGpzTnVsbCgp
KQogICAgICwgbV9jbGFzc0luZm8oaW5mbygpKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkK
LSAgICAsIG1fdHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKQot
ICAgICwgbV9pbmRleGluZ1R5cGUoMCkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoMCkKICAgICAs
IG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUoZmFsc2UpCkBAIC0yMDUsMTIgKzIwNywxMyBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShWTSYgdm0pCiAKIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWN0
dXJlKiBwcmV2aW91cykKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlU3RydWN0dXJlLmdl
dCgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxv
Y2F0ZUlEKHRoaXMpKQorICAgICwgbV9pbmRleGluZ1R5cGUocHJldmlvdXMtPmluZGV4aW5nVHlw
ZUluY2x1ZGluZ0hpc3RvcnkoKSkKKyAgICAsIG1fdHlwZUluZm8ocHJldmlvdXMtPnR5cGVJbmZv
KCkudHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5mbGFncygpICYgflN0cnVjdHVyZUhhc1Jh
cmVEYXRhKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIHByZXZpb3VzLT5zdG9yZWRQcm90
b3R5cGUoKSkKICAgICAsIG1fY2xhc3NJbmZvKHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAs
IG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKICAgICAsIG1f
b2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHByZXZpb3VzLT50eXBlSW5m
bygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1Y3R1cmVIYXNS
YXJlRGF0YSkKLSAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5pbmRleGluZ1R5cGVJbmNs
dWRpbmdIaXN0b3J5KCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KHByZXZpb3VzLT5tX2lubGlu
ZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+bV9kaWN0aW9uYXJ5
S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMjIzLDYgKzIy
Niw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAsIG1f
ZGlkVHJhbnNpdGlvbih0cnVlKQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQocHJldmlv
dXMtPm1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKQogeworICAgIEFTU0VSVCghcHJldmlvdXMtPnR5
cGVJbmZvKCkuc3RydWN0dXJlSXNJbW1vcnRhbCgpKTsKICAgICBpZiAocHJldmlvdXMtPnR5cGVJ
bmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSAmJiBwcmV2aW91cy0+cmFyZURhdGEoKS0+bmVl
ZHNDbG9uaW5nKCkpCiAgICAgICAgIGNsb25lUmFyZURhdGFGcm9tKHZtLCBwcmV2aW91cyk7CiAg
ICAgZWxzZSBpZiAocHJldmlvdXMtPnByZXZpb3VzSUQoKSkKQEAgLTIzMyw2ICsyMzcsMTMgQEAg
U3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1YwogICAgICAgICBtX2dsb2Jh
bE9iamVjdC5zZXQodm0sIHRoaXMsIHByZXZpb3VzLT5tX2dsb2JhbE9iamVjdC5nZXQoKSk7CiB9
CiAKK1N0cnVjdHVyZTo6flN0cnVjdHVyZSgpCit7CisgICAgaWYgKHR5cGVJbmZvKCkuc3RydWN0
dXJlSXNJbW1vcnRhbCgpKQorICAgICAgICByZXR1cm47CisgICAgSGVhcDo6aGVhcCh0aGlzKS0+
c3RydWN0dXJlSURUYWJsZSgpLmRlYWxsb2NhdGVJRCh0aGlzLCBtX3N0cnVjdHVyZUlEKTsKK30K
Kwogdm9pZCBTdHJ1Y3R1cmU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAgIHN0YXRpY19j
YXN0PFN0cnVjdHVyZSo+KGNlbGwpLT5TdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNTgwMzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5z
aWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKIAorICAgIH5TdHJ1Y3R1cmUoKTsKKwogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTk1LDYgKzk3
LDggQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVibGljOgorICAgIFN0cnVjdHVyZUlEIGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsgfQorCiAgICAgc3RhdGljIHZvaWQgZHVtcFN0
YXRpc3RpY3MoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFk
ZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYsIFB1
dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQp
OwpAQCAtMzAxLDYgKzMwNSwxNCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKKyAgICB7CisgICAgICAgIC8vIFdlIGxvYWQgbV9z
dHJ1Y3R1cmVJRCwgbV9pbmRleGluZ1R5cGUsIGFuZCBtX3R5cGVJbmZvIGluIGEgc2luZ2xlCisg
ICAgICAgIC8vIDY0LWJpdCBpbnN0cnVjdGlvbiwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhl
eSdyZSBwcm9wZXJseSBhbGlnbmVkLgorICAgICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCkgPT0gOCk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlLCBtX3N0cnVjdHVyZUlEKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRy
ZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cnVjdHVyZSwgbV9wcm90b3R5cGUpOwpAQCAtNDY5LDcgKzQ4MSwxMyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZh
bFB1dEJ5SWQgPSA1MTI7CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50ID0gMzsKLSAgICAgICAgCisgICAgCisgICAgLy8gVGhlc2UgbmVl
ZCB0byBiZSBwcm9wZXJseSBhbGlnbmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlICdTdHJ1Y3R1
cmUnCisgICAgLy8gcGFydCBvZiB0aGUgb2JqZWN0LgorICAgIFN0cnVjdHVyZUlEIG1fc3RydWN0
dXJlSUQ7CisgICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOworICAgIFR5cGVJbmZvIG1f
dHlwZUluZm87CisKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2Jq
ZWN0OwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Byb3RvdHlwZTsKICAgICBtdXRhYmxl
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNoZWRQcm90b3R5cGVDaGFpbjsKQEAg
LTQ5Myw4ICs1MTEsNiBAQCBwcml2YXRlOgogICAgIC8vIG1fb2Zmc2V0IGRvZXMgbm90IGFjY291
bnQgZm9yIGFub255bW91cyBzbG90cwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogCi0g
ICAgVHlwZUluZm8gbV90eXBlSW5mbzsKLSAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5cGU7
CiAgICAgdWludDhfdCBtX2lubGluZUNhcGFjaXR5OwogICAgIAogICAgIENvbmN1cnJlbnRKSVRM
b2NrIG1fbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFk
KCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiksIGluZm8oKSk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERUNMQVJF
X0lORk87CiAKQEAgLTY0LDYgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJRFRhYmxlLmgiCisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU3RydWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbV9maXJz
dEZyZWVPZmZzZXQpIHsKKyAgICAgICAgU3RydWN0dXJlT3JPZmZzZXQgbmV3RW50cnk7CisgICAg
ICAgIG5ld0VudHJ5LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKworICAgICAgICBTdHJ1Y3R1cmVJ
RCByZXN1bHQgPSBtX3RhYmxlLnNpemUoKTsKKyAgICAgICAgbV90YWJsZS5hcHBlbmQobmV3RW50
cnkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIFN0cnVjdHVyZUlEIHJl
c3VsdCA9IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gbV90YWJs
ZVttX2ZpcnN0RnJlZU9mZnNldF0ub2Zmc2V0OworICAgIG1fdGFibGVbcmVzdWx0XS5zdHJ1Y3R1
cmUgPSBzdHJ1Y3R1cmU7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgcmV0dXJuIHN0
cnVjdHVyZTsKKyNlbmRpZgorfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJ
RChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCit7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBSRUxFQVNFX0FTU0VSVChtX3RhYmxlW3N0cnVjdHVyZUlEXS5z
dHJ1Y3R1cmUgPT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxlW3N0cnVjdHVyZUlEXS5vZmZzZXQg
PSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IHN0cnVjdHVyZUlE
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlKTsKKyAgICBVTlVTRURfUEFSQU0o
c3RydWN0dXJlSUQpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBTdHJ1Y3R1cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0dXJlSURUYWJsZV9oCisKKyNpbmNs
dWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCit0eXBlZGVm
IHVpbnQzMl90IFN0cnVjdHVyZUlEOworI2Vsc2UKK3R5cGVkZWYgU3RydWN0dXJlKiBTdHJ1Y3R1
cmVJRDsKKyNlbmRpZgorCitjbGFzcyBTdHJ1Y3R1cmVJRFRhYmxlIHsKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIFN0cnVjdHVyZUlEVGFibGUo
KQorICAgICAgICA6IG1fZmlyc3RGcmVlT2Zmc2V0KDApCisgICAgeworICAgICAgICAvLyBXZSBw
cmUtYWxsb2NhdGUgdGhlIGZpcnN0IG9mZnNldCBzbyB0aGF0IHRoZSBudWxsIFN0cnVjdHVyZQor
ICAgICAgICAvLyBjYW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFN0cnVjdHVyZUlEICcw
Jy4KKyAgICAgICAgYWxsb2NhdGVJRCgwKTsKKyAgICB9CisKKyAgICB2b2lkKiogYmFzZSgpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KKworICAgIFN0cnVj
dHVyZSogZ2V0KFN0cnVjdHVyZUlEKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUq
LCBTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUqKTsK
KworcHJpdmF0ZToKKyAgICB1bmlvbiBTdHJ1Y3R1cmVPck9mZnNldCB7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1cmVJRCBvZmZzZXQ7CisgICAgfTsKKwor
ICAgIHVpbnQzMl90IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIFZlY3RvcjxTdHJ1Y3R1cmVPck9m
ZnNldD4gbV90YWJsZTsKK307CisKK2lubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6
OmdldChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IHJldHVybiBtX3RhYmxlW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmU7CisjZWxzZQorICAgIHJldHVy
biBzdHJ1Y3R1cmVJRDsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIFN0cnVjdHVyZUlEVGFibGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxNTgwMzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNiArNDg3
LDkgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAorcHJvdGVjdGVkOgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRTeW1i
b2xUYWJsZShWTSYgdm0pCiAgICAgICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRTeW1ib2xUYWJs
ZVN0cnVjdHVyZS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcERhdGEuaAkocmV2aXNpb24gMTU4MDMwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIAogcHJpdmF0ZToKICAgICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215587</attachid>
            <date>2013-10-30 18:03:35 -0700</date>
            <delta_ts>2013-10-30 18:56:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131030180331.patch</filename>
            <type>text/plain</type>
            <size>322536</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0OCBA
QAorMjAxMy0xMC0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBm
cmVlIHVwIDMyIGJpdHMgb2Ygc3BhY2UgaW4gSlNDZWxsIGhlYWRlcnMsIHdoaWNoIHdlIGNhbiB1
c2UgZm9yIAorICAgICAgICBvdGhlciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBJbmRleGluZ1R5cGUs
IEpTVHlwZSwgSlNUeXBlSW5mbyB0eXBlIGZsYWdzLCBhbmQgCisgICAgICAgIGdhcmJhZ2UgY29s
bGVjdGlvbiBtZXRhZGF0YS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmJfcm0pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFN0cnVjdHVyZVB0cik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAg
ICAgICAqIGhlYXAvUmVnaW9uLmg6CisgICAgICAgICogaGVhcC9TdXBlclJlZ2lvbi5oOgorICAg
ICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6YmFzZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9v
YmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
bmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAo
SlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6
CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5o
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpn
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKKzw8PDw8PDwgLm1pbmUK
KzIwMTMtMTAtMjUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIEpTQ2VsbHMgaGF2ZSAzMi1iaXQgU3RydWN0dXJlIHBvaW50ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxOTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aE9uQWRkcmVzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlND
OjpSZXBhdGNoQnVmZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3RydWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21w
YXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90
aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
T2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxvY2F0b3IuaDoKKyAg
ICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAgICAgICAgKiBoZWFw
L0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAv
U3VwZXJSZWdpb24uaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAoSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmQ2VsbE5vdE9iamVjdCk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BD
YWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsTm90
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU09iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmJyYW5jaFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmJyYW5j
aFN0cnVjdHVyZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50
VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJl
Q2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpK
U0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6YWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExp
c3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAg
ICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0
cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFy
Z3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51
c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3Vt
ZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
Ojppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzaGlmdENvdW50
V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0
aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
bnlJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3Rv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNv
cnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6ZmlsbEFyZ0xpc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpzdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzUHJveHkpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmlzQVBJVmFsdWVXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc0luZm8pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxsYWJsZU9iamVjdFNs
b3cpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
SW5pdGlhbEluZGV4ZWRTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9J
bnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VX
aXRob3V0Q29weWluZ0VsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRV
bmRlY2lkZWRUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW5zdXJlQ29udGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVB
cnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJp
YnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
TmV3VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpjYW5TZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5k
ZXhRdWlja2x5Rm9yUHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4
UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppbml0aWFsaXplSW5kZXgpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aGFzU3BhcnNlTWFwKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmluU3BhcnNlSW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERp
cmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmFnZUVuc3VyZUNvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphcnJheVN0b3Jh
Z2VPck51bGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJlbnRJbmRleGluZ0RhdGEpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0SG9seUluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
dXJyZW50UmVsZXZhbnRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNHbG9iYWxP
YmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojppc1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omlz
QWN0aXZhdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Vycm9ySW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpUeXBl
SW5mbzo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1v
cnRhbCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6aWQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxv
Y2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVJRFRhYmxlOjpiYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6
Z2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrTWFwRGF0YS5oOgorCis9PT09PT09CiAyMDEzLTEwLTMwICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggQyBMb29wIExMSU5UIGJ1
aWxkLgpAQCAtNjQ5LDYgKzExOTQsNyBAQAogCiAgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogQWRkIG1pc3NpbmcgZmlsZXMgdG8gY29tcGlsYXRpb24uCiAKKz4+Pj4+Pj4gLnIxNTgzMjAK
IDIwMTMtMTAtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWZhY3RvciBwYXJzZXIgcm9sbGJhY2sgbG9naWMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzEw
LDYgKzcxMCw4IEBACiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAvKiBBUElDYWxsYmFja0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9Owog
CQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1
Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTdBNThFRTE4
MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJCTJBRDM1M0Q5MTgxNUMxMEIw
MDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFEMzUzREExODE1QzEwQjAwNjFFODE3IC8qIFN0cnVj
dHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFEODkzMkIxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhl
YXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyog
bGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwogCQk0MTM1
OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAv
KiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwpAQCAtMTk0MSw2ICsxOTQzLDggQEAKIAkJMjYwMEI1
QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUQzNTNE
ODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAv
KiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGliOyBwYXRoID0g
dXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJNDQ5MDk3RUUw
RjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzYzMiw2ICszNjM2LDggQEAKIAkJCQlBN0JEQUVDMzE3RjRFQTE0
MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCUE3QkRBRUM0MTdG
NEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAogCQkJCUE3QkRBRUM1MTdG
NEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJCQkyQUQzNTNENzE4MTVD
MTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFEMzUzRDgxODE1
QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
cnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MTEyLDYgKzQxMTgsNyBA
QAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RBMTgxNUMxMEIwMDYxRTgx
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNzE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29udmVudGlvbnMuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTQ0OSw2ICs1NDU2LDcgQEAKIAkJCQkxNDdGMzlENDEwN0VDMzc2MDA0
MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3RTQwQTQzMDc2
MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Rjk5MzYw
MEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJB
RDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVyUHJpdmF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQcm9t
aXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAvKiBK
U1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8vCi0gICAgLy8gQSBEYXRhTGFi
ZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGluIHRoZSBjb2RlIGNvbnRhaW5p
bmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwzMiBpcyB1c2VkIHRvIHJlZmVy
IHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIDMyLWJpdCBjb25zdGFudCB0
byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkLgog
ICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVB
c3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTks
NiArMzU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNo
UHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpKTsK
ICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxh
YmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisg
ICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMldpdGhQYXRjaChjb25k
LCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7CisgICAgfQorCiAgICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAgIHJldHVybiBQYXRjaGFi
bGVKdW1wKGp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzOSw2ICsyMzksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0
YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1
c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIGxl
ZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAgICBkYXRhTGFiZWwgPSBEYXRhTGFiZWwzMih0
aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihj
b25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVz
dGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAtMjU5LDYgKzI2Nyw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFj
ZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdp
c3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtMjgxLDYgKzI5
MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3Rh
bEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFi
ZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7Cisg
ICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNl
dEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAg
ICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNvZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBvZmZz
ZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBBU1NFUlQodG90YWxCeXRlcyA+PSBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9m
ZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1
bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewog
ICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIoaW5zdHJ1
Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90
Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMjkyLDYgKzMxMiwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGlu
aXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQg
cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9j
YXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgaW5p
dGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhZGRyZXNzLm9mZnNldCk7CisgICAg
ICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlv
blN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgMCwgYWRkcmVzcy5iYXNl
KTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICAvLyBGb3IgZGV0YWlscyBhYm91
dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLgogICAgIHZv
aWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjA5LDYgKzYwOSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBYODZSZWdp
c3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklE
IGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChh
ZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAgICAgICByZXR1cm4gWDg2
UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSAhPSBYODZSZWdpc3Rl
cnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVieDsKKworICAgICAg
ICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWN4KTsKKyAgICAgICAgcmV0
dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0KKwogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKQEAgLTYyOCw2
ICs2NDAsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4g
b25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5l
ZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAgICAgaWYgKHNyYyA+PSA0
KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lzdGVyLgorICAgICAgICAg
ICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRkcmVzcyk7CisKKyAgICAg
ICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBz
dG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAg
ICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNl
bmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQorCisg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7CkBA
IC01OTIsNiArNTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0
aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1t
MzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBwYWRCZWZv
cmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIoaW5pdGlhbFZhbHVlLm1f
dmFsdWUsIGRlc3QpOworICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOworICAgIH0K
KwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBkYXRh
TGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIp
OwpAQCAtNjA0LDYgKzYxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoMzJX
aXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJl
bDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJ
bW0zMigwKSkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmlnaHRWYWx1ZS5tX3ZhbHVlLCBsZWZ0Lm9m
ZnNldCwgbGVmdC5iYXNlKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7
CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAg
ICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CkBAIC02NDQsNiArNjY1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdp
c3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lz
dGVyOyB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAog
ICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25S
ZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtNjU1LDE2
ICs2NzcsMzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgt
dG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBz
dGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMy
IGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5
dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29k
ZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zm
c2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxh
YmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0
aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFu
Y2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisKKyAgICBzdGF0aWMgQ29k
ZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNz
KENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0
YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOworICAgIH0KICAgICAKICAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCB2b2lk
KiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBU
b19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVy
cHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVz
cyBhZGRyZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFz
ZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFu
Y2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0
ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgWDg2QXNzZW1ibGVyOjpy
ZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRj
aEJ1ZmZlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwpOwogICAgIH0KKworICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0
Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAg
ICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1w
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRl
c3RpbmF0aW9uKQogICAgIHsKQEAgLTE3NSw2ICsxODAsMTEgQEAgcHVibGljOgogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJX
aXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwogICAgIH0KIAorICAg
IHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goaW5zdHJ1
Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0KKwogcHJpdmF0ZToKICNpZiBFTkFC
TEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICB2b2lkKiBtX3N0YXJ0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTEgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBtb3ZiX3JtKFJlZ2lzdGVy
SUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zv
cm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdp
c3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2
aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3NiwyNSBAQCB2b2lkIGR1bXBBcnJh
eU1vZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayog
Y29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZSkKKyAgICBpZiAoIW1f
bGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fb2JzZXJ2
ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVy
ZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgp
LT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7CisgICAgbV9v
YnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVj
dHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKICAgICAg
ICAgJiYgaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJyYXlNb2RlcykpIHsKLSAgICAg
ICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNl
ZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyA9IGFycmF5TW9kZUZy
b21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgICAgICBtX2RpZFBlcmZvcm1GaXJz
dFJ1blBydW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4
ZWRBY2Nlc3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmlu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8o
KTsKKyAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93
blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0
cnVjdHVyZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlT
dHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlz
T3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkKKyAgICAgICAgJiYgIWds
b2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1
cmUpKQogICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwotICAg
IG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7
CiB9CiAKIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1
cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAx
NTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewog
cHVibGljOgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICwgbV9sYXN0U2Vl
blN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAg
ICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxz
ZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE0
Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAg
ICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpIHsg
cmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9
CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2Vy
dmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyBy
ZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5k
cygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlU3Ry
dWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0
cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3Ry
dWN0dXJlLT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKik7CkBAIC0xODgsNyAr
MTg4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBwb2x5bW9ycGhpY1N0cnVj
dHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7Ci0gICAg
U3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGU7IC8vIFRoaXMgZmxhZyBt
YXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0
IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBp
bmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUg
aW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBm
b3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9v
bCBtX291dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMg
OiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRleCkuZGF0YSgpOwogICAgIH0KIAor
ICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0KICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90bywgVHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0dXJlRmxh
Z3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVjdHVyZUZs
YWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0NSw3ICs1NDUsNyBAQCBwcml2YXRl
OgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHB1Ymxp
YzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDIzICsxMjIsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAobV9vcCA9
PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUp
OwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAgICAgICAg
ICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQsIGppdC0+
bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEFsYXMs
IHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcg
ZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBi
ZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAg
ICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Ci0gICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJh
eSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAgICAgICAgICAgIC8vIE5vdGUgdGhh
dCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3Vs
dCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGlu
ZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCiAgICAgICAgICAgICAv
LyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4K
ICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgbV9zdHJ1
Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAg
ICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUobV9zdHJ1
Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjQzLDcgKzI0MywyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1B0
cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVm
ZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7Cisj
ZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNo
U3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNl
CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNC
bG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dl
ZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lz
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsOCArMTM1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQu
bV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6
QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwor
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9u
IDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDkgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEpOwot
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5
cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNz
ZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJy
YXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAgICAgICAgICBtX2ppdC5t
b3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVz
cyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShy
ZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpZiAoIWlzS25vd25D
ZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRQYXls
b2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BS
KTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAg
ICAgIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0
ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBpZiAoIWlzS25vd25D
ZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIGJy
YW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtl
bik7CiAgICAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9i
YWxPYmplY3QuZ3ByKCk7CkBAIC0xMTYxLDE4ICsxMTYxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQy
KCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIg
PSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMTg0LDcgKzExODQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAg
LTEyMzgsMTAgKzEyMzgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCkBAIC0xMjY2LDEwICsxMjY2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwg
b3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTEzNDUsMTAgKzEzNDUsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IApAQCAtMTM3MiwxMCArMTM3MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVl
cEhvbGVPYmplCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxk
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIo
CkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RPck90aGUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKQEAgLTE2MjAsMTAgKzE2MjAsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAg
SlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIs
IHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUubGluaygmbV9qaXQp
OwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3VsdFRhZ0dQUik7CkBAIC0z
MTYzLDcgKzMxNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTM1MzAsNyArMzUzMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGhpc1Zh
bHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1
ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTM4MzIsMTIgKzM4MzIsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEJhZENhY2hl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwgMCwKICAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlz
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmU7
CiAgICAgICAgICAgICAKQEAgLTM4NjgsNyArMzg2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIG1faml0
LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNPSy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtMzg5
Nyw3ICszODk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRh
dGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdlbmVyaWNBY2Nlc3MpOwogI2VuZGlm
CiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
KTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAg
ICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQwNzcs
NyArNDA3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxh
dGUgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChu
b2RlKTsKQEAgLTQxMDYsNyArNDEwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1
bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0
Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5v
blplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
OwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpA
QCAtNDE1MCw3ICs0MTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9q
aXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgICAgIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5jb21w
YXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIo
KSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdU
eXBlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00MjA0LDcgKzQyMDQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhK
U1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGws
IGlzTm90Q2VsbCk7CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlT2JqZWN0KCkgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewot
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhwYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
SlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJp
bmcsIG5vdFN0cmluZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSwxMiArMjY5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGUKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3Qo
dGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93
bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5j
aFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
YXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNo
VGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3Rl
ZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAog
ICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0z
MigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1f
aml0Lmp1bXAoKTsKQEAgLTI4Myw2ICsyODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxv
Y2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0
R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5tb3ZlKEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG9wZXJh
bmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBlbWl0TG9h
ZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxl
cjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJl
c3VsdEdQUik7CiAgICAgfQpAQCAtMzMzLDE2ICszMzcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUds
b2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmdH
UFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIGlu
dmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxl
cjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAgICAgICAgIGludmVydCA/
IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQ
UiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iob3BlcmFuZC0+Y29k
ZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0
dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC0xNTE2LDQxICsx
NTI0LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQy
KCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAg
ICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQ
UiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTU4OSwyMSArMTU5MiwyMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAKICAgICBpZiAobWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGls
ZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0
dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
KTsKICAgICB9CiAgICAgCkBAIC0xNjE1LDIxICsxNjE3LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMg
YnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNw
ZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJl
R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApA
QCAtMTY5MiwyMSArMTY5MywyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVm
dENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KIApAQCAtMTcxOCwyMSArMTcx
OCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgLy8g
V2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2Vs
bC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xODQ5LDYgKzE4NDgsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOworICAg
IEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CkBAIC0xODU3LDMyICsxODU4LDM0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgLy8gVGhlIG1h
c3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0
ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCiAgICAgICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBv
ZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9j
YXRpb24uCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2godGhpcyk7CiAgICAgICAgIHN0cnVjdHVyZS5hZG9w
dChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc2NyYXRjaC5hZG9wdChyZWFsU2NyYXRjaCk7CiAg
ICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICAgICAgc2NyYXRjaEdQ
UiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVH
UFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKLQogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIs
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgZW1pdExvYWRTdHJ1
Y3R1cmUodmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIApAQCAtMjAwMSwzMSArMjAwNCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0T2JqZWN0T3JPdGhlckJyCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZVVzZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsK
KyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKworICAgIGlmICghbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBH
UFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlLmFkb3B0
KHJlYWxTdHJ1Y3R1cmUpOworICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7
CisgICAgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLQog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklU
Q29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAgIGVtaXRMb2FkU3Ry
dWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0
Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFs
T2JqZWN0T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5jb2Rl
T3JpZ2luKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygm
bV9qaXQpOwpAQCAtMzQ0Niw3ICszNDU5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVh
ZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwpAQCAtMzQ3MywxMCArMzQ4OSwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2ppdC5icmFuY2hUZXN0
NjQoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQ
UkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgbV9q
aXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAtMzY5
NSw3ICszNzExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRHUFIsIHN0b3Jh
Z2VHUFIpKTsKICAgICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBzdG9yYWdlR1BS
KTsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdU
eXBlKCkpOwotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0
R1BSLCBJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJH
UFIsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5
PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRj
aEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQ
UiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiAgICAgICAgICAgICBtX2pp
dC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAtMzgzMywxMSArMzg0OSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
dGhpc1ZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgbV9qaXQu
bG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAg
ICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwogICAgICAgICBtX2pp
dC5tb3ZlKHRoaXNWYWx1ZUdQUiwgdGVtcEdQUik7CiAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VK
IGZ1bmN0aW9uOwpAQCAtNDEyMiwyNCArNDEzNiwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXpl
KCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAg
ICBleGl0S2luZCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAsCi0g
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2Uu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdw
cigpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRv
bmU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9k
ZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKQotICAgICAgICAgICAgICAgIGRvbmUu
YXBwZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmUu
Z3ByKCksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CisgICAgICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShKSVRDb21waWxlcjo6RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
c3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKKyAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAorICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3Qo
KSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAg
ICAgfQpAQCAtNDE2MCw3ICs0MTcwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNPSyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJl
KCkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlzT0subGluaygmbV9q
aXQpOwogI2Vsc2UKQEAgLTQxODIsNyArNDE5NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5
Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQu
Y29kZUJsb2NrKCksIG5vZGUpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAogICAgICAgICAKICNpZiBFTkFC
TEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCkBAIC00MTkwLDcgKzQyMDUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHdyaXRlQmFycmllcihi
YXNlR1BSLCBub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSwgV3Jp
dGVCYXJyaWVyRm9yR2VuZXJpY0FjY2Vzcyk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIG1f
aml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVy
ZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+
c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBiYXNlR1BSLCBzY3JhdGNo
R1BSKTsgCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC00MzUxLDggKzQzNjYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogCiAgICAgICAg
IC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgot
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwotICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9q
aXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogCiAgICAgICAgIG5vUmVzdWx0
KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzODAsOCArNDM5NywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJ
VENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2
YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBu
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogCkBAIC00NDI4LDggKzQ0
NDcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVz
dDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3By
KCkpOwotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9q
aXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisg
ICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIAorICAgICAgICAgICAgcmVzdWx0
LmdwcigpKTsKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIApAQCAtNDQ2OCw4ICs0NDg5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVHlwZU9mOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pOwogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIo
KTsKICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmVK
dW1wczsKQEAgLTQ0ODMsOCArNDUwMiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZh
bHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAg
IGlmICghbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9
IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KFN0cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9
IG1faml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCAK
KyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJp
bmdUeXBlKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0
cmluZ1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZh
bHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0
cmluZ1N0cmluZygpKSwgcmVzdWx0R1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYwLDkgKzc2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9k
ZSogbm8KICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0g
ICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAg
ICAgQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwg
MCwKICAgICAgICAgICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9k
ZS0+YXJyYXlNb2RlKCkpKTsKQEAgLTc3MSw4ICs3NjksMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ug
QXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBBcmd1bWVudHM6
OmluZm8oKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCisgICAgICAgICAg
ICBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobV9j
dXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgogICAgICAgICBleHBl
Y3RlZENsYXNzSW5mbyA9IGNsYXNzSW5mb0ZvclR5cGUobm9kZS0+YXJyYXlNb2RlKCkudHlwZWRB
cnJheVR5cGUoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzgxLDggKzc4NSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICBSRUxFQVNFX0FTU0VSVChleHBl
Y3RlZENsYXNzSW5mbyk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAg
bV9qaXQubG9hZFB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXAuZ3ByKCkpOworICAgIEdQUlRlbXBvcmFy
eSB0ZW1wMih0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlUmVnLCB0ZW1wLmdwcigp
LCB0ZW1wMi5ncHIoKSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCiAgICAgICAgIG1faml0
LmJyYW5jaFB0cigKQEAgLTgxMiwxNiArODE2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFy
cmF5aWZ5KE5vZGUqIG5vZGUKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7
CiAgICAgCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAg
ICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgc2xvd1Bh
dGguYXBwZW5kKG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAg
ICBub2RlLT5zdHJ1Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQ
dHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAgICAgCiAgICAgICAgIG1f
aml0LmxvYWQ4KAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
R1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAogICAgICAgICBzbG93UGF0aC5hcHBlbmQo
anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkp
OwogICAgIH0KQEAgLTEzNTAsMjQgKzEzNTEsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
Ci0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCAKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIo
KSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
CiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ay
R1BSKSwgbm9kZS0+Y2hpbGQyKCksCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAor
ICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0g
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgR1BSUmVn
IHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKG9wMUdQUiwgc3Ry
dWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCkBAIC0xMzgyLDcgKzEzODQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKG9wMkdQUiwgc3RydWN0
dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCkBAIC0yNzkyLDE4ICsyNzk0LDE3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckYKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9k
ZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hS
ZWcpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2Rl
KiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJl
ZywgR1BSUmVnIHNjcmF0Y2gyUmVnKQogewogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlz
IGFuIG9iamVjdC4KLSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBy
b3RvdHlwZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwotICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
SWZOb3RPYmplY3Qoc2NyYXRjaFJlZykpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJl
ZykpOwogICAgIAogICAgIC8vIEluaXRpYWxpemUgc2NyYXRjaFJlZyB3aXRoIHRoZSB2YWx1ZSBi
ZWluZyBjaGVja2VkLgogICAgIG1faml0Lm1vdmUodmFsdWVSZWcsIHNjcmF0Y2hSZWcpOwogICAg
IAogICAgIC8vIFdhbGsgdXAgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgdmFsdWUgKGluIHNj
cmF0Y2hSZWcpLCBjb21wYXJpbmcgdG8gcHJvdG90eXBlUmVnLgogICAgIE1hY3JvQXNzZW1ibGVy
OjpMYWJlbCBsb29wKCZtX2ppdCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJl
Zyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRj
aDJSZWcpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBz
Y3JhdGNoUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3RhbmNlID0gbV9qaXQu
YnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoUmVnLCBwcm90b3R5cGVSZWcp
OwpAQCAtMjg0Miw5ICsyODQzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKE4KICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHBy
b3RvdHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcg
PSBzY3JhdGNoLmdwcigpOworICAgICAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5n
cHIoKTsKICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgR1BSUmVnIHZhbHVl
UmVnID0gdmFsdWUuZ3ByKCk7CkBAIC0yODYxLDcgKzI4NjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgICAgIAogICAgICAgICBpc0NlbGwubGluaygm
bV9qaXQpOwogICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9k
ZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hS
ZWcsIHNjcmF0Y2gyUmVnKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
CkBAIC0yODc3LDEyICsyODgwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKE4KICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAKICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2
YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigpOwog
ICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvck9i
amVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICBjb21w
aWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3Jh
dGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGpzVmFsdWVS
ZXN1bHQoc2NyYXRjaFJlZywgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CkBAIC00NTk4LDEx
ICs0NjAzLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQ
dHIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAg
ICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIAotICAgICAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUobm9kZS0+Y2hpbGQxKCksIHJlc3VsdEdQ
Uik7CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShub2RlLT5jaGls
ZDEoKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxW
YWx1ZUNlbGxPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIApAQCAtNDYyNywxMCArNDYz
NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewotICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVkQ2FsbCA9IG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNDgzMCwxMCArNDgzNywxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3QoRWRnCiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFu
ZC5ncHIoKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTQ4
NDIsMTQgKzQ4NDksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmpl
YwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFu
ZCh0aGlzLCBlZGdlKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgIEdQ
UlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1
Y3R1cmUuZ3ByKCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhn
cHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgIERGR19U
WVBFX0NIRUNLKAogICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdl
LCBTcGVjRmluYWxPYmplY3QsIG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiB9CiAKQEAg
LTQ4NjYsMTAgKzQ4NzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0
T3JPdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0
NjQoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3Rlcik7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKGdw
ciksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGlu
aygmbV9qaXQpOwogICAgIGlmIChuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNP
dGhlcikpIHsKQEAgLTQ4ODksMTAgKzQ4OTMsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlT2JqZWN0T3JPdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPQogICAg
ICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwg
cGF5bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxs
LmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBT
cGVjT3RoZXIpKSB7CkBAIC00OTEyLDEwICs0OTE2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU9iamVjdE9yT3QKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
ZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZywgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwg
ZWRnZSwgU3BlY1N0cmluZywgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcg
c3RvcmFnZSkKQEAgLTQ5NjgsNyArNDk3Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZyhFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2Jq
ZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGdwcikKIHsKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RG
b3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSk7CisgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVk
Z2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdl
IGVkZ2UpCkBAIC00OTk1LDE1ICs0OTk5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZ09yU3QKICAgICBpZiAoIW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmcg
fCBTcGVjU3RyaW5nT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEdQUlRlbXBv
cmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS5ncHIoKTsKLSAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5n
ID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICBKSVRDb21waWxlcjo6RXF1YWws
IAorICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwog
ICAgIAotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1
cmVHUFIpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAg
IAogICAgIGlzU3RyaW5nLmxpbmsoJm1faml0KTsKICAgICAKQEAgLTUyNjgsMTAgKzUyNjksMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBhZGRCcmFuY2goCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
LAogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAKICAgICAgICAgZW1p
dFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpLCB0ZW1wR1BS
KTsKQEAgLTU1NjgsMTAgKzU1NjksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aFN0cmluZyhObwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2goCi0gICAgICAg
ICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gp
OwogICAgICAgICAKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKGRhdGEsIG9wMVJl
Z3MucGF5bG9hZEdQUigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDcgKzcy
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgYm9vbCBub25TcGVjdWxhdGl2ZVN0
cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90
b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5kUmVzdWx0UmVnKTsKKyAgICB2b2lkIGNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5
cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5kUmVzdWx0UmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpOwog
ICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2YoTm9kZSopOwogICAgIAogICAgIHB0cmRpZmZfdCBj
YWxsZWVGcmFtZU9mZnNldChpbnQgbnVtQXJncykKQEAgLTIwNTYsNiArMjA1NiwxMTMgQEAgcHVi
bGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAgIH0KKworICAgIHZv
aWQgZW1pdExvYWRTdHJ1Y3R1cmUoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJS
ZWcgc2NyYXRjaEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQu
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIGRlc3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKG1faml0LnZtKCkt
PmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoR1BSLCBkZXN0R1BS
LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3RHUFIpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRl
c3RHUFIpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdExvYWRTdHJ1Y3R1
cmUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgZGVzdEdQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgZGVzdEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKGppdC52bSgpLT5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2hHUFIsIGRlc3RHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdEdQUik7CisjZWxzZQorICAgICAgICBVTlVTRURf
UEFSQU0oc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOwor
I2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmUoVHJ1c3RlZEltbVB0
ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0
IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihU
cnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICBt
X2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCisgICAgfQorCisgICAgdm9p
ZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUs
IEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcpCisgICAgeworICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8obV9qaXQsIHN0cnVjdHVyZSwgZGVzdEdQUik7CisgICAgfQorCisgICAg
dm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oR1BSUmVnIHN0cnVjdHVyZUdQUiwg
R1BSUmVnIGRlc3RHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAg
ICAgICAgbV9qaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhk
ZXN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNlCisgICAgICAgIC8v
IEZJWE1FOiBNYWtlIHRoaXMgYmV0dGVyLgorICAgICAgICAvLyBTdG9yZSB0aGUgdHlwZSBpbmZv
IGZsYWdzCisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVj
dHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
KyAgICAgICAgbV9qaXQuc3RvcmU4KHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3RHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSk7CisKKyAgICAgICAgLy8g
U3RvcmUgdGhlIEpTVHlwZQorICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpKTsKKworICAg
ICAgICAvLyBTdG9yZSB0aGUgaW5kZXhpbmcgdHlwZQorICAgICAgICBtX2ppdC5sb2FkOChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBl
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3RvcmU4KHNjcmF0Y2hHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgU3RydWN0dXJlSUQKKyAgICAgICAgZW1p
dFN0b3JlU3RydWN0dXJlKHN0cnVjdHVyZUdQUiwgZGVzdEdQUiwgc2NyYXRjaEdQUik7CisjZW5k
aWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUlu
Zm8oQ0NhbGxIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBHUFJSZWcgZGVz
dCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIHVpbnQ2NF90IGJsb2JUb1N0b3JlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDY0X3QqPihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJ1Y3R1cmVQ
dHIpICsgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKTsKKyAgICAgICAgaml0LnN0b3Jl
NjQoVHJ1c3RlZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVz
dCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICAvLyBGSVhN
RTogTWFrZSB0aGlzIGJldHRlci4KKyAgICAgICAgLy8gV2UgaGF2ZSB0byBjYXN0IHRvIHNpZ25l
ZCBiZWNhdXNlIHN0b3JlOCBnZXRzIG1hZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUg
c2lnbmVkIGNoYXIgcmFuZ2UuCisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkgPD0gMjU1KTsKKyAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkuaW5saW5lVHlw
ZUZsYWdzKCkpIDw9IDI1NSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
c3RydWN0dXJlUHRyLT5pbmRleGluZ1R5cGUoKSkgPD0gMjU1KTsKKworICAgICAgICBqaXQuc3Rv
cmU4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQ4X3Q+KHN0cnVjdHVyZVB0ci0+dHlwZUlu
Zm8oKS50eXBlKCkpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSk7CisgICAgICAgIGppdC5zdG9yZTgoVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDhfdD4oc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlu
bGluZVR5cGVGbGFncygpKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKyAgICAgICAgaml0LnN0b3Jl
OChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50OF90PihzdHJ1Y3R1cmVQdHItPmluZGV4aW5n
VHlwZSgpKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlND
ZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmUo
aml0LCBzdHJ1Y3R1cmUsIGRlc3QpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlKENDYWxsSGVscGVycyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVj
dHVyZSwgR1BSUmVnIGRlc3RHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0
dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworICAgICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIoc3RydWN0dXJlUHRyLT5pZCgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICBqaXQuc3RvcmVQ
dHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3Jl
U3RydWN0dXJlKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlMzIoc2NyYXRj
aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaEdQUik7Cisg
ICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVyZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9
CiAgICAgCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhIGNlbGwgb2YgYSBzcGVjaWZpYyBzaXplLgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGNh
biBiZSBHUFIgb3IgSW1tUHRyLgpAQCAtMjA3MSw3ICsyMTc4LDcgQEAgcHVibGljOgogICAgICAg
ICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxv
Y2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCiAg
ICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdzIFN0cnVjdHVyZS4KLSAgICAgICAgbV9q
aXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJl
V2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKICAgICB9CiAK
ICAgICAvLyBBbGxvY2F0b3IgZm9yIGFuIG9iamVjdCBvZiBhIHNwZWNpZmljIHNpemUuCkBAIC0z
MDEzLDggKzMxMjAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmpl
CiAgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUu
aXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNWYWx1
ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxvY2F0aW9uLCBUcnVzdGVkSW1tUHRy
KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVy
ZUxvY2F0aW9uLCBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkocmV2aXNpb24gMTU4
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBXZWFrQmxvY2s7CiAvLyBzaG9ydCBw
ZXJpb2RzIG9mIHRpbWUgYW5kIHRoZW4gZnJlZWluZyB0aGVtIG9uIGEgc2Vjb25kYXJ5IHRocmVh
ZC4KIAogY2xhc3MgQmxvY2tBbGxvY2F0b3IgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiBwdWJsaWM6CiAgICAgQmxvY2tBbGxvY2F0b3IoKTsKICAgICB+QmxvY2tB
bGxvY2F0b3IoKTsKQEAgLTU5LDYgKzYwLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiB2b2lkIGRlYWxsb2NhdGUoVCopOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkIGRlYWxsb2NhdGVDdXN0b21TaXplKFQqKTsKIAorICAgIFN1cGVyUmVnaW9uJiBzdXBlclJl
Z2lvbigpIHsgcmV0dXJuIG1fc3VwZXJSZWdpb247IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHdh
aXRGb3JSZWxhdGl2ZVRpbWVXaGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxhdGl2ZSk7CiAgICAg
dm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICNkZWZpbmUgQVNT
RVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBSRUxFQVNFX0FTU0VS
VChjZWxsKTtcCi0gICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUo
KS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgp
LT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpKTsgXAorICAg
IFJFTEVBU0VfQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSA9PSBjZWxsLT5z
dHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3aGlsZSAoMCkKIAog
I2RlZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE1ODMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NzQsNiArNzc0LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9n
ZwogCiAgICAgewogICAgICAgICBHQ1BIQVNFKFN0b3BBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9z
dHJ1Y3R1cmVJRFRhYmxlLmZsdXNoT2xkVGFibGVzKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uu
c3RvcEFsbG9jYXRpbmcoKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1hcmtlZFNwYWNl
LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllclN1cHBvcnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KQEAgLTE4Niw2ICsxODcsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgaXNEZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kZWZlcnJhbERlcHRo
OyB9CiAKKyAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CisgICAgICAg
IFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJldHVybiBtX3N0cnVjdHVy
ZUlEVGFibGU7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxv
Y2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRCbG9jazsKQEAgLTIzNiw3ICsyNDAsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IHNpemVBZnRlckNvbGxlY3QoKTsKIAog
ICAgICAgICBKU1N0YWNrJiBzdGFjaygpOwotICAgICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tB
bGxvY2F0b3IoKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5j
cmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgICAgICB2b2lkIGRlY3JlbWVudERlZmVycmFsRGVw
dGgoKTsKQEAgLTI1Niw2ICsyNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOwogICAgICAgICBCbG9ja0Fs
bG9jYXRvciBtX2Jsb2NrQWxsb2NhdG9yOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxlIG1fc3Ry
dWN0dXJlSURUYWJsZTsKICAgICAgICAgTWFya2VkU3BhY2UgbV9vYmplY3RTcGFjZTsKICAgICAg
ICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAgICAgICAgIEdDSW5jb21pbmdSZWZDb3Vu
dGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5QnVmZmVyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDIw
ICsyMjMsMjIgQEAgaW5saW5lIHZvaWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVdpdGhObwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQogewotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpIHsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQogICAgICAgICBtX25vcm1hbFNwYWNl
LnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1
bmN0b3IpOwotICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2Uu
aW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1f
bm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2Nr
KGZ1bmN0b3IpOwotICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmlt
cHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQogICAg
IG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1
bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkK
KyAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5m
b3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VB
bGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0u
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
U3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogCiAgICAgcmV0dXJu
IGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N1cGVyUmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U3VwZXJSZWdpb24uaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3VwZXJSZWdpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIFZNOwogCiBjbGFzcyBTdXBlclJlZ2lvbiA6IHB1YmxpYyBXVEY6
Ok1ldGFBbGxvY2F0b3IgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBwdWJsaWM6CiAgICAgU3VwZXJSZWdpb24oKTsKICAgICB2aXJ0dWFsIH5TdXBlclJlZ2lvbigp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDE1IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB7CiAg
ICAgcHVibGljOgorICAgICAgICBBTFdBWVNfSU5MSU5FIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcihW
TSogdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lLCBpbnQgbGluZU51bWJlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgVU5VU0VEX1BBUkFNKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgQVNTRVJU
KHZtKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsRnJhbWUpOworICAgICAgICAgICAgQVNTRVJU
KCFjYWxsRnJhbWUtPmhhc0hvc3RDYWxsRnJhbWVGbGFnKCkpOworICAgICAgICAgICAgdm0tPnRv
cENhbGxGcmFtZSA9IGNhbGxGcmFtZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyKFZNKiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCh2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwNiw5ICsyMDYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwYXlsb2FkRm9yKHN0YXRp
Y19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwogICAgIH0KIAotICAgIEp1bXAgYnJh
bmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKKyAgICBKdW1wIGJyYW5jaElmQ2Vs
bE5vdE9iamVjdChHUFJSZWcgY2VsbFJlZykKICAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g4
KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CisgICAgICAgIHJldHVybiBicmFuY2g4
KEJlbG93LCBBZGRyZXNzKGNlbGxSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBHUFJSZWcgc2Vs
ZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHBy
ZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVn
LCBHUFJSZWcgcHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDcgKzMxMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0
ZXJJRCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRl
eCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90T2JqZWN0
KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5v
dE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIEp1bXAgYWRkU3RydWN0dXJl
VHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
UmVnaXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9u
Q2hlY2soSlNDZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpAQCAtMzM1LDggKzMzNSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodW5zaWdu
ZWQsIFJlZ2lzdGVySUQpIHsgfQogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
UmVnaXN0ZXJJRCkgeyB9CiAjZW5kaWYKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdT
aXRlKFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0
Y2gsIEFycmF5UHJvZmlsZSopOwotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVG
b3JCeXRlY29kZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdp
c3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICB2b2lkIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7CisgICAgICAgIHZvaWQgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNl
bGxBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENh
c2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91
bmRzU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApAQCAtMzc2LDYgKzM3Niwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RN
b2RlIHsgTWF5QmVGaW5hbCwgS25vd25Ob3RGaW5hbCB9OwogCisgICAgICAgIHZvaWQgZW1pdFN0
b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBSZWdpc3RlcklE
IGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAgICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3Qs
IFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBKdW1w
IGJyYW5jaFN0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3Ry
dWN0dXJlKik7CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJh
bmRDb25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9wLCBpbnQzMl90
JiBjb25zdGFudCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwz
Ml82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsOCArNzUsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAKICAgICBlbWl0TG9hZChyZXN1bHQs
IHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBub3RKU0NlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAg
bm90T2JqZWN0ID0gZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMik7CisgICAgSnVtcCBub3RPYmpl
Y3QgPSBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCk7CiAKICAgICBlbWl0R2V0UmV0dXJu
UENGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKHJlZ1QyKTsKICAgICBlbWl0R2V0Q2FsbGVyRnJhbWVG
cm9tQ2FsbEZyYW1lSGVhZGVyUHRyKGNhbGxGcmFtZVJlZ2lzdGVyKTsKQEAgLTI0OCw4ICsyNDcs
OCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAg
ICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0
SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9
IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QxLCBpbnN0cnVjdGlv
bls2XS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QxKTsKKyAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QxLCBpbnN0cnVjdGlvbls2XS51
LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAg
ICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgfQogICAgIApAQCAtMzEyLDcgKzMxMSw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGwKICAgICBKdW1wTGlzdCBz
bG93Q2FzZXM7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNl
cy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVj
dXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw4ICsxNzcsOCBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBl
bWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgICAgIHN0
b3JlUHRyKHJlZ1QwLCBpbnN0cnVjdGlvbls2XS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFz
dFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOworICAgICAgICAgICAgc3RvcmUzMihy
ZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAgIH0KICAg
ICAKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2Fs
bChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBleHBlY3RlZFN0cnVjdHVyZSkp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0
ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMCArMTAxLDEwIEBAIHZvaWQg
SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmYKIAogdm9pZCBKSVRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIEdQUlJlZyBi
dXR0ZXJmbHkpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2goCisgICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwKLSAgICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCksIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIG1fc3RydWN0dXJlSW1tLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKICAgICAKICAgICBtX3Byb3BlcnR5U3RvcmFnZUxv
YWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBi
dXR0ZXJmbHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBKU1ZhbHVlUmVncyBtX2Jhc2U7CiAgICAg
SlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
UHRyIG1fc3RydWN0dXJlSW1tOworICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBtX3N0
cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVy
ZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3Bl
cnR5U3RvcmFnZUxvYWQ7CiAgICAgQXNzZW1ibGVyTGFiZWwgbV9sb2FkT3JTdG9yZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtODAsNyArODAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxG
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKQogewotICAgIGZh
aWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRk
cmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0KCkpLCBkc3QpOwog
ICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZHN0KSk7CkBAIC01NTEsNyAr
NTUxLDcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogCiBBTFdB
WVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhy
ZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAtNTk5LDkgKzU5OSw5IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8KICAgICBqdW1wLmxpbmtUbyht
X2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXRdLCB0aGlzKTsKIH0KIAot
QUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90T2JqZWN0KFJlZ2lzdGVy
SUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElm
Q2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0gICAgcmV0dXJuIGJyYW5jaDgo
QmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4gYnJhbmNoOChCZWxv
dywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKQEAg
LTY3MiwxMSArNjcyLDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3Qo
UmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CiAgICAgc3RvcmVQdHIo
c2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVl
TGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJl
Ci0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkg
c3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhy
ZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworCisgICAgLy8gaW5pdGlhbGl6
ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKQEAgLTczMSwyNiArNzMxLDI2IEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZSgKIH0KICNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAKLWlu
bGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVy
ZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxs
KFJlZ2lzdGVySUQgY2VsbEFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJh
eVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7IC8v
IFdlIGhhZCBmb3VuZCB0aGlzIHNjcmF0Y2ggcmVnaXN0ZXIgdXNlZnVsIGhlcmUgYmVmb3JlLCBz
byBJIHdpbGwga2VlcCBpdCBmb3Igbm93LgorICAgIFJlZ2lzdGVySUQgY2VsbCA9IGNlbGxBbmRJ
bmRleGluZ1R5cGU7CisgICAgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhp
bmdUeXBlOwogICAgIAotICAgIFJlZ2lzdGVySUQgc3RydWN0dXJlID0gc3RydWN0dXJlQW5kSW5k
ZXhpbmdUeXBlOwotICAgIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlQW5kSW5k
ZXhpbmdUeXBlOwotICAgIAotICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAg
IHN0b3JlUHRyKHN0cnVjdHVyZSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVj
dHVyZSgpKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmUzMihzY3JhdGNoLCBhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgfQogCi0gICAgbG9hZDgoQWRkcmVz
cyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5
cGUpOworICAgIGxvYWQ4KEFkZHJlc3MoY2VsbCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQo
KSksIGluZGV4aW5nVHlwZSk7CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmls
aW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK2lubGluZSB2
b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChS
ZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKIHsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gsIG1f
Y29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CisgICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGNlbGxBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gs
IG1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKLSAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgc2NyYXRjaCwgMCk7CisgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZShjZWxsQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCAwKTsKICNlbmRp
ZgogfQogCkBAIC0xMjQ0LDYgKzEyNDQsNjUgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dFRhZ0FzQm9vbEltbQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAorQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1Q
dHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQpCit7CisgICAgY29uc3Qg
U3RydWN0dXJlKiBzdHJ1Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihz
dHJ1Y3R1cmUubV92YWx1ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICB1aW50NjRfdCBibG9i
VG9TdG9yZSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oc3RydWN0dXJlUHRyKSArIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSk7CisgICAgc3RvcmU2NChUcnVzdGVkSW1tNjQoYmxvYlRvU3RvcmUpLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNl
bHNlCisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBiZXR0ZXIuCisgICAgc3RvcmU4KFRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkpOworICAgIHN0b3JlOChU
cnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpKTsKKyAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBl
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSk7CisgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorfQorCitBTFdB
WVNfSU5MSU5FIHZvaWQgSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0
ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgbG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
cnVjdHVyZSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAg
c3RvcmU2NChzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBiZXR0
ZXIuCisgICAgLy8gU3RvcmUgdGhlIEpTVHlwZQorICAgIGxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0
Y2gpOworICAgIHN0b3JlOChzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGUgVHlwZUlu
Zm8gaW5saW5lIGZsYWdzCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIHN0
b3JlOChzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSkpOworCisgICAgLy8gU3RvcmUgdGhlIGluZGV4aW5nIHR5cGUKKyAg
ICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOwor
CisgICAgLy8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECisgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
KTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK0pJVDo6SnVtcCBKSVQ6OmJy
YW5jaFN0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNp
ZGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tMzIoc3RydWN0
dXJlLT5pZCgpKSk7CisjZWxzZQorICAgIHJldHVybiBicmFuY2hQdHIoY29uZGl0aW9uLCBsZWZ0
SGFuZFNpZGUsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisjZW5kaWYKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitNYWNyb0Fzc2VtYmxlcjo6SnVtcCBicmFuY2hTdHJ1Y3R1cmUoTWFj
cm9Bc3NlbWJsZXImIGppdCwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICByZXR1cm4gaml0LmJyYW5jaDMyKGNvbmRpdGlvbiwgbGVmdEhhbmRT
aWRlLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vs
c2UKKyAgICByZXR1cm4gaml0LmJyYW5jaFB0cihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisjZW5kaWYKK30KKwogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTU4MzM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTYsOCArMjU2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2hlY2tfaGFz
X2luc3RhbmNlKElucwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlVmFsKTsK
ICAgICAKICAgICAvLyBDaGVjayB0aGF0IGJhc2VWYWwgJ0ltcGxlbWVudHNIYXNJbnN0YW5jZScu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIH0KIAogdm9pZCBKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtMjc2
LDggKzI3NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocHJvdG8pOwogICAgIAogICAgIC8vIENoZWNr
IHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QzKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0
SnVtcElmTm90T2JqZWN0KHJlZ1QzKSk7CisgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZkNlbGxO
b3RPYmplY3QocmVnVDEpKTsKIAogICAgIC8vIE9wdGltaXN0aWNhbGx5IGxvYWQgdGhlIHJlc3Vs
dCB0cnVlLCBhbmQgc3RhcnQgbG9vcGluZy4KICAgICAvLyBJbml0aWFsbHksIHJlZ1QxIHN0aWxs
IGNvbnRhaW5zIHByb3RvIGFuZCByZWdUMiBzdGlsbCBjb250YWlucyB2YWx1ZS4KQEAgLTI4Nyw3
ICsyODUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAKICAg
ICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIGNlbGwgaW4gcmVnVDIuICBJZiB0aGlzIGlz
IGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAgIC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUg
aGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4gZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBn
byBhZ2Fpbi4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMucGF5bG9hZCkpLCByZWdUMik7CiAgICAgSnVtcCBpc0luc3RhbmNlID0gYnJhbmNoUHRyKEVx
dWFsLCByZWdUMiwgcmVnVDEpOwogICAgIGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMikubGlu
a1RvKGxvb3AsIHRoaXMpOwpAQCAtMzQzLDEyICszNDEsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aXNfdW5kZWZpbmVkKEluc3RydWN0aQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKICAg
ICBpc0NlbGwubGluayh0aGlzKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25a
ZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIo
MCksIHJlZ1QwKTsKICAgICBKdW1wIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7
CiAgICAgCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJl
Z1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0
T2Zmc2V0KCkpLCByZWdUMSk7CiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDEsIHJl
Z1QwKTsKQEAgLTM4Nyw4ICszODUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19zdHJpbmcoSW5z
dHJ1Y3Rpb24qCiAgICAgZW1pdExvYWQodmFsdWUsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBp
c05vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmlu
Z1R5cGUpLCByZWdUMCk7CisgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1Qw
KTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNOb3RDZWxsLmxpbmsodGhp
cyk7CkBAIC00MjcsNyArNDI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKElu
c3RydWN0aQogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNJ
bW0gPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwog
CiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC01NTQsOSArNTUxLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIAogCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAot
ICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc05vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsK
ICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIG1hc3F1ZXJh
ZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAtNTgwLDkgKzU3Niw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbioKIAogICAgIEp1bXAgaXNJbW1l
ZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGFk
ZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0
YXJnZXQpOworICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7CkBA
IC02MzYsOCArNjMxLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2VxKEluc3RydWN0aW9uKiBj
dQogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90
IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2Vs
bAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2Uu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTY4
MCw4ICs2NzUsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVxKEluc3RydWN0aW9uKiBjCiAg
ICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1
YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0g
ICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBnZW5lcmljQ2FzZS5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKIAogICAgIC8vIFN0cmluZyBjYXNlLgogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCByZWdUMCwgcmVnVDIpOwpAQCAtNzExLDgg
KzcwNiw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJbnN0cnVjdGlvbioKIAogICAg
IC8vIEp1bXAgdG8gYSBzbG93IGNhc2UgaWYgYm90aCBhcmUgc3RyaW5ncy4KICAgICBKdW1wIG5v
dENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7Ci0gICAgSnVtcCBmaXJzdE5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRy
KEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgSnVtcCBmaXJzdE5v
dFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwogICAgIG5vdENlbGwubGluayh0aGlzKTsKICAgICBmaXJzdE5vdFN0
cmluZy5saW5rKHRoaXMpOwogCkBAIC03NjksMTIgKzc2NCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9lcV9udWxsKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDAp
OwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hU
ZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVz
dGVkSW1tMzIoMCksIHJlZ1QxKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QwLCBy
ZWdUMiwgcmVnVDEpOwpAQCAtODAwLDEyICs3OTUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVx
X251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAg
ICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMSk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
anVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdU
Mik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSks
IHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMCwgcmVn
VDIsIHJlZ1QxKTsKQEAgLTg0NCwxMCArODM5LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Bu
YW1lcyhJbnN0cnVjdGlvbgogICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAg
aWYgKCFtX2NvZGVCbG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShiYXNlKSkKICAgICAgICAgaXNO
b3RPYmplY3QuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgaWYgKFZpcnR1YWxSZWdpc3RlcihiYXNlKSAhPSBtX2Nv
ZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7
Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QyKTsKLSAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RPYmpl
Y3QocmVnVDIpKTsKLSAgICB9CisgICAgaWYgKFZpcnR1YWxSZWdpc3RlcihiYXNlKSAhPSBtX2Nv
ZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDAp
KTsKIAogICAgIC8vIFdlIGNvdWxkIGlubGluZSB0aGUgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHZh
bGlkIGNhY2hlLCBidXQKICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJlIGhvdC4K
QEAgLTkwMCw3ICs4OTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0
aW9uCiAgICAgbG9hZFB0cihwYXlsb2FkRm9yKGJhc2UpLCByZWdUMCk7CiAKICAgICAvLyBUZXN0
IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFw
cGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkp
KSkpOwogCiAgICAgLy8gVGVzdCBiYXNlJ3MgcHJvdG90eXBlIGNoYWluCkBAIC05MTEsNyArOTA0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIExhYmVs
IGNoZWNrUHJvdG90eXBlKHRoaXMpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNo
MzIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpOdWxsVGFnKSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpw
cm90b3R5cGVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSksIHJlZ1QyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzKSkpOwogICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0cnVjdHVyZSopKSwgcmVnVDMpOwogICAgIGJyYW5jaFRl
c3RQdHIoTm9uWmVybywgQWRkcmVzcyhyZWdUMykpLmxpbmtUbyhjaGVja1Byb3RvdHlwZSwgdGhp
cyk7CkBAIC0xMTY0LDggKzExNTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3Ry
dWN0aW9uKiBjCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCByZWdUMywgcmVnVDIpOwogCiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihjYWNoZWRT
dHJ1Y3R1cmUsIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QwLCByZWdUMikpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksOCArMTI5LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKElucwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCwgYmFzZVZhbCk7CiAKICAgICAvLyBDaGVjayB0aGF0IGJhc2VWYWwgJ0lt
cGxlbWVudHNIYXNJbnN0YW5jZScuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4
KFplcm8sIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkp
KTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpAQCAtMTQ5LDggKzE0OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3Rh
bmNlb2YoSW5zdHJ1Y3Rpb24KICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEs
IHByb3RvKTsKIAogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qz
KTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QzKSk7CisgICAgYWRk
U2xvd0Nhc2UoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDEpKTsKICAgICAKICAgICAvLyBP
cHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAg
ICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3Rp
bGwgY29udGFpbnMgdmFsdWUuCkBAIC0xNjAsNyArMTU4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZSBvYmplY3QgaW4gcmVnVDIuICBJZiB0aGlzIGlzIGVxdWFsIHRvIHJlZ1QxIC0gV0lOIQogICAg
IC8vIE90aGVyd2lzZSwgY2hlY2sgaWYgd2UndmUgaGl0IG51bGwgLSBpZiB3ZSBoYXZlIHRoZW4g
ZHJvcCBvdXQgb2YgdGhlIGxvb3AsIGlmIG5vdCBnbyBhZ2Fpbi4KLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExv
YWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMyk7CiAgICAgbG9hZDY0KEFkZHJlc3MocmVn
VDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgSnVtcCBpc0lu
c3RhbmNlID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMiwgcmVnVDEpOwogICAgIGVtaXRKdW1wSWZK
U0NlbGwocmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTE4NSwxMiArMTgzLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBKdW1wIGRvbmUgPSBq
dW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIEp1bXAgaXNN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdU
MSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
YnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1v
dmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhp
cyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QxLCByZWdUMik7CiAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCByZWdUMSk7CiAgICAgY29tcGFyZVB0cihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBA
IC0yMzIsOCArMjMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9u
KgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICBKdW1wIGlz
Tm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogICAgIAotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBj
b21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4KEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShy
ZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIApAQCAtMjk0LDggKzI5MSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnMKICAgICAvLyBSZXR1cm4g
dGhlIHJlc3VsdCBpbiAlZWF4LgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgSnVtcCBu
b3RKU0NlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJldHVyblZhbHVlUmVnaXN0ZXIpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZVJlZ2lzdGVyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZk5vdE9iamVj
dChyZWdUMik7CisgICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChy
ZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKIAogICAgIC8vIEdyYWIgdGhlIHJldHVybiBhZGRyZXNzLgog
ICAgIGVtaXRHZXRSZXR1cm5QQ0Zyb21DYWxsRnJhbWVIZWFkZXJQdHIocmVnVDEpOwpAQCAtMzMx
LDcgKzMyNyw5IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJ
bW0gPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3Jj
KQpAQCAtMzgzLDggKzM4MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0
aW9uKiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7
CiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
YnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIGVtaXRM
b2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFu
Y2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElz
Rm9yZWlnbiA9IGp1bXAoKTsKQEAgLTQwNiw4ICs0MDQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
bmVxX251bGwoSW5zdHJ1Y3Rpb24qCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZO
b3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBj
aGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsK
LSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwg
cmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIEp1bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNTAyLDEwICs1MDAs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bk5vdEltbWVkaWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhp
c1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0g
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RPYmplY3Qo
cmVnVDIpKTsKLSAgICB9CisgICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3Rl
cigpLm9mZnNldCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNO
b3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAv
LyBXZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwg
YnV0CiAgICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC01NTksNyAr
NTU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mg
c3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVn
VDMpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtNTcwLDcgKzU2Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBs
b2FkNjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1Qy
KTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDIp
KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMSk7CiAg
ICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRy
ZXNzKHJlZ1QzKSkpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0cnVjdHVyZSop
KSwgcmVnVDMpOwogICAgIGJyYW5jaFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhyZWdUMykpLmxp
bmtUbyhjaGVja1Byb3RvdHlwZSwgdGhpcyk7CkBAIC03NDgsMTIgKzc0NCwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RK
U0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwog
CiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgZW1pdExvYWRT
dHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29t
cGFyZVB0cihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC03ODAsMTIgKzc3NiwxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
anVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgY29tcGFyZVB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC04NTEs
MTEgKzg0NywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qw
KTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0
cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RU
eXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEs
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RU
eXBlKSkpOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIs
IFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2dldF9jYWxsZWUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTkyNyw2ICs5MjQsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyhJbnN0cnVjdGlvCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CisgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF90b190aGlzKTsKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgaW50
MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5F
X18pOwogICAgIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2Up
OwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CkBAIC0xMjcsNyArMTI3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlk
KTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CkBAIC0xNDUsNyArMTQ1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBf
X0xJTkVfXyk7CiAgICAgSWRlbnRpZmllciBpZGVudCA9IHVpZC0+aXNFbXB0eVVuaXF1ZSgpID8g
SWRlbnRpZmllcjo6ZnJvbShQcml2YXRlTmFtZSh1aWQpKSA6IElkZW50aWZpZXIodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwogCkBAIC0xNjYsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Jbk9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBKU0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAg
ICAgCiAgICAgaWYgKCFiYXNlLT5pc09iamVjdCgpKSB7CiAgICAgICAgIHZtLT50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJyb3IoZXhlYywgImluIiwgYmFzZSkp
OwpAQCAtMTkyLDcgKzE5Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uSW4KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW4oRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEpTQ2VsbCogYmFzZSwgU3RyaW5nSW1wbCoga2V5
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMsIF9fTElORV9fKTsKIAogICAgIGlmICghYmFzZS0+aXNPYmplY3QoKSkgewogICAgICAg
ICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4
ZWMsICJpbiIsIGJhc2UpKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkluCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkdlbmVyaWNJbihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFs
dWUga2V5KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwg
YmFzZSkpKTsKIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNh
bGxDdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jIGZ1bmN0aW9uLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18p
OwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgCkBAIC0yMjQsNyAr
MjI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBiYXNlLCBKU0NlbGwqIGdldHRlclNldHRlcikKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxHZXR0ZXIoZXhlYywgYmFzZSwgZ2V0dGVy
U2V0dGVyKSk7CiB9CkBAIC0yMzIsNyArMjMyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25DYQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJp
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0cnVlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENv
bnRleHQoKSk7CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWRTdHJpYwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJp
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkK
IHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChmYWxzZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRD
b250ZXh0KCkpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkTm9uU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5
SWRDb250ZXh0KCkpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2UsIGV4ZWMtPmNvZGVCbG9jaygp
LT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZFN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0g
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50
aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJ
TkVfXyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTM0MSw3ICszNDEsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwg
ZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5F
X18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRM
aXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0s
IHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtNDA0
LDcgKzQwNCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1
aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7
CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1
YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWMKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtNjg1
LDcgKzY4NSw3IEBAIGlubGluZSBjaGFyKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGwKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElO
RV9fKTsKICAgICAKICAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBleGVjQ2FsbGVlLT5jYWxs
ZWVBc1ZhbHVlKCk7CiAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVu
Y3Rpb24oY2FsbGVlQXNWYWx1ZSk7CkBAIC03MzUsNyArNzM1LDcgQEAgaW5saW5lIGNoYXIqIHZp
cnR1YWxGb3JXaXRoRnVuY3Rpb24oRXhlYwogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWND
YWxsZWUtPmNhbGxlckZyYW1lKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVlQXNWYWx1ZSgpOwogICAgIGNhbGxlZUFzRnVuY3Rp
b25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKQEAgLTgyMCw3ICs4MjAsNyBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiBzaXplX3QgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25Db21wYXJlTGVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18p
OwogICAgIAogICAgIHJldHVybiBqc0xlc3M8dHJ1ZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtODI4LDcgKzgy
OCw3IEBAIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXMKIHNpemVfdCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVMZXNzRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9f
TElORV9fKTsKIAogICAgIHJldHVybiBqc0xlc3NFcTx0cnVlPihleGVjLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CkBAIC04MzYs
NyArODM2LDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlcwogc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZWF0ZXIoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMsIF9fTElORV9fKTsKIAogICAgIHJldHVybiBqc0xlc3M8ZmFsc2U+KGV4ZWMsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpKTsKIH0KQEAg
LTg0NCw3ICs4NDQsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3Jl
CiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlR3JlYXRlckVxKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4ganNMZXNzRXE8ZmFsc2U+KGV4ZWMs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
KTsKIH0KQEAgLTg1Miw3ICs4NTIsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b21wYXJlR3JlCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db252ZXJ0SlNWYWx1ZVRv
Qm9vbGVhbihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcCkKIHsKICAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBf
X0xJTkVfXyk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3ApLnRv
Qm9vbGVhbihleGVjKTsKIH0KQEAgLTg2MCw3ICs4NjAsNyBAQCBzaXplX3QgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Db252ZXJ0SlNWCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlRXEoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplcXVhbFNsb3dDYXNlSW5saW5lKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KQEAgLTg3Miw3ICs4NzIsNyBAQCBzaXpl
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAjZW5kaWYKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVf
Xyk7CiAKICAgICBib29sIHJlc3VsdCA9IGFzU3RyaW5nKGxlZnQpLT52YWx1ZShleGVjKSA9PSBh
c1N0cmluZyhyaWdodCktPnZhbHVlKGV4ZWMpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04OTIs
MjEgKzg5MiwyMSBAQCBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNQcm9wZXJ0CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFByb2ZpbGUo
RXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBK
U1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwot
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5TmVnYXRpdmVJbmRleGVkKGV4ZWMsIHByb2ZpbGUs
IHZhbHVlcywgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyV2l0aFByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9j
YXRpb25Qcm9maWxlKiBwcm9maWxlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIGludCBzaXplKQog
ewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMsIF9fTElORV9fKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEFycmF5
KGV4ZWMsIHByb2ZpbGUsIHZhbHVlcywgc2l6ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSog
ZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgc2l6
ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjLCBfX0xJTkVfXyk7CiAgICAgSlNWYWx1ZSBzaXplVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoc2l6ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheVdpdGhT
aXplUXVpcmsoZXhlYywgcHJvZmlsZSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBzaXpl
VmFsdWUpKTsKIH0KQEAgLTkyMiw3ICs5MjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5lCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwog
ICAgIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwog
fQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2Zp
bGVXaWxsQwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0lu
c3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNl
VmFsID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsKTsKQEAgLTEzOTksNyArMTM5OSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwotICAgIAorCiAgICAgaWYgKGJhc2VW
YWx1ZS5pc09iamVjdCgpICYmIHN1YnNjcmlwdC5pc0ludDMyKCkpIHsKICAgICAgICAgLy8gU2Vl
IGlmIGl0J3Mgd29ydGggb3B0aW1pemluZyB0aGlzIGF0IGFsbC4KICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CkBAIC0xNjcwLDcgKzE2NzAsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVGhyb3coRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkRXhj
ZXB0aW9uVmFsdWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkRXhjZXB0aW9uVmFsdWUpOwogICAgIHZtLT50aHJv
d0V4Y2VwdGlvbihleGVjLCBleGNlcHRpb25WYWx1ZSk7CkBAIC0xNjgyLDcgKzE2ODIsNyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJ
T04gbG9va3VwRXhjZXB0aW9uSGFuZGxlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgVk0qIHZt
ID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
Yyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18p
OwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IGV4ZWMtPmV4Y2VwdGlvbigpOwogICAg
IEFTU0VSVChleGNlcHRpb25WYWx1ZSk7CkBAIC0xNjk0LDcgKzE2OTQsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVk1IYW5kbGVFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAog
ICAgIEFTU0VSVCghZXhlYy0+aGFzSG9zdENhbGxGcmFtZUZsYWcoKSk7CiAgICAgZ2VuZXJpY1Vu
d2luZCh2bSwgZXhlYywgdm0tPmV4Y2VwdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24g
MTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBKSVQ6OkNvZGVSZWYgSklU
OjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsK
ICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5h
cHBlbmQoSlNDOjpicmFuY2hTdHJ1Y3R1cmUoaml0LCBOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogICAgIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRo
ZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0
LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0
KCkpLCByZWdUMSk7CkBAIC0xMzcsOCArMTM3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjdGlvbgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdU
MSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QxLCByZWdUMywgcHJv
ZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEp
OwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1bXAgbm9uQ2VsbCA9
IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAg
ICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHVi
KHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9
IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CkBAIC0yODIsOCArMjgyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7Cisg
ICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7
CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogICAg
IAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKQEAgLTQ3OCw4ICs0NzgsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKIAogICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0g
ICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJlZ1QyLCByZWdU
MywgbV9ieXRlY29kZU9mZnNldCk7CisgICAgICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICAg
ICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChyZWdUMiwg
cmVnVDMsIG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIH0KIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0
b3IgZ2VuKApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFt
ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZFBheWxvYWQoaXRlciwgcmVnVDEpOwogICAgIAogICAg
IC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VU
T0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpOwogICAgIGxv
YWQzMihhZGRyZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBy
ZWdUMyk7CkBAIC03MzQsNyArNzM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVy
ZUNoZWNrKGludAogewogICAgIGVtaXRMb2FkKHNjb3BlLCByZWdUMSwgcmVnVDApOwogICAgIGxv
YWRQdHIoc3RydWN0dXJlU2xvdCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dEdldEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24g
MTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDEwIEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0
cmluZ0dldEJ5VmFsU3R1YkdlbmUKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAg
IEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cih2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVu
ZChKU0M6OmJyYW5jaFN0cnVjdHVyZShqaXQsCisgICAgICAgIE5vdEVxdWFsLCAKKyAgICAgICAg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIHZt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0
byByZWdUMiwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRl
ciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6
OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMik7CkBAIC0xMTEsOCArMTE0LDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRlbmQzMlRv
UHRyKHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDAsIGJhc2UpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QyLCByZWdU
MywgcHJvZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0
ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKIAogICAgIFBhdGNoYWJsZUp1bXAg
YmFkVHlwZTsKQEAgLTIwOSw3ICsyMTIsOSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5
X3ZhbChJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7IC8v
IGJhc2UgY2VsbCBjaGVjawogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0cmluZyA9IGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgSnVt
cCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV92bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKTsKICAgICBlbWl0TmFrZWRDYWxsKENvZGVMb2NhdGlvbkxhYmVs
KG1fdm0tPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKS5jb2RlKCkpKTsK
ICAgICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3Q2NChaZXJvLCByZWdUMCk7CiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKQEAgLTI4MCw3ICsyODUsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QxLCBPQkpF
Q1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkp
OwogICAgIGxvYWQzMihhZGRyZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMyk7CkBAIC0zMjEsOCArMzI2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIC8vIFNlZSBjb21tZW50IGluIG9wX2dldF9ieV92YWwu
CiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlKHJlZ1QyLCByZWdUMywgcHJvZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDIpOwor
ICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMiwgcmVnVDMsIHByb2ZpbGUp
OwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKICAg
ICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC01MTgsOCArNTIzLDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogICAgIAogICAgIGlmICgqaWRlbnQgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMSk7Ci0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJl
Z1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgICAgIG1vdmUocmVnVDAsIHJlZ1Qx
KTsKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2Vs
bChyZWdUMSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIH0KIAogICAgIEpJVEdldEJ5
SWRHZW5lcmF0b3IgZ2VuKApAQCAtNjk4LDcgKzcwMyw5IEBAIHZvaWQgSklUOjplbWl0TG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhpbnQKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNjb3Bl
LCByZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVTbG90LCByZWdUMSk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDEpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8s
IHJlZ1QxKSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRHZXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90
KQpAQCAtNzYwLDYgKzc2Nyw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29w
ZShJbnMKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09
IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBH
bG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihXaXRoUHJvZmlsZSwgb3BlcmF0aW9uR2V0RnJv
bVNjb3BlLCBkc3QsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CkBAIC04MjQsNiArODMzLDggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZShJbnN0cgogICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKKyAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1dFRvU2NvcGUsIGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CkBAIC04
NzYsNyArODg3LDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZQog
ICAgICAgICBzdHJ1Y3R1cmUtPmFkZFRyYW5zaXRpb25XYXRjaHBvaW50KHN0dWJJbmZvLT5hZGRX
YXRjaHBvaW50KG1fY29kZUJsb2NrKSk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgICAgIEp1bXAgb2sgPSBi
cmFuY2hQdHIoRXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIEp1bXAgb2sgPSBicmFuY2hT
dHJ1Y3R1cmUoRXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgc3RydWN0dXJlKTsKICAgICAgICAgYnJlYWtwb2ludCgpOwogICAgICAgICBvay5saW5r
KHRoaXMpOwogI2VuZGlmCkBAIC04ODUsNyArODk2LDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3Ry
dWN0dXJlVHJhbnNpdGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
b2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyAgICByZXR1cm4gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHNj
cmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiB9CiAKIHZv
aWQgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiBvYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEp1bXBMaXN0JiBm
YWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTEwMjksNyArMTA0MCwxMyBAQCBK
SVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlHZXRCCiAgICAgCiAgICAgSnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICBw
dXNoKHJlZ1QyKTsKKyNlbmRpZgorICAgIGVtaXRMb2FkU3RydWN0dXJlKGJhc2UsIHNjcmF0Y2gs
IHJlZ1QyKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSAKKyAgICBwb3AocmVnVDIpOworI2VuZGlm
CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0lu
Zm9Gb3JUeXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9y
RXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZWZWN0b3IoKSksIGJhc2UpOwpAQCAtMTA5OSw4ICsxMTE2LDE0IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5R2UKICNlbmRpZgogICAgIAogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKLSAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICBwdXNoKHJlZ1QyKTsKKyNlbmRpZgorICAgIGVtaXRMb2FkU3RydWN0dXJlKGJhc2UsIHNj
cmF0Y2gsIHJlZ1QyKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSAKKyAgICBwb3AocmVnVDIpOwor
I2VuZGlmCiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihj
bGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVm
ZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSksIGJhc2UpOwpAQCAtMTE1Miw3ICsxMTc1LDcgQEAg
SklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QgogICAgIAogICAgIEp1bXBM
aXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
YmFzZSwgZWFybHlTY3JhdGNoLCBsYXRlU2NyYXRjaCk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFk
ZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAg
CkBAIC0xMjE4LDcgKzEyNDEsNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheVB1CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIo
QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsK
KyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBlYXJseVNjcmF0Y2gsIGxhdGVTY3JhdGNoKTsK
ICAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGVhcmx5
U2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xh
c3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5v
Q2hlY2soUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CiAjZW5kaWYKIAotICAgICAg
ICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBz
Y3JhdGNoUmVnLCBKU1R5cGUpOworICAgICAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFJlZ2lz
dGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAg
ICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUpOwog
CiAgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxG
cmFtZVJlZ2lzdGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVn
aXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7CkBAIC0zODgsMTAg
KzM4OSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19J
TkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RU
eXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUgdHlw
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRMb2FkU3RydWN0
dXJlKFJlZ2lzdGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRj
aCkKICAgICB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVx
dWFsLCBBZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIodHlwZSkpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIGRlc3QpOworICAgICAgICBsb2FkUHRyKHZtKCktPmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmJhc2UoKSwgc2NyYXRjaCk7IAorICAgICAgICBsb2FkUHRyKEJhc2VJbmRleChzY3JhdGNo
LCBkZXN0LCBUaW1lc0VpZ2h0KSwgZGVzdCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0o
c2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291cmNl
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVt
aXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgSlNUeXBlIHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklE
IHRvLCBSZWdpc3RlcklEIGZyb20pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDEwIEBACiAKICNpbmNsdWRlICJD
Q2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
REZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIK
KyNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhp
Y1B1dEJ5SWRMaXN0LmgiCkBAIC02Niw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hCeUlk
U2VsZkFjY2VzcyhDb2RlQmwKICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgLy8gUGF0Y2ggdGhlIHN0
cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1ZmZl
ci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNl
dCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1
cmUpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hl
Y2tJbW1Ub0NhbGwpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVs
dGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCkBAIC05NCwxMCArOTcsMTAgQEAgc3RhdGlj
IHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgICAgICAvLyBJZiB3ZSBleGVj
dXRlIHRoaXMgY29kZSwgdGhlIG9iamVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBl
Y3QuIEFzc2VydAogICAgICAgICAvLyB0aGlzIGluIGRlYnVnIG1vZGVzLgogICAgICAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShqaXQsCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgICAgIGppdC5icmVha3Bv
aW50KCk7CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAjZW5kaWYKQEAgLTEwNiwxMCArMTA5LDEw
IEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAKICAgICBq
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BS
KTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKAotICAgICAgICBqaXQuYnJhbmNoUHRyKAorICAg
ICAgICBicmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAg
ICAgICAgc3RydWN0dXJlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRp
b25DaGVjaygKQEAgLTEyOCwxMCArMTMxLDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRy
YW5zaXRpb25DaGVjaygKIAogc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZm
ZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIHRhcmdldCkKIHsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNh
bkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKKyAgICBpZiAoTWFj
cm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkg
ewogICAgICAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgICAgIFJl
cGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Mo
Ci0gICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0
ckF0T2Zmc2V0KAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAt
KGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpKSwKICAgICAgICAg
ICAgIENvZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwogICAgICAgICByZXR1cm47CkBAIC0yMDYs
NyArMjA5LDEwIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAg
ICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgIAotICAg
IGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOwor
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBzdHJ1
Y3R1cmUpKTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKQEAgLTI4
Miw4ICsyODgsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAg
ICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwog
ICAgICAgIAotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOyAKLSAgICAg
ICAgc3R1YkppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1
Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJK
aXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjppbmRleGlu
Z1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNj
cmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2sp
KSk7CiAgICAgICAgIApAQCAtNDY5LDcgKzQ3NCwxMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdl
dEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1Ykpp
dCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IHdyb25nU3RydWN0ID0gc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdyb25nU3RydWN0ID0gYnJhbmNoU3RydWN0dXJlKHN0dWJK
aXQsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAgLy8gVGhl
IHN0cmF0ZWd5IHdlIHVzZSBmb3Igc3R1YnMgaXMgYXMgZm9sbG93czoKICAgICAgICAgLy8gMSkg
Q2FsbCBERkcgaGVscGVyIHRoYXQgY2FsbHMgdGhlIGdldHRlci4KQEAgLTY4MiwxMCArNjkwLDEw
IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgc3R1YkppdC5wdXNo
VG9TYXZlKHNjcmF0Y2hHUFIpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJh
ZFN0cnVjdHVyZSA9IHN0dWJKaXQuYnJhbmNoUHRyKAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGJhZFN0cnVjdHVyZSA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgc3RydWN0
dXJlKTsKICAgICAKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAjaWYgVVNF
KEpTVkFMVUU2NCkKQEAgLTgxMSw3ICs4MTksMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5z
aXRpb25TdHViKAogICAgICAgICAgICAgCiAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNp
dGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCi0gICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvbGRTdHJ1Y3R1cmUpKSk7CisgICAg
ZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG9sZFN0cnVj
dHVyZSkpOwogICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAg
b2xkU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJ
bmZvLCBzdHViSml0LCBmYWlsdXJlQ2FzZXMsCkBAIC04NjksNyArODgwLDcgQEAgc3RhdGljIHZv
aWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2Ug
PSB0cnVlOwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHViSml0LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBiYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAg
IGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAgICAgc3R1Ykpp
dC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09i
amVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xv
dC5jYWNoZWRPZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKQEAgLTExODIsMTAgKzExOTMs
MTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgICAgICAgICAgbmVlZFRvUmVzdG9y
ZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2hQdHIoCisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0
dWJKaXQsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAg
ICAgCiAgICAgICAgIFN0cnVjdHVyZSogY3VyclN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKQEAgLTEzMTAs
MTAgKzEzMjEsMTAgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVjLCBDYQog
I2VuZGlmCiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKAotICAgICAgICBzdHViSml0LmJyYW5j
aFB0cigKKyAgICAgICAgYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNh
bGxlZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAg
ICAgICAgICAgIHN0cnVjdHVyZSkpOwogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKICAgICAg
ICAgc3R1YkppdC5icmFuY2hQdHIoCkBAIC0xMzc5LDE2ICsxMzkwLDE2IEBAIHZvaWQgbGlua0Ns
b3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2EKIHZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hC
dWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAg
ICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJh
dGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVj
dHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7Ci0gICAg
aWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaCgpKSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9Q
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVs
KSwKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1Yklu
Zm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpj
YW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKKyAgICAgICAgcmVw
YXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoKAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAgICAgICAgICAgICAg
ICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2Vk
UG9pbnRlcikpOwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFi
ZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNl
ZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0
dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkBAIC0xNDEz
LDE2ICsxNDI0LDE2IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2gK
ICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0T3B0aW1pemU7CiAgICAgfQogICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJ
bW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAg
UmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVz
cyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgc3RydWN0dXJl
TGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgt
KGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOworICAgIGlmIChN
YWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgp
KSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiks
Ci0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgICAgICAgICAg
ICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVy
KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMy
QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIDApOwogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nw
ZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2lm
IEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSklULmgi
CisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAj
aW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTY1LDE0ICs2
NywxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNTdHJpbmdBcmd1bWVu
dChWTSYgdm0sIGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAgICAgICAgICBtX2Zh
aWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoKnRoaXMs
IE5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZEFyZ3VtZW50V2l0aFNw
ZWNpZmljQ2xhc3MoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGludCBhcmd1bWVudCwgUmVn
aXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICAgICAgewogICAgICAgICAgICAg
bG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAg
ICAgIGVtaXRMb2FkU3RydWN0dXJlKGRzdCwgc2NyYXRjaCwgZHN0KTsKICAgICAgICAgICAgIGFw
cGVuZEZhaWx1cmUoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVy
ZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKKyAgICAg
ICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0
cnVjdHVyZSBjbG9iYmVyZWQgaXQuCisgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3Vt
ZW50LCBkc3QpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFy
Z3VtZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShy
ZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJUaHVu
a0dlbmVyYXRvcnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkRGR1Nw
ZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKQEAgLTE2OCw3ICsxNjksNyBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JUCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpub25BcmdHUFIxLAogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICNlbmRpZgot
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMik7CisgICAg
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUoaml0LCBHUFJJbmZvOjpub25B
cmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIyLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKICAgICBz
bG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLApAQCAtOTg2LDkgKzk4Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgYXJyYXlJdGVyYXQKICAgICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgoKSks
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICAKICAgICAvLyBQdWxsIG91dCB0aGUg
YnV0dGVyZmx5IGZyb20gaXRlcmF0ZWRPYmplY3QKLSAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOwotICAgIAotICAgIGppdC5sb2FkOChBZGRyZXNzKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgp
KSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkOChBZGRyZXNzKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICAKICAgICBqaXQuYW5kMzIoVHJ1c3RlZElt
bTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9VbnVzZWRQb2ludGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9VbnVzZWRQb2ludGVyLmgJKHJldmlzaW9uIDE1
ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9pbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2lmIFVT
RShKU1ZBTFVFNjQpCitzdGF0aWMgY29uc3QgdWludHB0cl90IHVudXNlZFBvaW50ZXIgPSAweDA7
CisjZWxzZQogc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHhkMWU3YmVl
ZjsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20J
KHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDI0IEBA
IG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGUKICAgICAgICAgcGF5bG9h
ZCkKIGVuZAogCittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1
cmUsIHNjcmF0Y2gpCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W2NlbGxdCisKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0s
IHNjcmF0Y2gKKyAgICBzdG9yZWkgc2NyYXRjaCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxs
XQorCisjICAgIGxvYWRiIFN0cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbc3RydWN0dXJlXSwgc2Ny
YXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXQor
IworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1tz
dHJ1Y3R1cmVdLCBzY3JhdGNoCisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1fZmxhZ3Nb
Y2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVtzdHJ1Y3R1cmVdLCBzY3JhdGNoCisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1f
dHlwZVtjZWxsXQorIworIyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0KK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQogICAgICMg
Tm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNy
ZW1lbnRhbCBjb2xsZWN0b3IuCiBlbmQKQEAgLTQyOCw3ICs0NDYsNyBAQCBfbGxpbnRfb3BfdG9f
dGhpczoKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgYmJuZXEgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9U
aGlzU2xvdwogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQwLCB0
MiwgLm9wVG9UaGlzU2xvdwpAQCAtNTA5LDcgKzUyNyw3IEBAIF9sbGludF9vcF9lcV9udWxsOgog
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1l
ZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm9w
RXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBqbXAgLm9w
RXFOdWxsTm90SW1tZWRpYXRlCkBAIC01NTYsNyArNTc0LDcgQEAgX2xsaW50X29wX25lcV9udWxs
OgogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxs
SW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBidGJueiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IC5vcE5lcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAxLCB0MQogICAgIGpt
cCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCkBAIC01ODMsOCArNjAxLDggQEAgbWFjcm8gc3RyaWN0
RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYQogICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKICAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKICAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0
cmluZwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QxXSwgdDMKICAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5n
VHlwZSwgLm5vdFN0cmluZwogICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CiAubm90U3RyaW5nOgpAQCAtODU1LDcg
Kzg3Myw3IEBAIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGxvYWRpIDEyW1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQwCiAgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5z
dGFuY2VTbG93CiAgICAgZGlzcGF0Y2goNSkKIApAQCAtODcwLDcgKzg4OCw3IEBAIF9sbGludF9v
cF9pbnN0YW5jZW9mOgogICAgIGxvYWRpIDEyW1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwgdDMK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcElu
c3RhbmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5j
ZW9mU2xvdwogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCkBAIC04NzgsNyArODk2
LDcgQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBw
cm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEsIHQwCiAub3BJbnN0YW5jZW9mTG9vcDoK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDJdLCB0MgogICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKICAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRv
bmUKICAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKQEAgLTkwNSw3ICs5MjMsNyBAQCBf
bGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQogICAgIGRpc3BhdGNoKDMpCiAub3BJc1VuZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QzXSwgdDEKICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcElzVW5kZWZpbmVkTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KQEAgLTk0OCw3ICs5NjYsNyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5n
OgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykKICAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5v
cElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQwCiAgICAgY2JlcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgdDEKICAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQpA
QCAtMTAxNyw3ICsxMDM1LDcgQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAg
ICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwg
c2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwg
Lm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAg
ICAgICAgICBsb2FkaSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKICAg
ICAgICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQyCkBA
IC0xMDQ1LDcgKzEwNjMsNyBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2Fk
aSA4W1BDXSwgdDAKICAgICBsb2FkcCAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRBcnJheUxlbmd0aFNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBidGl6
IHQyLCBJc0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKICAgICBidGl6IHQyLCBJbmRleGlu
Z1NoYXBlTWFzaywgLm9wR2V0QXJyYXlMZW5ndGhTbG93CkBAIC0xMDg5LDcgKzExMDcsNyBAQCBt
YWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAgICAgdDAsCiAgICAgICAgIHQz
LAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgICAg
ICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CiAgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCiAgICAgICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIo
c2NyYXRjaCwgdDIpCkBAIC0xMTE3LDcgKzExMzUsNyBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlv
bihhZGRpdGlvbmFsQ2hlY2tzCiAgICAgbG9hZGkgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAg
bG9hZGkgMTJbUENdLCB0MgotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKICAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaSAy
MFtQQ10sIHQxCiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKApAQCAtMTEzMCw3ICsxMTQ4LDcgQEAg
bWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbdDNdCiAgICAgICAgICAgICBsb2FkaSAyNFtQQ10sIHQxCiAgICAg
ICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCi0gICAgICAgICAgICBzdG9yZXAg
dDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgICAgICAgICBzdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyh0MCwgdDEsIHQyKQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAg
ZW5kKQogZW5kCkBAIC0xMTQ4LDcgKzExNjYsNyBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNr
cyhvbGRTdHJ1Y3R1cmUsCiAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCiAubG9vcDoKICAgICBsb2FkaSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0Nl
bGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVy
ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1
cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAg
ICBhZGRwIDQsIHNjcmF0Y2gKICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCkBAIC0xMTc1LDcgKzExOTMsNyBA
QCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkg
OFtQQ10sIHQyCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcs
IHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBsb2FkcCAx
NltQQ10sIHQzCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCiAgICAgbG9hZGkgMTJbUENd
LCB0MwpAQCAtMTI2MSw3ICsxMjc5LDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5h
bWVTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYnBuZXEgdDAsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNs
b3cKICAgICBsb2FkaSAyNFtQQ10sIHQwCiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MApAQCAt
MTMwNCw3ICsxMzIyLDcgQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QxXSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQzCiAgICAgYXJyYXlQcm9maWxl
KHQyLCB0MywgdDApCiAgICAgbG9hZGkgOFtQQ10sIHQwCkBAIC0xNDE2LDcgKzE0MzQsNyBAQCBt
YWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBd
LCB0MgogICAgIGNlbGxIYW5kbGVyKHQyLCBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykKIApAQCAtMTU0Nyw3ICsx
NTY1LDcgQEAgX2xsaW50X29wX3N3aXRjaF9jaGFyOgogICAgIGxvYWRwIENvZGVCbG9jazo6UmFy
ZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAg
ICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCiAgICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MApAQCAt
MTU5MSw5ICsxNjA5LDkgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5l
Z2kgdDMKICAgICAgICAgYmluZXEgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAgICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQg
KyBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MAotICAgICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDAKKyAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XSwgdDAKICAgICAgICAgbG9hZHAgMjRbUENdLCB0MQotICAgICAgICBzdG9yZXAgdDAsIEFycmF5
UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KKyAgICAgICAgc3RvcmVwIHQwLCBBcnJh
eVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0MV0KICAgICAuZG9uZToKICAgICBlbmQK
IGVuZApAQCAtMTY1OCw3ICsxNjc2LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoK
ICAgICBsb2FkaSA0W1BDXSwgdDIKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwg
dDApCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3QKICAgICBkb1JldHVybigpCiAKQEAgLTE2NzQsNyArMTY5Miw3IEBAIF9sbGludF9vcF90b19w
cmltaXRpdmU6CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1t
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2Fz
ZQogLm9wVG9QcmltaXRpdmVJc0ltbToKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQz
LCA4XQpAQCAtMTcwMyw3ICsxNzIxLDcgQEAgX2xsaW50X29wX25leHRfcG5hbWU6CiAgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCiAgICAgbG9hZGkgOFtQQ10sIHQzCiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MQogICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVj
dHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKICAgICBsb2FkcCBTdHJ1Y3R1cmVD
aGFpbjo6bV92ZWN0b3JbdDBdLCB0MApAQCAtMTcxMSw3ICsxNzI5LDcgQEAgX2xsaW50X29wX25l
eHRfcG5hbWU6CiAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CiAgICAgYmllcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1l
U2xvdwogICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3Qx
XSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MQogICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0
UG5hbWVTbG93CiAgICAgYWRkcCA0LCB0MAogICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNo
ZWNrUHJvdG90eXBlTG9vcApAQCAtMTk4Myw3ICsyMDAxLDcgQEAgbWFjcm8gbG9hZFdpdGhTdHJ1
Y3R1cmVDaGVjayhvcGVyYW5kLCBzbAogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihvcGVyYW5k
LCB0MCkKICAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rp
b24oNSwgdDEpCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCBzbG93UGF0
aAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxLCBzbG93UGF0aAogZW5k
CiAKIG1hY3JvIGdldFByb3BlcnR5KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNTgzMzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMTkzLDYgKzE5Myw0MSBAQCBtYWNybyB2YWx1ZVByb2ZpbGUo
dmFsdWUsIG9wZXJhbmQsIHNjcmF0CiAgICAgZW5kCiBlbmQKIAorbWFjcm8gbG9hZFN0cnVjdHVy
ZShjZWxsLCBzdHJ1Y3R1cmUpCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2Ny
YXRjaAorICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVtzY3JhdGNoXSwgc2NyYXRjaAorICAgIGxv
YWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJs
ZTo6bV90YWJsZVtzY3JhdGNoXSwgc2NyYXRjaAorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFtjZWxsXSwgc3RydWN0dXJlCisgICAgbG9hZHAgW3NjcmF0Y2gsIHN0cnVjdHVyZSwgOF0s
IHN0cnVjdHVyZQorZW5kCisKK21hY3JvIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmco
Y2VsbCwgc3RydWN0dXJlKQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwg
c3RydWN0dXJlCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNlbGwKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fdm1bY2VsbF0sIGNlbGwKKyAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3Ry
dWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbY2VsbF0sIGNlbGwKKyAg
ICBsb2FkcCBbY2VsbCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCitlbmQKKworbWFjcm8gc3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGxv
YWRxIFN0cnVjdHVyZTo6bV9zdHJ1Y3R1cmVJRFtzdHJ1Y3R1cmVdLCBzY3JhdGNoCisgICAgc3Rv
cmVxIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorCisjICAgIGxvYWRiIFN0
cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIg
c2NyYXRjaCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXQorIworIyAgICBsb2FkYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1tzdHJ1Y3R1cmVdLCBzY3JhdGNo
CisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1fZmxhZ3NbY2VsbF0KKyMKKyMgICAgbG9h
ZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVtzdHJ1Y3R1cmVdLCBz
Y3JhdGNoCisjICAgIHN0b3JlYiBzY3JhdGNoLCBKU0NlbGw6Om1fdHlwZVtjZWxsXQorIworIyAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAg
ICBzdG9yZWkgc2NyYXRjaCwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCitlbmQKIAogIyBF
bnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtMzE4LDEwICszNTMsMTAgQEAg
X2xsaW50X29wX3RvX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAg
IGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9UaGlz
U2xvdwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5
cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2Jq
ZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwg
dDEsIHQyKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQotICAgIGJwbmVxIHQwLCB0
MiwgLm9wVG9UaGlzU2xvdworICAgIGJwbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdwogICAgIGRp
c3BhdGNoKDMpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC00MDIsMTEgKzQzNywxMSBAQCBtYWNybyBl
cXVhbE51bGxDb21wYXJpc29uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCiAg
ICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRp
YXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgYnRibnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2VsbDo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
CiAgICAgbW92ZSAwLCB0MAogICAgIGptcCAuZG9uZQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6
CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0s
IHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC03
MzMsOCArNzY4LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0NlbGw6Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgpAQCAtNzQ2LDI0
ICs3ODAsMjMgQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMs
IHQwKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBi
YmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbCh0MCwgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQogICAgIAogICAgICMgUmVnaXN0ZXIgc3Rh
dGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAogLm9wSW5zdGFu
Y2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCi0gICAgbG9h
ZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCisgICAgbG9hZFN0cnVjdHVyZUFuZENs
b2JiZXJGaXJzdEFyZyh0MiwgdDMpCisgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0
M10sIHQyCiAgICAgYnFlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCiAgICAgYnRxeiB0Miwg
dGFnTWFzaywgLm9wSW5zdGFuY2VvZkxvb3AKIAogICAgIG1vdmUgMCwgdDAKIC5vcEluc3RhbmNl
b2ZEb25lOgogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MykKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDQpCiAK
QEAgLTc4MywxNyArODE2LDE3IEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgc3RvcmVx
IHQzLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNVbmRlZmluZWRDZWxsOgot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0Ym56IFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3Nb
dDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAg
IG1vdmUgVmFsdWVGYWxzZSwgdDEKICAgICBzdG9yZXEgdDEsIFtjZnIsIHQyLCA4XQogICAgIGRp
c3BhdGNoKDMpCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKKyAgICBsb2FkU3RydWN0dXJlV2l0
aFNjcmF0Y2godDAsIHQzLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKLSAgICBjcGVxIFN0cnVjdHVy
ZTo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MSwgdDMKLSAgICBvcnEgVmFsdWVGYWxzZSwgdDMKLSAg
ICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQorICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9i
amVjdFt0M10sIHQxLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIHN0b3JlcSB0MCwg
W2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC04MjYsOCArODU5LDcgQEAgX2xs
aW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5v
cElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAot
ICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0
cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQx
CiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAg
ICBkaXNwYXRjaCgzKQpAQCAtODc5LDE0ICs5MTEsMTUgQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9w
ZXJ0eVN0b3JhZ2UpCiAgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBB
dCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAogICAgICMgd2Ugd291bGQg
aGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
Ci0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUNlbGwodDAsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oNSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0MiwgdDEpCisgICAg
bG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIsIHQxLCAub3BHZXRCeUlk
U2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDMsCiAgICAgICAgIHQwLAog
ICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAgYnBu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQogICAgICAgICAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDEsIHQxKQogICAgICAgICAgICAgbG9hZHEgW3Byb3BlcnR5U3RvcmFnZSwgdDJd
LCBzY3JhdGNoCiAgICAgICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW2NmciwgdDEsIDhdCkBAIC05
MTIsNyArOTQ1LDcgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QXJyYXlMZW5ndGhTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MgorICAgIG1vdmUgdDMsIHQy
CiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9w
R2V0QXJyYXlMZW5ndGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdl
dEFycmF5TGVuZ3RoU2xvdwpAQCAtOTQ5LDE1ICs5ODIsMTYgQEAgX2xsaW50X29wX2dldF9hcmd1
bWVudHNfbGVuZ3RoOgogbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKLSAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MywgdDAsIC5vcFB1dEJ5SWRTbG93KQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig0LCB0MSkKKyAgICBicG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAg
Z2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0MCwKICAgICAgICAgdDMsCiAgICAgICAgIG1h
Y3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgICAgICAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCisgICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MywgdDIpCiAgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCBzY3JhdGNoKQog
ICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQwKQogICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gs
IFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQpAQCAtOTgyLDkgKzEwMTYsMTAgQEAgbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MCwgdDIsIHQzKQorICAgIGJwbmVxIHQyLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgdDIpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQyKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oNSwgdDEpCiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0MCwKQEAg
LTk5NSwxNSArMTAzMCwxNSBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hl
Y2tzCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDEpCiAgICAgICAgICAgICBzdG9yZXEgdDEs
IFt0M10KICAgICAgICAgICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICAg
ICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgc3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8odDAsIHQxLCB0MikKICAgICAgICAgICAgIGRpc3BhdGNoKDkp
CiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xkU3RydWN0
dXJlLCBzY3JhdGNoKQorbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2Ny
YXRjaCwgc2NyYXRjaDIpCiBlbmQKIAotbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3Ry
dWN0dXJlLCBzY3JhdGNoKQorbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUg
ICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwogICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDcsIHNjcmF0Y2gpCiAgICAgYXNzZXJ0KG1hY3JvIChvaykg
YnRwbnogc2NyYXRjaCwgb2sgZW5kKQpAQCAtMTAxMiw3ICsxMDQ3LDggQEAgbWFjcm8gc3RydWN0
dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLAogICAgIGJxZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5kb25lCiAubG9vcDoKICAgICBsb2FkcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhwcm90b0NlbGwsIHNjcmF0Y2gyKQorICAgIG1vdmUg
c2NyYXRjaDIsIG9sZFN0cnVjdHVyZQogICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hd
LCAub3BQdXRCeUlkU2xvdwogICAgIGFkZHAgOCwgc2NyYXRjaAogICAgIGJxbmVxIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAubG9vcApAQCAtMTAzOSw4
ICsxMDc1LDggQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MykKKyAgICBtb3Zl
IHQwLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIodDMsIHQxLCAu
b3BHZXRCeVZhbFNsb3cpCkBAIC0xMTI1LDcgKzExNjEsNyBAQCBfbGxpbnRfb3BfZ2V0X2J5X3Bu
YW1lOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlQbmFt
ZVNsb3cpCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDMpCiAgICAgbG9hZHEgW2NmciwgdDMsIDhd
LCB0MQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRTdHJ1
Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQogICAgIGJwbmVxIHQyLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0MV0sIC5vcEdldEJ5UG5hbWVTbG93CiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDYsIHQzKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0sIHQzCkBAIC0xMTY3LDggKzEyMDMsOCBAQCBtYWNybyBwdXRCeVZhbChob2xlQ2hl
Y2ssIHNsb3dQYXRoKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BQ
dXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCiAgICAg
bG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0MSwgdDIKICAgICBhcnJheVBy
b2ZpbGUodDIsIHQzLCB0MCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQpAQCAt
MTI3Nyw4ICsxMzEzLDggQEAgbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVI
YQogICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAK
ICAgICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgotICAgIGNlbGxIYW5kbGVyKHQyLCBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgbG9hZFN0cnVjdHVyZVdp
dGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgY2VsbEhhbmRsZXIodDIsIEpTQ2VsbDo6bV9mbGFn
c1t0MF0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykKIAogLnRhcmdldDoKQEAgLTE0MTAsOCAr
MTQ0Niw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgog
ICAgIGFkZHAgdDMsIHQyCiAgICAgYnRxbnogdDEsIHRhZ01hc2ssIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MAotICAgIGJibmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBl
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MV0s
IFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpbmVxIEpTU3RyaW5n
OjptX2xlbmd0aFt0MV0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpT
U3RyaW5nOjptX3ZhbHVlW3QxXSwgdDAKICAgICBidHB6ICB0MCwgLm9wU3dpdGNoT25Sb3BlCkBA
IC0xNDU1LDkgKzE0OTAsOSBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKCkKICAgICAgICAg
bmVncCB0MwogICAgICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQw
CiAgICAgICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuZG9uZQotICAgICAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKICAgICAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDEp
Ci0gICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3Qx
XQorICAgICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MworICAgICAgICBz
dG9yZWkgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW3QxXQogICAgIC5k
b25lOgogICAgIGVuZAogZW5kCkBAIC0xNTIwLDggKzE1NTUsNyBAQCBfbGxpbnRfb3BfcmV0X29i
amVjdF9vcl90aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MikKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wUmV0
T2JqZWN0T3JUaGlzTm90T2JqZWN0Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBiYmIgSlNDZWxs
OjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKICAg
ICBkb1JldHVybigpCiAKIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKQEAgLTE1MzYsOCAr
MTU3MCw3IEBAIF9sbGludF9vcF90b19wcmltaXRpdmU6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQogICAgIGJ0cW56
IHQwLCB0YWdNYXNrLCAub3BUb1ByaW1pdGl2ZUlzSW1tCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQyCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKyAgICBi
Ym5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nh
c2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAg
ICBkaXNwYXRjaCgzKQpAQCAtMTU2Nyw3ICsxNjAwLDcgQEAgX2xsaW50X29wX25leHRfcG5hbWU6
CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQzKQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwgdDMKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDMsIHQxLCB0MCkK
ICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDJdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE1NzUsNyArMTYwOCw3IEBAIF9sbGludF9vcF9uZXh0X3Bu
YW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgogICAgIGJxZXEgU3RydWN0dXJl
OjptX3Byb3RvdHlwZVt0MV0sIFZhbHVlTnVsbCwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCB0MgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDJdLCB0MQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEsIHQzKQog
ICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgYWRkcCA4LCB0MAogICAg
IGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcApAQCAtMTgwNCw4ICsx
ODM3LDkgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiBtYWNybyBsb2FkV2l0aFN0cnVjdHVy
ZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihvcGVy
YW5kLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZFN0cnVjdHVyZVdp
dGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCi0g
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCBzbG93UGF0aAorICAgIGJwbmVx
IHQyLCB0MSwgc2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI1NSwxMyArMjU1LDE0IEBAIG1h
Y3JvIHNsb3dQYXRoRm9yQ2FsbChzbG93UGF0aCkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3Jv
IGFycmF5UHJvZmlsZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIHByb2ZpbGUsIHNjcmF0Y2gp
Ci0gICAgY29uc3Qgc3RydWN0dXJlID0gc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlCi0gICAgY29u
c3QgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlCittYWNybyBhcnJheVBy
b2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgcHJvZmlsZSwgc2NyYXRjaCkKKyAgICBjb25zdCBj
ZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQorICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxB
bmRJbmRleGluZ1R5cGUgCiAgICAgaWYgVkFMVUVfUFJPRklMRVIKLSAgICAgICAgc3RvcmVwIHN0
cnVjdHVyZSwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3Byb2ZpbGVdCisgICAg
ICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaAorICAgICAgICBz
dG9yZWkgc2NyYXRjaCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbcHJvZmls
ZV0KICAgICBlbmQKLSAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVy
ZV0sIGluZGV4aW5nVHlwZQorICAgIGxvYWRiIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0s
IGluZGV4aW5nVHlwZQogZW5kCiAKIG1hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBh
Y3Rpb24pCkBAIC00MDksOCArNDEwLDggQEAgbWFjcm8gYWxsb2NhdGVKU09iamVjdChhbGxvY2F0
b3IsIHN0cnVjdAogICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mRmlyc3RGcmVlQ2Vs
bFthbGxvY2F0b3JdCiAgICAgCiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAg
ICAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAg
ICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCisgICAgICAgIHN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkKICAgICBl
bmQKIGVuZAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAogICAgIHsgCi0gICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEFy
Z3VtZW50c1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsgCiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1Bcmd1bWVudHMoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQXJndW1lbnRzLCBtX251bUFyZ3VtZW50cyk7IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxl
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBGdW5j
dGlvbkV4ZWN1dGFibGVUeXBlOwogICAgIH0KIAogICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBj
b25zdApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDYWxsOwogICAgIGludCBt
X251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7CiAKQEAgLTY2OSw3ICs2NjksNyBAQCBpbmxpbmUg
Ym9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlCiAKIGlubGluZSB2b2lkIEV4ZWN1dGFi
bGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogewot
ICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7
CisgICAgc3dpdGNoIChleGVjdXRhYmxlLT50eXBlKCkpIHsKICAgICBjYXNlIEV2YWxFeGVjdXRh
YmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KGV4ZWN1dGFi
bGUpLT5jbGVhckNvZGUoKTsKICAgICBjYXNlIFByb2dyYW1FeGVjdXRhYmxlVHlwZToKQEAgLTY4
Myw3ICs2ODMsNyBAQCBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlyCiAK
IGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKCkKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAodHlwZSgp
KSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8
RXZhbEV4ZWN1dGFibGUqPih0aGlzKS0+dW5saW5rQ2FsbHMoKTsKICAgICBjYXNlIFByb2dyYW1F
eGVjdXRhYmxlVHlwZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTMsNyArMzkzLDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAog
CiBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIG5ld0xl
bmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFycmF5Q2xhc3M6CiAgICAgICAgIGlmICghbmV3TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00MjIsNyArNDIyLDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0
YXRlKiBleGVjLAogICAgICAgICAgICAgZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG5ld0xlbmd0
aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLSA+IG5ld0xlbmd0
aDspCiAgICAgICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9
IFFOYU47CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NDQsNyArNDQ0LDcgQEAgYm9vbCBKU0FycmF5
OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogCiBKU1ZhbHVlIEpTQXJyYXk6OnBvcChFeGVj
U3RhdGUqIGV4ZWMpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgCkBAIC01MzksNyArNTM5LDcg
QEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gIC0gcHVzaGluZyB0
byBhbiBhcnJheSBvZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJv
d3MgYSByYW5nZSBlcnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOiB7
CiAgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CiAgICAgICAg
IC8vIEZhbGwgdGhyb3VnaC4KQEAgLTY3Nyw3ICs2NzcsNyBAQCBib29sIEpTQXJyYXk6OnNoaWZ0
Q291bnRXaXRoQXJyYXlTdG9yYWdlCiAgICAgCiAgICAgLy8gSWYgdGhlIGFycmF5IGNvbnRhaW5z
IGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5vcm1hbCBzdGF0ZSwKICAgICAvLyB1c2Ug
dGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJvdG90eXBlLgotICAgIGlmIChvbGRMZW5n
dGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBpblNwYXJzZUluZGV4aW5nTW9k
ZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAg
ICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgaW5TcGFy
c2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFvbGRMZW5ndGgpCkBAIC03NTEsNyArNzUx
LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogewogICAgIFJF
TEVBU0VfQVNTRVJUKGNvdW50ID4gMCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCkBAIC04NDksNyAr
ODQ5LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiAgICAg
Ly8gSWYgdGhlIGFycmF5IGNvbnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5v
cm1hbCBzdGF0ZSwKICAgICAvLyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJv
dG90eXBlLgotICAgIGlmIChsZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8
fCBzdG9yYWdlLT5pblNwYXJzZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVl
c0luVmVjdG9yIHx8IHN0b3JhZ2UtPmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQo
aW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIG1vdmVG
cm9udCA9ICFzdGFydEluZGV4IHx8IHN0YXJ0SW5kZXggPCBsZW5ndGggLyAyOwpAQCAtODg2LDcg
Kzg4Niw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEKIAogYm9v
bCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0ZSogZXhl
YywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiB7Ci0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOgog
ICAgICAgICAvLyBXZSBjb3VsZCBoYW5kbGUgdGhpcy4gQnV0IGl0IHNob3VsZG4ndCBldmVyIGNv
bWUgdXAsIHNvIHdlIHdvbid0LgpAQCAtOTk1LDIwICs5OTUsMjAgQEAgc3RhdGljIGludCBjb21w
YXJlQnlTdHJpbmdQYWlyRm9yUVNvcnQoYwogICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKHZh
LT5zZWNvbmQsIHZiLT5zZWNvbmQpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBK
U0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFy
ZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQog
ewotICAgIEFTU0VSVChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgaW5kZXhpbmdU
eXBlID09IEFycmF5V2l0aERvdWJsZSB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQ29udGln
dW91cyB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKKyAgICBBU1NF
UlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgYXJyYXlJbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoRG91YmxlIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aENv
bnRpZ3VvdXMgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsK
ICAgICAKICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7CiAgICAgdW5z
aWduZWQgbmV3UmVsZXZhbnRMZW5ndGg7Ci0gICAgY29tcGFjdEZvclNvcnRpbmc8aW5kZXhpbmdU
eXBlPigKKyAgICBjb21wYWN0Rm9yU29ydGluZzxhcnJheUluZGV4aW5nVHlwZT4oCiAgICAgICAg
IGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZCwKICAgICAgICAgbmV3UmVsZXZhbnRMZW5ndGgp
OwogICAgIAotICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRhPGluZGV4
aW5nVHlwZT4oKTsKKyAgICBDb250aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxh
cnJheUluZGV4aW5nVHlwZT4oKTsKICAgICAKLSAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCkpIHsK
KyAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlICYmIGFy
cmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgewogICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZXhlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDE3LDcgKzEwMTcs
NyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0CiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBib29sIGFsbFZhbHVlc0FyZU51bWJlcnMgPSB0cnVlOwotICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgewog
ICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJp
Y1ZlY3RvcihFeGVjU3RhdAogICAgIC8vIGFsc28gZG9uJ3QgcmVxdWlyZSBtZXJnZXNvcnQncyBz
dGFiaWxpdHksIHNpbmNlIHRoZXJlJ3Mgbm8gdXNlciB2aXNpYmxlCiAgICAgLy8gc2lkZS1lZmZl
Y3QgZnJvbSBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZXF1YWwgcHJpbWl0aXZlIHZhbHVlcy4KICAg
ICBpbnQgKCpjb21wYXJlKShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOwotICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgewogICAgIGNh
c2UgQXJyYXlXaXRoSW50MzI6CiAgICAgICAgIGNvbXBhcmUgPSBjb21wYXJlTnVtYmVyc0ZvclFT
b3J0V2l0aEludDMyOwogICAgICAgICBicmVhazsKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHZvaWQg
SlNBcnJheTo6c29ydE51bWVyaWMoRXhlY1N0YXRlKiBleGUKIHsKICAgICBBU1NFUlQoIWluU3Bh
cnNlSW5kZXhpbmdNb2RlKCkpOwogCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNs
YXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTExNSw3ICsxMTE1LDcgQEAgdGVt
cGxhdGUgPD4gc3RydWN0IENvbnRpZ3VvdXNUeXBlQWNjZXNzbwogfTsKIAogCi10ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KK3RlbXBsYXRl
PEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+CiB2
b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBDb250aWd1
b3VzRGF0YTxTdG9yYWdlVHlwZT4gZGF0YSwgdW5zaWduZWQgcmVsZXZhbnRMZW5ndGgpCiB7CiAg
ICAgaWYgKCFyZWxldmFudExlbmd0aCkKQEAgLTExMzksMTEgKzExMzksMTEgQEAgdm9pZCBKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGJvb2wgaXNTb3J0aW5nUHJpbWl0
aXZlVmFsdWVzID0gdHJ1ZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVsZXZhbnRM
ZW5ndGg7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5cGVBY2Nl
c3NvcjxpbmRleGluZ1R5cGU+OjpnZXRBc1ZhbHVlKGRhdGEsIGkpOwotICAgICAgICBBU1NFUlQo
aW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7CisgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5kZXhpbmdU
eXBlPjo6Z2V0QXNWYWx1ZShkYXRhLCBpKTsKKyAgICAgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdU
eXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAgIEFTU0VS
VCghdmFsdWUuaXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHZhbHVlc1tpXS5maXJzdCA9IHZhbHVl
OwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiBpbmRleGlu
Z1R5cGUgIT0gQXJyYXlXaXRoSW50MzIpCisgICAgICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSAh
PSBBcnJheVdpdGhEb3VibGUgJiYgYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIp
CiAgICAgICAgICAgICBpc1NvcnRpbmdQcmltaXRpdmVWYWx1ZXMgPSBpc1NvcnRpbmdQcmltaXRp
dmVWYWx1ZXMgJiYgdmFsdWUuaXNQcmltaXRpdmUoKTsKICAgICB9CiAgICAgICAgIApAQCAtMTE3
NCw3ICsxMTc0LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAog
ICAgIAogICAgIC8vIElmIHRoZSB0b1N0cmluZyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSBsZW5ndGgg
b2YgdGhlIGFycmF5IG9yIHZlY3RvciBzdG9yYWdlLAogICAgIC8vIGluY3JlYXNlIHRoZSBsZW5n
dGggdG8gaGFuZGxlIHRoZSBvcmlnbmFsIG51bWJlciBvZiBhY3R1YWwgdmFsdWVzLgotICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgewog
ICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAg
Y2FzZSBBcnJheVdpdGhDb250aWd1b3VzOgpAQCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlT
dG9yYWdlOgogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgpIDwgcmVs
ZXZhbnRMZW5ndGgpIHsKICAgICAgICAgICAgIGluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4ZWMtPnZt
KCksIHJlbGV2YW50TGVuZ3RoKTsKLSAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8
aW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3RvcmFnZSgp
LT52ZWN0b3IoKSk7CisgICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5k
ZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3RvcmFnZSgpLT52
ZWN0b3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT5sZW5ndGgo
KSA8IHJlbGV2YW50TGVuZ3RoKQogICAgICAgICAgICAgYXJyYXlTdG9yYWdlKCktPnNldExlbmd0
aChyZWxldmFudExlbmd0aCk7CkBAIC0xMTk1LDcgKzExOTUsNyBAQCB2b2lkIEpTQXJyYXk6OnNv
cnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWxldmFudExlbmd0aDsgaSsrKQotICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29y
PGluZGV4aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVzW2ld
LmZpcnN0KTsKKyAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlw
ZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVzW2ldLmZpcnN0KTsKICAg
ICAKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wb3BUZW1wU29ydFZlY3RvcigmdmFsdWVzKTsKIH0K
QEAgLTEyMDQsNyArMTIwNCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMp
CiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lk
ZWQ6CiAgICAgICAgIHJldHVybjsKQEAgLTEzMzYsMTEgKzEzMzYsMTEgQEAgc3RydWN0IEFWTFRy
ZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlIAogICAgIHN0YXRpYyBoYW5kbGUgbnVsbCgpIHsg
cmV0dXJuIDB4N0ZGRkZGRkY7IH0KIH07CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGlu
Z1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpT
QXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlv
biwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKICAgICBB
U1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwotICAgIEFTU0VSVChpbmRleGluZ1R5cGUg
PT0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICBBU1NFUlQoYXJyYXlJbmRleGlu
Z1R5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIGlnbm9y
ZXMgZXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNvbXBhcmUgZnVuY3Rpb24gb3IgaW4gdG9OdW1i
ZXIuCiAgICAgICAgIApAQCAtMTM1MCw3ICsxMzUwLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIGlmIChtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCkg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0
aCA9IHJlbGV2YW50TGVuZ3RoPGluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25lZCB1c2VkVmVj
dG9yTGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAgICAgdW5z
aWduZWQgbm9kZUNvdW50ID0gdXNlZFZlY3Rvckxlbmd0aDsKICAgICAgICAgCiAgICAgaWYgKCFu
b2RlQ291bnQpCkBAIC0xNDE3LDE0ICsxNDE3LDE0IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3Rv
cihFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c1RvRXh0cmFjdFRocmVzaG9sZDsgKytpKSB7CiAgICAg
ICAgIEFTU0VSVChpIDwgYnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYg
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAg
IGlmIChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBidXR0
ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rl
c1sqaXRlcl0udmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3Vy
cmVudEluZGV4aW5nRGF0YSgpW2ldLnNldCh2bSwgdGhpcywgdHJlZS5hYnN0cmFjdG9yKCkubV9u
b2Rlc1sqaXRlcl0udmFsdWUpOwogICAgICAgICArK2l0ZXI7CiAgICAgfQogICAgIC8vIFB1dCB1
bmRlZmluZWQgdmFsdWVzIGJhY2sgaW4uCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJh
eVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAgQVNTRVJUKGVs
ZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkID09IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNob2xkKTsK
QEAgLTE0NDAsMTMgKzE0NDAsMTMgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0
ZSogZXhlYwogICAgIC8vIEVuc3VyZSB0aGF0IHVudXNlZCB2YWx1ZXMgaW4gdGhlIHZlY3RvciBh
cmUgemVyb2VkIG91dC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSB1bmRlZmluZWRFbGVtZW50c1Ro
cmVzaG9sZDsgaSA8IGNsZWFyRWxlbWVudHNUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBBU1NF
UlQoaSA8IGJ1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBpZiAoaW5k
ZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVyZmx5KCkt
PmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5jbGVhcigpOwogICAgIH0KICAgICAKLSAgICBpZiAo
aGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKGhh
c0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5t
X251bVZhbHVlc0luVmVjdG9yID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsKIH0KIApAQCAtMTQ1NCw3
ICsxNDU0LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogewog
ICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOgog
ICAgICAgICByZXR1cm47CkBAIC0xNDg2LDcgKzE0ODYsNyBAQCB2b2lkIEpTQXJyYXk6OmZpbGxB
cmdMaXN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgdW5zaWduZWQgdmVjdG9yRW5kOwogICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogdmVjdG9yOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE1NDgsNyArMTU0
OCw3IEBAIHZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSoKICAgICB1bnNp
Z25lZCB2ZWN0b3JFbmQ7CiAgICAgCiAgICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5ndGgo
KSk7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1
cm47CiAgICAgICAgIApAQCAtMTYwMyw0MCArMTYwMyw0MCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlU
b0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSwg
Z2V0KGV4ZWMsIGkpKTsKIH0KIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4K
K3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJheTo6
Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQmIG51bURlZmluZWQsIHVuc2lnbmVkJiBuZXdSZWxl
dmFudExlbmd0aCkKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwotICAg
IEFTU0VSVChpbmRleGluZ1R5cGUgPT0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAg
ICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwogCi0gICAgdW5z
aWduZWQgbXlSZWxldmFudExlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGluZGV4aW5nVHlwZT4oKTsK
KyAgICB1bnNpZ25lZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8YXJyYXlJbmRl
eGluZ1R5cGU+KCk7CiAgICAgCiAgICAgbnVtRGVmaW5lZCA9IDA7CiAgICAgdW5zaWduZWQgbnVt
VW5kZWZpbmVkID0gMDsKICAgICAgICAgCiAgICAgZm9yICg7IG51bURlZmluZWQgPCBteVJlbGV2
YW50TGVuZ3RoOyArK251bURlZmluZWQpIHsKICAgICAgICAgQVNTRVJUKG51bURlZmluZWQgPCBt
X2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEludDMyKSB7CisgICAgICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJh
eVdpdGhJbnQzMikgewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNJbnQzMigpW251bURlZmluZWRdLmdldCgpOwogICAgICAgICAgICAgaWYgKCF2KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgQVNTRVJUKHYuaXNJbnQzMigpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUg
PT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBB
cnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkXTsKICAgICAgICAgICAgIGlmICh2ICE9IHYpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQot
ICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW251bURlZmlu
ZWRdLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGlu
Z1R5cGU+KClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgIGlmICghdiB8fCB2LmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAo
aW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CisgICAgICAgIGlmIChhcnJheUluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldLmdldCgpOwogICAgICAgICAgICAgaWYgKCF2
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBK
U0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmll
cih2KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAgIGlmIChhcnJheUluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgIGRvdWJsZSB2ID0gbV9idXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKICAgICAgICAgICAgIGlmICh2ICE9IHYpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjUzLDIzICsxNjUzLDIzIEBAIHZvaWQgSlNB
cnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQKICAgICAgICAgICAgIG1fYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZCsrXSA9IHY7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQotICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8aW5kZXhp
bmdUeXBlPigpW2ldLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8YXJy
YXlJbmRleGluZ1R5cGU+KClbaV0uZ2V0KCk7CiAgICAgICAgIGlmICh2KSB7CiAgICAgICAgICAg
ICBpZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAgICsrbnVtVW5kZWZpbmVkOwog
ICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG51bURlZmluZWQgPCBt
X2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIGluZGV4aW5nRGF0
YTxpbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYp
OworICAgICAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtudW1E
ZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAgICAgICAgIAogICAgIG5ld1JlbGV2YW50TGVuZ3RoID0gbnVtRGVmaW5l
ZCArIG51bVVuZGVmaW5lZDsKICAgICAKLSAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUluZGV4aW5nVHlwZSkpCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXApOwogICAgIAot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlw
ZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bURlZmluZWQgPT0gbmV3UmVsZXZhbnRMZW5ndGgp
OwpAQCAtMTY3OCwxOSArMTY3OCwxOSBAQCB2b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5n
KHVuc2lnbmVkCiAgICAgZGVmYXVsdDoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVm
aW5lZDsgaSA8IG5ld1JlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIEFTU0VSVChp
IDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgICAgIGluZGV4aW5nRGF0
YTxpbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZpbmVkKCk7CisgICAgICAgICAgICBpbmRleGlu
Z0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZpbmVkKCk7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IG5ld1JlbGV2YW50
TGVuZ3RoOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwg
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJh
eVdpdGhEb3VibGUpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldID0gUU5hTjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGluZGV4
aW5nVHlwZT4oKVtpXS5jbGVhcigpOworICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5k
ZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKGhhc0FycmF5U3RvcmFn
ZShpbmRleGluZ1R5cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoYXJyYXlJbmRleGluZ1R5
cGUpKQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IG5ld1Jl
bGV2YW50TGVuZ3RoOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihKU0NlbGwpID09IHNpemVvZih1aW50
NjRfdCksIGpzY2VsbF9pc19laWdodF9ieXRlcyk7CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxM
WV9ERVNUUlVDVElCTEUoSlNDZWxsKTsKIAogdm9pZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBj
ZWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9u
IDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKICNpbmNs
dWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkluZGV4
aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIK
ICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAj
aW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCkBAIC05Miw5ICs5NCwxMSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICBib29sIGlzQVBJVmFs
dWVXcmFwcGVyKCkgY29uc3Q7CiAKKyAgICBKU1R5cGUgdHlwZSgpIGNvbnN0OworICAgIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdDsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9p
ZCBjbGVhclN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xl
YXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlSUQgPSAwOyB9CiAKICAgICBjb25zdCBjaGFyKiBj
bGFzc05hbWUoKTsKIApAQCAtMTM1LDIwICsxMzksMjYgQEAgcHVibGljOgogCiAgICAgSlNWYWx1
ZSBmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBz
dGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZU9mZnNldCgpCisgICAgc3RhdGljIHB0cmRpZmZfdCBz
dHJ1Y3R1cmVJRE9mZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTQ2VsbCwgbV9zdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpT
Q2VsbCwgbV9zdHJ1Y3R1cmVJRCk7CiAgICAgfQogCi0gICAgdm9pZCogc3RydWN0dXJlQWRkcmVz
cygpCisgICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX2ZsYWdzKTsKICAgICB9Ci0gICAgICAgIAotI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQotICAgIFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpOyB9Ci0jZW5kaWYKLSAgICAgICAgCisKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV90eXBlKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IGluZGV4aW5nVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9pbmRleGluZ1R5cGUpOworICAgIH0KKwogICAgIHN0YXRp
YyBjb25zdCBUeXBlZEFycmF5VHlwZSBUeXBlZEFycmF5U3RvcmFnZVR5cGUgPSBOb3RUeXBlZEFy
cmF5OwogcHJvdGVjdGVkOgogCkBAIC0xNzAsOCArMTgwLDEyIEBAIHByb3RlY3RlZDoKIAogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotICAgICAgICAK
LSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKKworICAgIFN0cnVjdHVy
ZUlEIG1fc3RydWN0dXJlSUQ7CisgICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOworICAg
IEpTVHlwZSBtX3R5cGU7CisgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBtX2ZsYWdzOwor
ICAgIHVpbnQ4X3QgbV91bnVzZWQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5h
bWUgRnJvbT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJ
bmxpbmVzLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsMTEgQEAgaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKENyZWF0aW5nRWFybHlDZWxsVAogICAgIEFTU0VSVCghaXNDb21w
aWxhdGlvblRocmVhZCgpKTsKIH0KIAotaW5saW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBtX3N0cnVjdHVyZSh2bSwgdGhpcywgc3RydWN0dXJl
KQoraW5saW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBtX3N0cnVjdHVyZUlEKHN0cnVjdHVyZS0+aWQoKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpCisgICAgLCBtX3R5cGUoc3RydWN0dXJlLT50eXBlSW5m
bygpLnR5cGUoKSkKKyAgICAsIG1fZmxhZ3Moc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5
cGVGbGFncygpKQogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKIH0KQEAg
LTU2LDcgKzU5LDcgQEAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdgog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlmCi0gICAgQVNTRVJUKG1fc3RydWN0
dXJlKTsKKyAgICBBU1NFUlQobV9zdHJ1Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2Vs
bDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ3JlYXRpbmdF
YXJseUNlbGxUYWcpCkBAIC02NCwyMyArNjcsNDMgQEAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5p
c2hDcmVhdGlvbihWTSYgdgogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgIEFTU0VSVCh2
bS5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKICAgICB2bS5zZXRJbml0aWFsaXppbmdPYmplY3RD
bGFzcygwKTsKLSAgICBpZiAoc3RydWN0dXJlKQorICAgIGlmIChzdHJ1Y3R1cmUpIHsKKyNlbmRp
ZgorICAgICAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICBtX2lu
ZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CisgICAgICAgIG1fdHlwZSA9
IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCk7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJ
T04pCisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlmCi0gICAgICAg
IG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUodm0sIHRoaXMsIHN0cnVjdHVyZSk7CiAgICAgLy8g
VmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3RydWN0dXJl
LgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSB8fCAhdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKKyAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmVJRCB8fCAhdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKK30KKwor
aW5saW5lIEpTVHlwZSBKU0NlbGw6OnR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7
Cit9CisKK2lubGluZSBJbmRleGluZ1R5cGUgSlNDZWxsOjppbmRleGluZ1R5cGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2luZGV4aW5nVHlwZTsKIH0KIAogaW5saW5lIFN0cnVjdHVyZSogSlND
ZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsK
KyAgICByZXR1cm4gSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX3N0
cnVjdHVyZUlEKTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTUFSS19MT0dfUEFSRU5UKHZp
c2l0b3IsIGNlbGwpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJmNlbGwtPm1fc3RydWN0dXJlKTsK
KyAgICAvLyBGSVhNRTogSXQncyBzaWxseSBhbmQgc29tZXdoYXQgZGFuZ2Vyb3VzIHRvIGhhdmUg
dG8gZG8gdGhpcyB0byBzYXRpc2Z5IFNsb3RWaXNpdG9yLgorICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gY2VsbC0+c3RydWN0dXJlKCk7CisgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBv
aW50ZXIoJnN0cnVjdHVyZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xMTYsMzcg
KzEzOSw0MSBAQCBpbmxpbmUgYm9vbCBpc1phcHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCiAKIGlu
bGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVj
dHVyZS0+aXNPYmplY3QoKTsKKyAgICByZXR1cm4gVHlwZUluZm86OmlzT2JqZWN0KG1fdHlwZSk7
CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZTsKKyAgICByZXR1
cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNHZXR0
ZXJTZXR0ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gR2V0dGVyU2V0dGVyVHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEdldHRlclNl
dHRlclR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBQcm94eVR5cGU7Cisg
ICAgcmV0dXJuIG1fdHlwZSA9PSBQcm94eVR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6
aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKKyAgICByZXR1cm4gbV90eXBl
ID09IEFQSVZhbHVlV3JhcHBlclR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6c2V0U3Ry
dWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkgPT0gdGhpcy0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKLSAgICBBU1NFUlQo
c3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotICAg
IEFTU0VSVCghbV9zdHJ1Y3R1cmUKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUu
Z2V0KCkgPT0gc3RydWN0dXJlKTsKLSAgICBtX3N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVj
dHVyZSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gdGhpcy0+c3RydWN0
dXJlKCktPmNsYXNzSW5mbygpKTsKKyAgICBBU1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpCisgICAg
ICAgIHx8IHRoaXMtPnN0cnVjdHVyZSgpLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5J
bnZhbGlkYXRlZCgpCisgICAgICAgIHx8IEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFi
bGUoKS5nZXQoc3RydWN0dXJlLT5pZCgpKSA9PSBzdHJ1Y3R1cmUpOworICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKHRoaXMsIHN0cnVjdHVyZSk7CisgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVy
ZS0+aWQoKTsKKyAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVG
bGFncygpOworICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAg
bV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOwogfQogCiBpbmxpbmUg
Y29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGVGb3JEZXN0cnVjdGlvbigpIGNv
bnN0CkBAIC0xNTYsMTAgKzE4MywxMSBAQCBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2Vs
bDo6bWV0aG9kCiAKIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJs
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IG1fc3RydWN0
dXJlLT5zdHJ1Y3R1cmUoKSkKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVj
dHVyZSgpOworICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnN0
cnVjdHVyZSgpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVChyb290U3RydWN0dXJlID09IHJvb3RT
dHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKTsKIAotICAgIHJldHVybiAmY2xhc3NJbmZvKCktPm1ldGhv
ZFRhYmxlOworICAgIHJldHVybiAmc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7
CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZv
KSBjb25zdApAQCAtMTczLDEwICsyMDEsMTEgQEAgaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0
cyhjb25zdCBDbGFzcwogLy8gY2FzZSBieSBjaGVja2luZyB3aGV0aGVyIHRoZSBoYXNoIGhhcyB5
ZXQgYmVlbiBzZXQgZm9yIHRoaXMgc3RyaW5nLgogQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTQ2Vs
bDo6ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
IHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIGlm
ICghc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYm
ICFzdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSkgewogICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBuYW1lLmltcGwoKS0+aGFzSGFzaCgpCi0gICAgICAgICAgICA/
IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkKLSAg
ICAgICAgICAgIDogc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBuYW1lKTsKKyAgICAgICAg
ICAgID8gc3RydWN0dXJlLT5nZXQoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBuYW1lKSkK
KyAgICAgICAgICAgIDogc3RydWN0dXJlLT5nZXQoZXhlYy0+dm0oKSwgbmFtZSk7CiAgICAgICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBhc09iamVj
dCh0aGlzKS0+bG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KS0+Z2V0KCk7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsNyBA
QCBpbmxpbmUgY29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mCiB7CiAgICAgaWYgKE1h
cmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKS0+ZGVzdHJ1Y3RvclR5cGUoKSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNEZXN0cnVjdGli
bGVPYmplY3QqPih0aGlzKS0+Y2xhc3NJbmZvKCk7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04p
Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCktPmNsYXNzSW5mbygpOwot
I2Vsc2UKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOwotI2VuZGlmCisgICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZp
c2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nyw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsYXN0
QXJyYXlTaXplID0gMDsKIAogSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVjdFNsb3coSlNDZWxsKiBj
ZWxsKQogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKCk7Ci0g
ICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisg
ICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIGNl
bGw7Ci0gICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihJbnRlcm5h
bEZ1bmN0aW9uOjppbmZvKCkpKQorICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCktPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1
cm4gY2VsbDsKICAgICByZXR1cm4gMDsKIH0KQEAgLTI0OCwxMSArMjQ3LDEyIEBAIHZvaWQgSlNG
aW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwKICAgICAKICAgICBKU0NlbGw6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
dGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgaWYgKGJ1dHRlcmZseSkKLSAgICAgICAgdGhp
c09iamVjdC0+dmlzaXRCdXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICAgICAgdGhpc09iamVjdC0+dmlzaXRC
dXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKSk7
CiAKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5s
aW5lU2l6ZSgpOworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVyZS0+aW5saW5lU2l6
ZSgpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2Uo
KSwgc3RvcmFnZVNpemUpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjc2LDcgKzI3Niw3
IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICBpZiAoaSA+
IE1BWF9BUlJBWV9JTkRFWCkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGkpLCBzbG90KTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFrOwpAQCAtNDE2LDcgKzQx
Niw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBl
KCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIApAQCAtNTYwLDcgKzU2MCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVu
dGVyRGljdGlvbmFyeUkKIAogdm9pZCBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdN
b2RlKFZNJiB2bSkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkg
eworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC01OTUsMTMgKzU5NSwxNCBAQCB2b2lk
IEpTT2JqZWN0Ojpub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjCiBCdXR0ZXJmbHkqIEpTT2JqZWN0
OjpjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIHNp
emVfdCBlbGVtZW50U2l6ZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZX0lOREVY
KTsKLSAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIElu
ZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKICAgICBBU1NF
UlRfVU5VU0VEKG9sZFR5cGUsICFoYXNJbmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSk7Ci0gICAg
QVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgQVNTRVJU
KCFzdHJ1Y3R1cmUtPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgIEFTU0VSVCghaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSgpKTsKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1h
eChsZW5ndGgsIEJBU0VfVkVDVE9SX0xFTik7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkg
PSBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIG1fYnV0dGVyZmx5
LCB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwKKyAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIGVsZW1lbnRT
aXplICogdmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChs
ZW5ndGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7
CkBAIC02NDksMTAgKzY1MCwxMSBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0
ZUluaXRpCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UoVk0mIHZt
LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKICAgICBEZWZlckdD
IGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1
Y3R1cmUoKTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAg
IEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsK
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJy
YXlSaWdodCgKLSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRl
cmZseSwgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwKICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAKQEAgLTY2Miw3ICs2NjQsNyBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhCiAgICAgcmVzdWx0LT5t
X3NwYXJzZU1hcC5jbGVhcigpOwogICAgIHJlc3VsdC0+bV9udW1WYWx1ZXNJblZlY3RvciA9IDA7
CiAgICAgcmVzdWx0LT5tX2luZGV4QmlhcyA9IDA7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHN0
cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkp
OwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0
ZXJmbHkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NzQsMTQgKzY3NiwxNCBAQCBBcnJh
eVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQXJyCiAKIENvbnRpZ3VvdXNKU1ZhbHVl
cyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvSW50MzIoVk0mIHZtKQogewotICAgIEFTU0VS
VChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJU
KGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUlu
dDMyKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsKIH0KIAog
Q29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZShWTSYg
dm0pCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQog
ICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKQEAgLTY5
MiwxNiArNjk0LDE3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWMK
IAogQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1
b3VzKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsK
ICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnN0cnVj
dENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHMoVk0mIHZtLCB1bnNp
Z25lZCBuZWVkZWRMZW5ndGgpCiB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUoKTsKICAgICB1bnNpZ25lZCBwdWJsaWNMZW5ndGggPSBtX2J1dHRlcmZseS0+cHVi
bGljTGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0cnVjdHVyZSgp
LT5vdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVj
dHVyZSgpLT5vdXRPZkxpbmVTaXplKCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9
IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eVNp
emUgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKTsKICAgICAKICAgICBCdXR0ZXJmbHkqIG5l
d0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFsaXplZCgKICAgICAgICAgdm0s
IHRoaXMsIDAsIHByb3BlcnR5Q2FwYWNpdHksIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihu
ZWVkZWRMZW5ndGgpKTsKQEAgLTcyNCw3ICs3MjcsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
Ojpjb25zdHJ1Y3RDb252ZXJ0CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNp
ZGVkVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlv
biwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
OworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBB
cnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRo
b3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAgIC8vIE5vIG5lZWQgdG8g
Y29weSBlbGVtZW50cy4KQEAgLTc0Niw3ICs3NDksNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
Ojpjb252ZXJ0VW5kZWNpZGVkCiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0RvdWJsZShWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkp
OwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgo
KTsgaS0tOykgewogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGN1cnJlbnQgPSAmbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldOwpAQCAtNzY2LDcgKzc2OSw3IEBAIENvbnRp
Z3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzIKIAogQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VS
VChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFz
SW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVj
dHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVDb250
aWd1b3VzKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CkBAIC03NzQs
NyArNzc3LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MwogCiBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0s
IE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1
Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRM
ZW5ndGgpOwpAQCAtODA0LDcgKzgwNyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRJbnQzMlRvQXIKIHRlbXBsYXRlPEpTT2JqZWN0OjpEb3VibGVUb0NvbnRpZ3VvdXNNb2RlIG1v
ZGU+CiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmdlbmVyaWNDb252ZXJ0RG91YmxlVG9D
b250aWd1b3VzKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsK
ICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7
IGktLTspIHsKICAgICAgICAgZG91YmxlKiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKClbaV07CkBAIC04NDQsNyArODQ3LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjpyYWdlQ29udmVydAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJs
ZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24s
IHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgQVNTRVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9y
YWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENv
cHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTg3Myw3ICs4NzYsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoaW5kZXhp
bmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1
Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRM
ZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsgaS0tOykgewpAQCAtOTUyLDcgKzk1NSw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVj
dDo6ZW5zdXJlSW50MzIKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0g
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAg
ICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCkt
Pm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNK
U1ZhbHVlcygpOwpAQCAtOTc2LDcgKzk3OSw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0
OjplbnN1cmVEb3VibGUKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0g
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAg
ICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCkt
Pm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNE
b3VibGVzKCk7CkBAIC0xMDAyLDcgKzEwMDUsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmpl
Y3Q6OmVuc3VyZUNvbnRpCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIAot
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgp
LT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBDb250aWd1b3Vz
SlNWYWx1ZXMoKTsKQEAgLTEwNDIsNyArMTA0NSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmVuc3VyZUFycmF5U3RvcmEKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAg
Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4
aW5nTW9kZSh2bSk7CkBAIC0xMDc2LDcgKzEwNzksNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
OjplbnN1cmVBcnJheVN0b3JhCiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5
U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZShWTSYgdm0pCiB7Ci0g
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAg
ICAgICAgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKTsKICAgICAgICAgU3BhcnNlQXJyYXlW
YWx1ZU1hcCogbWFwID0gYWxsb2NhdGVTcGFyc2VJbmRleE1hcCh2bSk7CkBAIC0xMTA3LDcgKzEx
MTAsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhCiAKIHZvaWQg
SlNPYmplY3Q6OnN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0sIEFsbG9jYXRlU2xvd1B1dEFycmF5
U3RvcmFnZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE1NCwxMCArMTE1NywxMCBAQCB2b2lkIEpT
T2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKQorICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHNob3VsZFVzZVNsb3dQdXQoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChpbmRleGlu
Z1R5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJh
eVN0b3JhZ2Uodm0pOwpAQCAtMTIwNiwxMCArMTIwOSwxMSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3ROb25JbmRleEFjY2Vzc29yCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5
U2xvdDo6TmV3UHJvcGVydHkpCiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjph
dHRyaWJ1dGVDaGFuZ2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzKSk7CiAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgIHN0cnVjdHVyZSgp
LT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICBzdHJ1Y3R1cmUtPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0SGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+
dW5kZXJzY29yZVByb3RvKTsKKyAgICBzdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7
CiB9CiAKIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTEyNzAsNyArMTI3NCw3IEBAIGJvb2wgSlNP
YmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAgICBpZiAoaSA+IE1BWF9BUlJBWV9J
TkRFWCkKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogICAg
IAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19U
WVBFUzoKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDU0LDcgKzE0NTgsNyBAQCB2b2lkIEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqCiAgICAgLy8gRklYTUU6IEZpbGxpbmcg
UHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRlZ2VyCiAg
ICAgLy8gaXMgaW5jcmVkaWJseSBpbmVmZmljaWVudCBmb3IgbGFyZ2UgYXJyYXlzLiBXZSBuZWVk
IGEgZGlmZmVyZW50IGFwcHJvYWNoLAogICAgIC8vIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVh
bnMgYSBkaWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9wZXJ0eU5hbWVBcnJheS4KLSAgICBzd2l0
Y2ggKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChv
YmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBicmVh
azsKQEAgLTE2MDQsMTkgKzE2MDgsMjAgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5j
dGlvbnNGb3JEZQogCiBib29sIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoVk0mIHZtLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKQogewotICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUo
KS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSkKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRo
aXMtPnN0cnVjdHVyZSgpOworICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2
bSwgcHJvcGVydHlOYW1lKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldDsKLSAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgeworICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOworICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKICAgICBpZiAob2Zmc2V0ID09IGlu
dmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXREaXJlY3RVbmRlZmlu
ZWQob2Zmc2V0KTsKQEAgLTE4NDUsNyArMTg1MCw3IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRU
b0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgog
dm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1
dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBB
U1NFUlQoKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9
PSBpbmRleGluZ1NoYXBlKTsKKyAgICBBU1NFUlQoKGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdT
aGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRC
ZVNwYXJzZSgpKTsKICAgICAKICAgICAvLyBGb3IgdXMgdG8gZ2V0IGhlcmUsIHRoZSBpbmRleCBp
cyBlaXRoZXIgZ3JlYXRlciB0aGFuIHRoZSBwdWJsaWMgbGVuZ3RoLCBvciBncmVhdGVyIHRoYW4K
QEAgLTE5NzQsNyArMTk3OSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0
b3JMZW4KICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFycmF5IGluZGV4IHRoYXQgaXMgb3V0
c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCiAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lO
REVYKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKSB7CiAgICAg
ICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKQEAg
LTIwNDIsNyArMjA0Nyw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVj
dG8KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIAogICAgIC8vIGkgc2hvdWxkIGJlIGEg
dmFsaWQgYXJyYXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZlY3Rvci4K
LSAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
OworICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKTsKICAgICBBU1NF
UlQoYXJyYXlTdG9yYWdlKCkgPT0gc3RvcmFnZSk7CiAgICAgQVNTRVJUKGkgPj0gc3RvcmFnZS0+
dmVjdG9yTGVuZ3RoKCkgfHwgYXR0cmlidXRlcyk7CiAgICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZ
X0lOREVYKTsKQEAgLTIxMjQsNyArMjEyOSw3IEBAIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdElu
ZGV4QmV5b25kVmVjdG8KICAgICBpZiAoYXR0cmlidXRlcyAmIChSZWFkT25seSB8IEFjY2Vzc29y
KSkKICAgICAgICAgbm90aWZ5UHJlc2VuY2VPZkluZGV4ZWRBY2Nlc3NvcnModm0pOwogICAgIAot
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAg
ICAgICAgIGlmIChpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgYXR0cmlidXRlcykgewogICAg
ICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZSgKQEAgLTIyNDgsNyArMjI1Myw3IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgSlNP
YmplY3Q6OmdldE5ld1YKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGg7CiAgICAgdW5zaWduZWQg
bGVuZ3RoOwogICAgIAotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5n
VHlwZSgpKSkgewogICAgICAgICB2ZWN0b3JMZW5ndGggPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCk7CiAgICAgICAgIGxlbmd0aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAg
ICB9IGVsc2UgewpAQCAtMjI4Nyw3ICsyMjkyLDcgQEAgdW5zaWduZWQgSlNPYmplY3Q6OmNvdW50
RWxlbWVudHMoQnV0dGVyZgogCiB1bnNpZ25lZCBKU09iamVjdDo6Y291bnRFbGVtZW50cygpCiB7
Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gMDsK
QEAgLTIzMjYsMTAgKzIzMzEsMTEgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5n
dGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9IGdldE5ld1ZlY3Rvckxlbmd0
aChuZXdMZW5ndGgpOwogCiAgICAgLy8gRmFzdCBjYXNlIC0gdGhlcmUgaXMgbm8gcHJlY2FwYWNp
dHkuIEluIHRoZXNlIGNhc2VzIGEgcmVhbGxvYyBtYWtlcyBzZW5zZS4KKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOwogICAgIGlmIChMSUtFTFkoIWluZGV4Qmlh
cykpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5ncm93QXJyYXlSaWdodCgK
LSAgICAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHRydWUsCisgICAgICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgICAgICBBcnJheVN0b3Jh
Z2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rv
ckxlbmd0aCkpOwogICAgICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIzNDMsNyArMjM0OSw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVj
dG9yTGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdJbmRleEJpYXMgPSBzdGQ6Om1pbihpbmRl
eEJpYXMgPj4gMSwgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCAtIG5ld1ZlY3Rvckxlbmd0aCk7
CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVz
aXplQXJyYXkoCiAgICAgICAgIHZtLCB0aGlzLAotICAgICAgICBzdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCks
CisgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9y
YWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1ZSwg
QXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3QnV0
dGVyZmx5KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzU3LDcgKzIzNjMsNyBAQCBib29s
IEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiB2b2lkIEpTT2JqZWN0OjplbnN1
cmVMZW5ndGhTbG93KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5n
dGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRl
Y2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRp
Z3VvdXMoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNE
b3VibGUoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwog
ICAgIEFTU0VSVChsZW5ndGggPiBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgIAog
ICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9IHN0ZDo6bWluKApAQCAtMjM2NSwxMSArMjM3
MSwxMiBAQCB2b2lkIEpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgCiAgICAgICAg
IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpOwogICAgIHVuc2lnbmVkIG9sZFZlY3Rvckxlbmd0
aCA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICBEZWZlckdDIGRlZmVyR0Modm0u
aGVhcCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKICAg
ICBtX2J1dHRlcmZseSA9IG1fYnV0dGVyZmx5LT5ncm93QXJyYXlSaWdodCgKLSAgICAgICAgdm0s
IHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1
ZSwKKyAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCB0cnVlLAogICAgICAgICBvbGRWZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpLAogICAgICAgICBuZXdWZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KTsKLSAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAg
ICBpZiAoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKICAgICAgICAg
ICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlz
aW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGlu
ZSBKU0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUu
aXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCkgPT0gSlNGdW5jdGlvblR5cGUpKQorICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUu
YXNDZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgIHJldHVybiB2YWx1
ZS5hc0NlbGwoKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEzMiwxNCArMTMyLDE0IEBAIHB1Ymxp
YzoKIAogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkK
KyAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5n
dGgoKTsKICAgICB9CiAgICAgICAgIAogICAgIHVuc2lnbmVkIGdldFZlY3Rvckxlbmd0aCgpCiAg
ICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdU
eXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgSlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5n
ZXQoKS5hc0ludDMyKCkpOwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZ
UEVTOgpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1ZSB0
cnlHZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
Mjc5LDcgKzI3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBjYW5TZXRJbmRleFF1
aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAg
ICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMSw3
ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5
Rm9yUHV0RGlyZWN0KHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zMTgsNyArMzE4LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICB2b2lkIHNldEluZGV4UXVp
Y2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAg
ICAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAg
ICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKQEAgLTM2OSw3ICszNjksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUluZGV4KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNW
YWx1ZSB2KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgICAgIHNldEluZGV4UXVpY2ts
eVRvVW5kZWNpZGVkKHZtLCBpLCB2KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDE4LDcgKzQx
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBoYXNTcGFyc2VNYXAoKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKQEAgLTQzNSw3ICs0MzUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgaW5TcGFyc2VJbmRleGluZ01vZGUoKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKQEAgLTQ5MSwzMSArNDkxLDM1IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9w
ZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgIHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgY2hlY2tPZmZzZXQo
b2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBjaGVj
a09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJl
dHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1
ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0CiAgICAgewogICAgICAg
ICBKU0NlbGwqIHNwZWNpZmljOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKLSAg
ICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBz
dHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQgPyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAg
ICBQcm9wZXJ0eU9mZnNldCBnZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0
LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBjaGVja09mZnNl
dChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBv
ZmZzZXQ7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGlyZWN0T2Zmc2V0KFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAg
ewogICAgICAgICBKU0NlbGwqIHNwZWNpZmljOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljKTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2Fw
YWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJl
KCk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICAgICAgY2hlY2tPZmZzZXQo
b2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zm
c2V0OwogICAgIH0KIApAQCAtNjQxLDcgKzY0NSw3IEBAIHB1YmxpYzoKICAgICAvLyBjb250aWd1
b3VzLCBhcnJheSBzdG9yYWdlKS4KICAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW5zdXJlSW50MzIo
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNJbnQzMihpbmRleGluZ1R5
cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIo
KTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlSW50MzJTbG93KHZtKTsKQEAg
LTY1Myw3ICs2NTcsNyBAQCBwdWJsaWM6CiAgICAgLy8gb3IgYXJyYXkgc3RvcmFnZSkuCiAgICAg
Q29udGlndW91c0RvdWJsZXMgZW5zdXJlRG91YmxlKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlm
IChMSUtFTFkoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAg
ICBpZiAoTElLRUxZKGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0
dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgcmV0dXJuIGVuc3VyZURvdWJsZVNsb3codm0pOwpAQCAtNjYzLDcgKzY2Nyw3IEBAIHB1Ymxp
YzoKICAgICAvLyBpbmRleGluZyBzaG91bGQgYmUgc3BhcnNlIG9yIGJlY2F1c2Ugd2UncmUgaGF2
aW5nIGEgYmFkIHRpbWUuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUNvbnRpZ3VvdXMo
Vk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMo
aW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGln
dW91cygpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVDb250aWd1b3VzU2xv
dyh2bSk7CkBAIC02NzQsNyArNjc4LDcgQEAgcHVibGljOgogICAgIC8vIGF0dGVtcHRzIHRvIGNv
bnZlcnQgZWFjaCBkb3VibGUgdG8gYW4gaW50MzIuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIHJh
Z2VFbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFz
Q29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJ
S0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4g
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4g
cmFnZUVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsKQEAgLTY4Niw3ICs2OTAsNyBAQCBwdWJsaWM6
CiAgICAgLy8gYWxyZWFkeS4KICAgICBBcnJheVN0b3JhZ2UqIGVuc3VyZUFycmF5U3RvcmFnZShW
TSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNBcnJheVN0b3Jh
Z2UoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3Rv
cmFnZVNsb3codm0pOwpAQCAtNzM0LDcgKzczOCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBzdG9y
YWdlLiBUaGlzIHdpbGwgYXNzZXJ0IG90aGVyd2lzZS4KICAgICBBcnJheVN0b3JhZ2UqIGFycmF5
U3RvcmFnZSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdlKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdl
KCk7CiAgICAgfQogICAgICAgICAKQEAgLTc0Miw3ICs3NDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gb2JqZWN0IGlzIGluIGEgbW9kZSB3aGVyZSBpdCBoYXMgYXJyYXkgc3RvcmFnZS4KICAgICBB
cnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZU9yTnVsbCgpCiAgICAgewotICAgICAgICBzd2l0Y2gg
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAg
ICAgICAgICAgIApAQCAtODA4LDcgKzgxMiw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGVuc3Vy
ZUxlbmd0aChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAgIEFTU0VSVChs
ZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgICAgICBBU1NFUlQoaGFzQ29udGlndW91cyhz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICBBU1NF
UlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoaW5kZXhpbmdUeXBl
KCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKGluZGV4aW5n
VHlwZSgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKG1fYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIGVuc3VyZUxlbmd0aFNsb3codm0sIGxlbmd0
aCk7CkBAIC04NDYsNyArODUwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQ29udGlndW91c0pTVmFs
dWVzIGN1cnJlbnRJbmRleGluZ0RhdGEoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBB
TExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRl
cmZseS0+Y29udGlndW91cygpOwpAQCAtODYzLDcgKzg2Nyw3IEBAIHByb3RlY3RlZDoKICAgICBK
U1ZhbHVlIGdldEhvbHlJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIEFT
U0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5
cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
Y2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Y29udGlndW91cygpW2ldLmdldCgpOwpAQCAtOTAzLDcgKzkwNyw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRSZWxldmFudExlbmd0aCgpCiAgICAgewot
ICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
IGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC05NzUsNiArOTc5LDExIEBA
IHByaXZhdGU6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQnV0dGVyZmx5KiBtX2J1dHRlcmZseTsK
KworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitwcml2YXRlOgorICAgIHVpbnQzMl90IG1fcGFkZGlu
ZzsKKyNlbmRpZgogfTsKIAogLy8gSlNOb25GaW5hbE9iamVjdCBpcyBhIHR5cGUgb2YgSlNPYmpl
Y3QgdGhhdCBoYXMgc29tZSBpbnRlcm5hbCBzdG9yYWdlLApAQCAtMTEwMSwzNSArMTExMCwzNSBA
QCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0CiAKIGlubGluZSBib29s
IEpTT2JqZWN0Ojppc0dsb2JhbE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxPYmplY3RUeXBlOworICAgIHJldHVybiB0
eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
VmFyaWFibGVPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkgPj0gVmFyaWFibGVPYmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPj0g
VmFyaWFibGVPYmplY3RUeXBlOwogfQogCiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc1N0YXRp
Y1Njb3BlT2JqZWN0KCkgY29uc3QKIHsKLSAgICBKU1R5cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLnR5cGUoKTsKKyAgICBKU1R5cGUgdHlwZSA9IHRoaXMtPnR5cGUoKTsKICAgICBy
ZXR1cm4gdHlwZSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlIHx8IHR5cGUgPT0gQWN0aXZhdGlvbk9i
amVjdFR5cGU7CiB9CiAKIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09
IE5hbWVTY29wZU9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBOYW1lU2NvcGVPYmpl
Y3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEFj
dGl2YXRpb25PYmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gQWN0aXZhdGlvbk9iamVj
dFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0Vycm9ySW5zdGFuY2UoKSBjb25z
dAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRXJyb3JJ
bnN0YW5jZVR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKIH0K
IAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKQEAgLTExOTEsMTAg
KzEyMDAsMTEgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPdwogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpcy0+c3RydWN0dXJlKCk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7CiAg
ICAgaWYgKExJS0VMWShpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpKSB7CiAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBnZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5oYXNH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIHZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlTbG90KHNsb3Qs
IHZhbHVlLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXMsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwpAQCAtMTI3Mywx
NSArMTI4MywxNiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAg
ICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVlKSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFw
OjpoZWFwKHRoaXMpKTsKICAgICBBU1NFUlQocHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9w
ZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogCi0gICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkgeworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7Cisg
ICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247
Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsK
KyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAg
ICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICAvLyBJZiB0
aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRo
ZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRpZmZlcmVudCwg
dGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmljRnVuY3Rpb24g
JiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24pKQotICAgICAg
ICAgICAgICAgIHN0cnVjdHVyZSgpLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24odm0sIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9u
YXJ5RnVuY3Rpb24odm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICBpZiAoKG1vZGUgPT0g
UHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMDIsMzMgKzEzMTMsMzMgQEAgaW5saW5lIGJvb2wg
SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZseTsK
LSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkK
LSAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCkt
PmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2
bSwgc3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnB1
dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0g
Z3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
c3RydWN0dXJlLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAg
ICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgc2V0
U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAKICAg
ICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1Zh
bGlkT2Zmc2V0KG9mZnNldCkpOwogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUp
OwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJlbG93Lgog
ICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAgICBzbG90LnNldE5ld1By
b3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkp
Ci0gICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMo
KTsKKyAgICAgICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKLSAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewor
ICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCk7CisgICAgaWYgKFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7CiAgICAgICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBt
X2J1dHRlcmZseTsKLSAgICAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBzdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpCi0gICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFjaXR5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFj
aXR5KCkpOworICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG5ld1N0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSkKKyAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxp
bmVTdG9yYWdlKHZtLCBjdXJyZW50Q2FwYWNpdHksIG5ld1N0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CiAKICAgICAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKLSAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKLSAgICAgICAgc2V0U3RydWN0
dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CisgICAgICAgIEFT
U0VSVChuZXdTdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgIHNldFN0
cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAg
ICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBUaGlzIGlzIGEg
bmV3IHByb3BlcnR5OyB0cmFuc2l0aW9ucyB3aXRoIHNwZWNpZmljIHZhbHVlcyBhcmUgbm90IGN1
cnJlbnRseSBjYWNoYWJsZSwKICAgICAgICAgLy8gc28gbGVhdmUgdGhlIHNsb3QgaW4gYW4gdW5j
YWNoYWJsZSBzdGF0ZS4KQEAgLTEzMzksNyArMTM1MCw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0
OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwog
ICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247Ci0gICAgb2Zmc2V0ID0gc3RydWN0
dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pOworICAgIG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAg
aWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgIGlmICgobW9kZSA9PSBQdXRN
b2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTM2MCw3ICsxMzcxLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKAogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91Z2ggdG8g
KDMpLgotICAgICAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSkpOworICAgICAg
ICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIGNhc2UgKDMpIHNldCB0aGUgc2xvdCwgZG8gdGhlIHB1dCwgcmV0dXJuLgpAQCAtMTM3Miw3
ICsxMzgzLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAg
IGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiAhaXNFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0KCkpOworICAg
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0LCBz
bG90LmNvbnRleHQoKSk7CiAgICAgCiAgICAgdmFsaWRhdGVPZmZzZXQob2Zmc2V0KTsKICAgICBB
U1NFUlQoc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwpAQCAtMTQzNiwxMCArMTQ0
NywxMSBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyCiAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIo
KSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVy
Zmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9m
TGluZVN0b3JhZ2UoKSkKLSAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3Jh
Z2Uodm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3Vn
Z2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Ci0gICAg
c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIGlmIChz
dHJ1Y3R1cmUtPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdCdXR0
ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgp
KTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVP
YmplY3QodmFsdWUpKTsKKyAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVy
ZSwgbmV3QnV0dGVyZmx5KTsKICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgCiAgICAgICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhD
b21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOworICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CkBAIC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJl
SXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0KiBvYmplY3Qp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAxNTgz
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFj
Y2VzcyhFeGVjU3QKIEpTT2JqZWN0KiBKU1Njb3BlOjpvYmplY3RBdFNjb3BlKEpTU2NvcGUqIHNj
b3BlKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzY29wZTsKLSAgICBpZiAob2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkKKyAgICBpZiAo
b2JqZWN0LT50eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxK
U1dpdGhTY29wZSo+KG9iamVjdCktPm9iamVjdCgpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTU4
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3Ry
aW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyksIGluZm8oKSk7CisgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8s
IFR5cGVJbmZvKFN0cmluZ1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3RoKTsgfQpAQCAtMTc0LDYgKzE3NCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9OwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICBmcmllbmQgY2xhc3Mg
SlNWYWx1ZTsKICAgICAgICAgICAgIAogICAgICAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KQEAgLTQ5Nyw3ICs0OTksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlubGluZSBib29sIGlzSlNT
dHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNz
SW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5n
KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT50eXBlKCkgPT0g
U3RyaW5nVHlwZTsgfQogCiAgICAgLy8gLS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1lbnVtIEpTVHlwZSB7CitlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAg
IFVuc3BlY2lmaWVkVHlwZSwKICAgICBVbmRlZmluZWRUeXBlLAogICAgIEJvb2xlYW5UeXBlLApA
QCAtNTUsNiArNTUsNyBAQCBlbnVtIEpTVHlwZSB7CiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAg
ICAgUHJveHlUeXBlLAogICAgIFdpdGhTY29wZVR5cGUsCisgICAgQXJndW1lbnRzVHlwZSwKIAog
ICAgIE5hbWVTY29wZU9iamVjdFR5cGUsCiAgICAgLy8gVmFyaWFibGVPYmplY3RUeXBlIG11c3Qg
YmUgbGVzcyB0aGFuIE1PU1Qgb2YgdGhlIHR5cGVzIG9mIGl0cyBzdWJjbGFzc2VzIGFuZCBvbmx5
IGl0cyBzdWJjbGFzc2VzLgpAQCAtNjQsNiArNjUsOCBAQCBlbnVtIEpTVHlwZSB7CiAgICAgQWN0
aXZhdGlvbk9iamVjdFR5cGUsCiB9OwogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNUeXBlKSA9
PSBzaXplb2YodWludDhfdCksIHNpemVvZl9qc3R5cGVfaXNfb25lX2J5dGUpOworCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZyA9IDEgPDwgOTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSGFzSW1wdXJl
R2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCAxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlSGFzUmFyZURhdGEgPSAxIDw8IDExOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCAxMjsKIAogICAgIGNsYXNzIFR5cGVJbmZvIHsK
ICAgICBwdWJsaWM6CkBAIC02Niw3ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU1R5
cGU+KG1fdHlwZSk7IH0KLSAgICAgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA+PSBPYmplY3RUeXBlOyB9CisgICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBpc09iamVjdCh0eXBlKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29sIGlzT2JqZWN0KEpT
VHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID49IE9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBp
c0ZpbmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZpbmFsT2JqZWN0VHlwZTsg
fQogICAgICAgICBib29sIGlzTnVtYmVyT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IE51bWJlck9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc05hbWUoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gTmFtZUluc3RhbmNlVHlwZTsgfQpAQCAtODQsNiArODYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyk7IH0KICAgICAg
ICAgYm9vbCBoYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBpc1Nl
dE9uRmxhZ3MyKEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCk7IH0KICAgICAgICAgYm9vbCBz
dHJ1Y3R1cmVIYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0
dXJlSGFzUmFyZURhdGEpOyB9CisgICAgICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNv
bnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0dXJlSXNJbW1vcnRhbCk7IH0KIAogICAg
ICAgICBzdGF0aWMgcHRyZGlmZl90IGZsYWdzT2Zmc2V0KCkKICAgICAgICAgewpAQCAtOTUsNiAr
OTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoVHlwZUluZm8sIG1fdHlwZSk7CiAgICAgICAgIH0KIAorICAgICAgICB0eXBlZGVmIHVpbnQ4
X3QgSW5saW5lVHlwZUZsYWdzOworICAgICAgICBJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZs
YWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVj
dHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICB0
eXBlZGVmIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50MzJfdD4gSW5kZXhU
cmFpdHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBqc0lz
T2JqZWN0VHlwZShDYWxsRnJhbWUqIGNhbGxGcmFtZQogICAgIGlmICghdi5pc0NlbGwoKSkKICAg
ICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAKLSAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKTsKKyAgICBKU1R5cGUgdHlwZSA9IHYuYXND
ZWxsKCktPnR5cGUoKTsKICAgICBpZiAodHlwZSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0gT2JqZWN0VHlwZSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShy
ZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CkBAIC0yMDIsNiArMjAyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eSgpOwogI2VuZGlmCiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKwogcHJpdmF0ZToKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENh
cGFjaXR5KTsKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlU
YWJsZSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlz
aW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhMZWFmVHlwZSwgMCksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBERUNMQVJFX0lORk87CkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdFeHBLZXkga2V5KCkgeyByZXR1cm4gUmVnRXhwS2V5KG1fZmxhZ3MsIG1fcGF0dGVyblN0
cmluZyk7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24g
MTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0
dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVj
dHVyZUZsYWdzOwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTU4
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU1LDEzICsxNTUsMTQgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0
aXN0aWNzKCkKIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKGluZGV4aW5nVHlw
ZSkKKyAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCiAgICAgLCBtX2dsb2JhbE9iamVjdCh2bSwg
dGhpcywgZ2xvYmFsT2JqZWN0LCBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+OjpNYXlCZU51
bGwpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFz
c0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFs
aXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlw
ZUluZm8odHlwZUluZm8pCi0gICAgLCBtX2luZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpCiAgICAg
LCBtX2lubGluZUNhcGFjaXR5KGlubGluZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2lu
ZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxz
ZSkKQEAgLTE4MywxMiArMTg0LDEzIEBAIGNvbnN0IENsYXNzSW5mbyBTdHJ1Y3R1cmU6OnNfaW5m
byA9IHsgIlMKIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAgIDogSlNDZWxsKENy
ZWF0aW5nRWFybHlDZWxsKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpKQorICAgICwgbV9pbmRleGluZ1R5cGUoMCkKKyAgICAs
IG1fdHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0
dXJlSXNJbW1vcnRhbCkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBqc051bGwoKSkKICAg
ICAsIG1fY2xhc3NJbmZvKGluZm8oKSkKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQo
SW5pdGlhbGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAg
LCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikKLSAgICAs
IG1faW5kZXhpbmdUeXBlKDApCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KDApCiAgICAgLCBtX2Rp
Y3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0
eVRhYmxlKGZhbHNlKQpAQCAtMjA1LDEyICsyMDcsMTMgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUo
Vk0mIHZtKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjdHVyZSog
cHJldmlvdXMpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSkK
KyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJ
RCh0aGlzKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5pbmRleGluZ1R5cGVJbmNs
dWRpbmdIaXN0b3J5KCkpCisgICAgLCBtX3R5cGVJbmZvKHByZXZpb3VzLT50eXBlSW5mbygpLnR5
cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1Y3R1cmVIYXNSYXJlRGF0
YSkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcmV2aW91cy0+c3RvcmVkUHJvdG90eXBl
KCkpCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3Ry
YW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29mZnNl
dChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50
eXBlKCksIHByZXZpb3VzLT50eXBlSW5mbygpLmZsYWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURh
dGEpCi0gICAgLCBtX2luZGV4aW5nVHlwZShwcmV2aW91cy0+aW5kZXhpbmdUeXBlSW5jbHVkaW5n
SGlzdG9yeSgpKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShwcmV2aW91cy0+bV9pbmxpbmVDYXBh
Y2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQocHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQp
CiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTIyMyw2ICsyMjYsNyBA
QCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgLCBtX2RpZFRy
YW5zaXRpb24odHJ1ZSkKICAgICAsIG1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKHByZXZpb3VzLT5t
X3N0YXRpY0Z1bmN0aW9uUmVpZmllZCkKIHsKKyAgICBBU1NFUlQoIXByZXZpb3VzLT50eXBlSW5m
bygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CiAgICAgaWYgKHByZXZpb3VzLT50eXBlSW5mbygp
LnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgJiYgcHJldmlvdXMtPnJhcmVEYXRhKCktPm5lZWRzQ2xv
bmluZygpKQogICAgICAgICBjbG9uZVJhcmVEYXRhRnJvbSh2bSwgcHJldmlvdXMpOwogICAgIGVs
c2UgaWYgKHByZXZpb3VzLT5wcmV2aW91c0lEKCkpCkBAIC0yMzMsNiArMjM3LDEzIEBAIFN0cnVj
dHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAgICAgbV9nbG9iYWxPYmpl
Y3Quc2V0KHZtLCB0aGlzLCBwcmV2aW91cy0+bV9nbG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCitT
dHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKQoreworICAgIGlmICh0eXBlSW5mbygpLnN0cnVjdHVyZUlz
SW1tb3J0YWwoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEhlYXA6OmhlYXAodGhpcyktPnN0cnVj
dHVyZUlEVGFibGUoKS5kZWFsbG9jYXRlSUQodGhpcywgbV9zdHJ1Y3R1cmVJRCk7Cit9CisKIHZv
aWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBzdGF0aWNfY2FzdDxT
dHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7CisKIHByb3RlY3RlZDoK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC05NSw2ICs5Nyw4IEBA
IHByb3RlY3RlZDoKICAgICB9CiAKIHB1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJlSUQ7IH0KKwogICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0
aWNzKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmLCBQdXRQcm9w
ZXJ0eVNsb3Q6OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0KTsKQEAg
LTMwMSw2ICszMDUsMTQgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisgICAgc3RhdGljIHB0cmRpZmZf
dCBzdHJ1Y3R1cmVJRE9mZnNldCgpCisgICAgeworICAgICAgICAvLyBXZSBsb2FkIG1fc3RydWN0
dXJlSUQsIG1faW5kZXhpbmdUeXBlLCBhbmQgbV90eXBlSW5mbyBpbiBhIHNpbmdsZQorICAgICAg
ICAvLyA2NC1iaXQgaW5zdHJ1Y3Rpb24sIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkncmUg
cHJvcGVybHkgYWxpZ25lZC4KKyAgICAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmUsIG1fc3RydWN0dXJlSUQpID09IDgpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFN0cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZf
dCBwcm90b3R5cGVPZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihTdHJ1Y3R1cmUsIG1fcHJvdG90eXBlKTsKQEAgLTQ2OSw3ICs0ODEsMTMgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aEZvck5vbkV2YWxQdXRC
eUlkID0gNTEyOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCA9IDM7Ci0gICAgICAgIAorICAgIAorICAgIC8vIFRoZXNlIG5lZWQgdG8g
YmUgcHJvcGVybHkgYWxpZ25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3RydWN0dXJlJwor
ICAgIC8vIHBhcnQgb2YgdGhlIG9iamVjdC4KKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlE
OworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBUeXBlSW5mbyBtX3R5cGVJ
bmZvOworCiAgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsK
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7CiAgICAgbXV0YWJsZSBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkBAIC00OTMs
OCArNTExLDYgQEAgcHJpdmF0ZToKICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZv
ciBhbm9ueW1vdXMgc2xvdHMKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAotICAgIFR5
cGVJbmZvIG1fdHlwZUluZm87Ci0gICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOwogICAg
IHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKICAgICAKICAgICBDb25jdXJyZW50SklUTG9jayBt
X2xvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsg
cmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4pLCBpbmZvKCkpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZP
OwogCkBAIC02NCw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U3RydWN0dXJlKiBoZWFkKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
RFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUlEVGFibGUuaCIKKworI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3Rm
L0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1N0cnVjdHVyZUlEVGFibGU6OlN0cnVj
dHVyZUlEVGFibGUoKQorICAgIDogbV9maXJzdEZyZWVPZmZzZXQoMCkKKyAgICAsIG1fdGFibGUo
bmV3IFN0cnVjdHVyZU9yT2Zmc2V0W3NfaW5pdGlhbFNpemVdKQorICAgICwgbV9zaXplKDApCisg
ICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNpemUpCit7CisgICAgLy8gV2UgcHJlLWFsbG9jYXRl
IHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0aGUgbnVsbCBTdHJ1Y3R1cmUKKyAgICAvLyBjYW4g
c3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFN0cnVjdHVyZUlEICcwJy4KKyAgICBhbGxvY2F0
ZUlEKDApOworfQorCitTdHJ1Y3R1cmVJRFRhYmxlOjp+U3RydWN0dXJlSURUYWJsZSgpCit7Cisg
ICAgZGVsZXRlIFtdIG1fdGFibGU7Cit9CisKK3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6cmVzaXpl
KHNpemVfdCBuZXdDYXBhY2l0eSkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIG5ldyB0YWJsZS4KKyAg
ICBTdHJ1Y3R1cmVPck9mZnNldCogbmV3VGFibGUgPSBuZXcgU3RydWN0dXJlT3JPZmZzZXRbbmV3
Q2FwYWNpdHldOworCisgICAgLy8gQ29weSB0aGUgY29udGVudHMgb2YgdGhlIG9sZCB0YWJsZSB0
byB0aGUgbmV3IHRhYmxlLgorICAgIG1lbWNweShuZXdUYWJsZSwgbV90YWJsZSwgbV9jYXBhY2l0
eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNldCkpOworCisgICAgLy8gU3RvcmUgZmVuY2UgdG8g
bWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVyeXRoaW5nIGJlZm9yZSBkb2luZyB0aGUgc3dhcC4K
KyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgLy8gU3dhcCB0aGUgb2xkIGFuZCBu
ZXcgdGFibGVzLgorICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBvbGRUYWJsZSA9IG1fdGFibGU7Cisg
ICAgbV90YWJsZSA9IG5ld1RhYmxlOworCisgICAgLy8gUHV0IHRoZSBvbGQgdGFibGUgKG5vdyBs
YWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBvbGQgdGFibGVzLgorICAgIG1fb2xkVGFi
bGVzLmFwcGVuZChvbGRUYWJsZSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGNhcGFjaXR5LgorICAg
IG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpm
bHVzaE9sZFRhYmxlcygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb2xkVGFi
bGVzLnNpemUoKTsgKytpKQorICAgICAgICBkZWxldGUgW10gbV9vbGRUYWJsZXNbaV07CisgICAg
bV9vbGRUYWJsZXMuY2xlYXIoKTsKK30KKworU3RydWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6
YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgIGlmICghbV9maXJzdEZyZWVPZmZzZXQpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9j
YXBhY2l0eSA8PSBVSU5UX01BWCk7CisgICAgICAgIGlmIChtX3NpemUgPT0gbV9jYXBhY2l0eSkK
KyAgICAgICAgICAgIHJlc2l6ZShtX2NhcGFjaXR5ICogMik7CisgICAgICAgIEFTU0VSVChtX3Np
emUgPCBtX2NhcGFjaXR5KTsKKworICAgICAgICBTdHJ1Y3R1cmVPck9mZnNldCBuZXdFbnRyeTsK
KyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3RydWN0dXJlOworCisgICAgICAgIFN0cnVj
dHVyZUlEIHJlc3VsdCA9IG1fc2l6ZTsKKyAgICAgICAgbV90YWJsZVtyZXN1bHRdID0gbmV3RW50
cnk7CisgICAgICAgIG1fc2l6ZSsrOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwor
ICAgIFN0cnVjdHVyZUlEIHJlc3VsdCA9IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIG1fZmlyc3RG
cmVlT2Zmc2V0ID0gbV90YWJsZVttX2ZpcnN0RnJlZU9mZnNldF0ub2Zmc2V0OworICAgIG1fdGFi
bGVbcmVzdWx0XS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNl
bHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyNlbmRpZgorfQorCit2b2lkIFN0cnVjdHVyZUlE
VGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSRUxFQVNFX0FTU0VSVChtX3Rh
YmxlW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxlW3N0
cnVjdHVyZUlEXS5vZmZzZXQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9m
ZnNldCA9IHN0cnVjdHVyZUlEOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlSUQpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTdHJ1Y3R1cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0dXJl
SURUYWJsZV9oCisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZTsKKworI2lmIFVTRShK
U1ZBTFVFNjQpCit0eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVyZUlEOworI2Vsc2UKK3R5cGVkZWYg
U3RydWN0dXJlKiBTdHJ1Y3R1cmVJRDsKKyNlbmRpZgorCitjbGFzcyBTdHJ1Y3R1cmVJRFRhYmxl
IHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAg
IFN0cnVjdHVyZUlEVGFibGUoKTsKKyAgICB+U3RydWN0dXJlSURUYWJsZSgpOworCisgICAgdm9p
ZCoqIGJhc2UoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUpOyB9
CisKKyAgICBTdHJ1Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCk7CisgICAgdm9pZCBkZWFsbG9jYXRl
SUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRlSUQo
U3RydWN0dXJlKik7CisKKyAgICB2b2lkIGZsdXNoT2xkVGFibGVzKCk7CisKK3ByaXZhdGU6Cisg
ICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KTsKKyAgICAKKyAgICB1bmlvbiBTdHJ1
Y3R1cmVPck9mZnNldCB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgICAgICBT
dHJ1Y3R1cmVJRCBvZmZzZXQ7CisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19p
bml0aWFsU2l6ZSA9IDI1NjsKKworICAgIFZlY3RvcjxTdHJ1Y3R1cmVPck9mZnNldCo+IG1fb2xk
VGFibGVzOworICAgIHVpbnQzMl90IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIFN0cnVjdHVyZU9y
T2Zmc2V0KiBtX3RhYmxlOworICAgIHNpemVfdCBtX3NpemU7CisgICAgc2l6ZV90IG1fY2FwYWNp
dHk7Cit9OworCitpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQoU3RydWN0
dXJlSUQgc3RydWN0dXJlSUQpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gbV90
YWJsZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJlOworI2Vsc2UKKyAgICByZXR1cm4gc3RydWN0dXJl
SUQ7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdHJ1Y3R1
cmVJRFRhYmxlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDg3LDYgKzQ4Nyw5IEBAIHB1Ymxp
YzoKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAgU2hhcmVkU3ltYm9sVGFibGUoVk0m
IHZtKQogICAgICAgICA6IEpTQ2VsbCh2bSwgdm0uc2hhcmVkU3ltYm9sVGFibGVTdHJ1Y3R1cmUu
Z2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRh
LmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAg
ICAgREVDTEFSRV9JTkZPOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHBy
aXZhdGU6CiAgICAgV2Vha01hcERhdGEoVk0mKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215592</attachid>
            <date>2013-10-30 18:56:16 -0700</date>
            <delta_ts>2013-10-30 19:06:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131030185611.patch</filename>
            <type>text/plain</type>
            <size>327751</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0OCBA
QAorMjAxMy0xMC0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBm
cmVlIHVwIDMyIGJpdHMgb2Ygc3BhY2UgaW4gSlNDZWxsIGhlYWRlcnMsIHdoaWNoIHdlIGNhbiB1
c2UgZm9yIAorICAgICAgICBvdGhlciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBJbmRleGluZ1R5cGUs
IEpTVHlwZSwgSlNUeXBlSW5mbyB0eXBlIGZsYWdzLCBhbmQgCisgICAgICAgIGdhcmJhZ2UgY29s
bGVjdGlvbiBtZXRhZGF0YS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmJfcm0pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFN0cnVjdHVyZVB0cik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAg
ICAgICAqIGhlYXAvUmVnaW9uLmg6CisgICAgICAgICogaGVhcC9TdXBlclJlZ2lvbi5oOgorICAg
ICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6YmFzZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9v
YmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
bmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAo
SlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6
CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5o
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpn
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKKzw8PDw8PDwgLm1pbmUK
KzIwMTMtMTAtMjUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIEpTQ2VsbHMgaGF2ZSAzMi1iaXQgU3RydWN0dXJlIHBvaW50ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxOTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aE9uQWRkcmVzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlND
OjpSZXBhdGNoQnVmZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3RydWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21w
YXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90
aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
T2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxvY2F0b3IuaDoKKyAg
ICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAgICAgICAgKiBoZWFw
L0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAv
U3VwZXJSZWdpb24uaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAoSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmQ2VsbE5vdE9iamVjdCk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BD
YWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsTm90
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU09iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmJyYW5jaFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmJyYW5j
aFN0cnVjdHVyZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50
VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJl
Q2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpK
U0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6YWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExp
c3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAg
ICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0
cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFy
Z3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51
c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3Vt
ZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
Ojppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzaGlmdENvdW50
V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0
aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
bnlJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3Rv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNv
cnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6ZmlsbEFyZ0xpc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpzdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzUHJveHkpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmlzQVBJVmFsdWVXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc0luZm8pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxsYWJsZU9iamVjdFNs
b3cpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
SW5pdGlhbEluZGV4ZWRTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9J
bnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VX
aXRob3V0Q29weWluZ0VsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRV
bmRlY2lkZWRUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW5zdXJlQ29udGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVB
cnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJp
YnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
TmV3VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpjYW5TZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5k
ZXhRdWlja2x5Rm9yUHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4
UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppbml0aWFsaXplSW5kZXgpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aGFzU3BhcnNlTWFwKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmluU3BhcnNlSW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERp
cmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmFnZUVuc3VyZUNvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphcnJheVN0b3Jh
Z2VPck51bGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJlbnRJbmRleGluZ0RhdGEpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0SG9seUluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
dXJyZW50UmVsZXZhbnRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNHbG9iYWxP
YmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojppc1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omlz
QWN0aXZhdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Vycm9ySW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpUeXBl
SW5mbzo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1v
cnRhbCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6aWQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxv
Y2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVJRFRhYmxlOjpiYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6
Z2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrTWFwRGF0YS5oOgorCis9PT09PT09CiAyMDEzLTEwLTMwICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggQyBMb29wIExMSU5UIGJ1
aWxkLgpAQCAtNjQ5LDYgKzExOTQsNyBAQAogCiAgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogQWRkIG1pc3NpbmcgZmlsZXMgdG8gY29tcGlsYXRpb24uCiAKKz4+Pj4+Pj4gLnIxNTgzMjAK
IDIwMTMtMTAtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWZhY3RvciBwYXJzZXIgcm9sbGJhY2sgbG9naWMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDYgKzQwNSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNw
cAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCisgICAgcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuY3BwCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKICAgICBydW50aW1l
L1Rlc3RSdW5uZXJVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw2ICsxMDgyLDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU4MzM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQxLDYgKzY0MSw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlLmNwcCIgLz4NCiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGEu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0
aWxzLmNwcCIgLz4NCkBAIC0xMjM4LDYgKzEyMzksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUuaCIgLz4NCkBAIC0xMzA1LDQgKzEzMDcsNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+DQogICA8L0ltcG9ydEdyb3Vw
Pg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+DQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkp
CkBAIC03MzgsNiArNzM4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RydWN0dXJlQ2hhaW4uY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCI+DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9s
VGFibGUuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENv
bXBpbGU+DQpAQCAtMjIzNCw2ICsyMjM3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RydWN0dXJlSURUYWJsZS5oIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KQEAgLTMwNDEsNCArMzA0Nyw0IEBACiAgICAgICA8Rmls
dGVyPmppdDwvRmlsdGVyPg0KICAgICA8L01BU00+DQogICA8L0l0ZW1Hcm91cD4NCi08L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0Pg0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAv
KiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oICovOyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2RjQ2
MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJERjcg
LyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJCTJB
RDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q3MTgxNUMxMEIwMDYx
RTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFEMzUzREExODE1QzEwQjAw
NjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4
RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFE
NDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwpAQCAtMTk0MSw2ICsxOTQz
LDggQEAKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3Bl
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3
IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVm
ZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIw
MDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFw
SXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0
ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdD
OThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6
LmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzYzMiw2ICszNjM2LDggQEAKIAkJCQlB
N0JEQUVDMzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAog
CQkJCUE3QkRBRUM0MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAog
CQkJCUE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJ
CQkyQUQzNTNENzE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJ
CQkJMkFEMzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00
MTEyLDYgKzQxMTgsNyBAQAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RP
cGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RB
MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0OSw2ICs1NDU2LDcgQEAKIAkJCQkxNDdG
MzlENDEwN0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTJBRDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1By
b2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3
Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5
Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDE3LDcgKzQxNyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8vCi0g
ICAgLy8gQSBEYXRhTGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGluIHRo
ZSBjb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwzMiBp
cyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIDMy
LWJpdCBjb25zdGFudCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkLgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksNiArMzU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNo
YWJsZUp1bXAoYnJhbmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlh
bFJpZ2h0VmFsdWUpKTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRh
TGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gz
MldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7Cisg
ICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBQYXRjaGFibGVKdW1wKGp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxNTgz
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMTQgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQog
CisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxS
aWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0
Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGluaXRpYWxSaWdodFZh
bHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAgICBkYXRhTGFiZWwg
PSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakND
KHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0
cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAtMjU5LDYgKzI2Nyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9v
bCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRy
V2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAg
ewpAQCAtMjgxLDYgKzI5MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJl
bEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2Nh
dGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2Rl
TG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBvcGNv
ZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5
dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNvZGVCeXRlcyArIG1v
ZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBBU1NFUlQo
dG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICByZXR1cm4g
bGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFs
VmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19jbXBsX2ly
X2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMjkyLDYgKzMxMiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9y
Y2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJl
c3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9y
Y2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwg
MCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICAvLyBG
b3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNyb0Fzc2VtYmxlclg4
Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZv
aWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1ODMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA5LDYgKzYwOSwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBYODZSZWdpc3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBSZWdpc3RlcklEIGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAg
ICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFz
ZSAhPSBYODZSZWdpc3RlcnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6
OmVieDsKKworICAgICAgICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWN4
KTsKKyAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0KKwogICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BV
KFg4NikKQEAgLTYyOCw2ICs2NDAsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8gT24gMzIt
Yml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAg
ICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAg
ICAgaWYgKHNyYyA+PSA0KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lz
dGVyLgorICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRk
cmVzcyk7CisKKyAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0
byBwZXJmb3JtIHRoZSBzdG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTE2KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5
LDYgKzExOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rl
cik7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3Jh
dGNoUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRk
cmVzcykKICAgICB7CkBAIC01OTIsNiArNTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQ
YXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIo
aW5pdGlhbFZhbHVlLm1fdmFsdWUsIGRlc3QpOworICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRy
KHRoaXMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwg
VHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAg
ewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBz
Y3JhdGNoUmVnaXN0ZXIpOwpAQCAtNjA0LDYgKzYxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAg
IEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRW
YWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmlnaHRWYWx1ZS5t
X3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0
YUxhYmVsMzIodGhpcyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRo
UGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0
aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC02NDQsNiArNjY1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1
cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMg
Ym9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNo
UHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAg
ICAgewpAQCAtNjU1LDE2ICs2NzcsMzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwu
bGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVz
ID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3Qg
aW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBy
ZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0
b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBs
YWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGlj
IENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFk
ZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisK
KyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0
aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOwor
ICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJs
ZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRk
cmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNo
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVu
dFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVj
dGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJl
cGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAg
WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVl
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU2LDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwp
OwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwp
CisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAgIHZvaWQg
cmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVM
b2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKQEAgLTE3NSw2ICsxODAsMTEgQEAgcHVi
bGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUp
OwogICAgIH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJX
aXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0KKwogcHJp
dmF0ZToKICNpZiBFTkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICB2b2lkKiBtX3N0
YXJ0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJH
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBt
b3ZiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3NiwyNSBA
QCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQgQXJyYXlQ
cm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYsIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVy
ZSkKKyAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9s
YXN0U2VlblN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNv
ZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCk7CisgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVy
ZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1
blBydW5pbmcKICAgICAgICAgJiYgaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJyYXlN
b2RlcykpIHsKLSAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3Ry
dWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2Rl
cyA9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgICAgICBt
X2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAgICBtX21h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJl
LT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8oKTsKKyAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
aW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
bygpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmUobV9sYXN0U2VlblN0cnVjdHVyZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmln
aW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAgaWYgKCFn
bG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkK
KyAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUo
bGFzdFNlZW5TdHJ1Y3R1cmUpKQogICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA9IGZhbHNlOwotICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IDA7CiB9CiAKIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0
aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBB
cnJheVByb2ZpbGUgewogcHVibGljOgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAgIDogbV9i
eXRlY29kZU9mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAg
ICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9v
dXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyhmYWxzZSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJyYXlQcm9m
aWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAg
ICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUo
ZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHB1Ymxp
YzoKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGVPZmZzZXQ7IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZSgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAgU3RydWN0
dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2Vl
blN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsg
cmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0
b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29sKiBhZGRy
ZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAgICAg
dm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgbV9sYXN0U2VlblN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0U2VlblN0
cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2Nr
Kik7CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBw
b2x5bW9ycGhpY1N0cnVjdHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNv
ZGVPZmZzZXQ7Ci0gICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgIFN0cnVj
dHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGU7
IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3Bl
Y2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMg
aXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNp
Y2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFn
ZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGlt
cGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRleCkuZGF0
YSgpOwogICAgIH0KIAorICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0K
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmpl
Y3QuZ2V0KCk7IH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9y
aWdpbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3
ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2Vs
bDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0Nl
bGw6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0NSw3ICs1
NDUsNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTgzMzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDIzICsxMjIsMTQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NF
UlQobV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwo
Ci0gICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAg
ICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBz
aWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMu
IE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3Jl
IHRhbGtpbmcKLSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+
bV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyht
X2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Ci0g
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0
aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3
aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRp
b24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQu
CiAgICAgICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90
IHVzZXItdmlzaWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVK
dW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRB
cnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1
ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0MywyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtS
ZWZlcmVuY2Uod2Vha1B0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVy
ZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFu
Y2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAg
ICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vh
a1N0cnVjdHVyZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIEp1bXAgYnJhbmNoU3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBs
ZWZ0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUt
PmlkKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRy
eSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJv
bCBmbG93IGFuYWx5c2lzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzUsOCArMTM1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNz
T2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1
Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDkgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LmdwcigpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2
YWx1ZSwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3Jh
dGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBy
ZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJ
bW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0zNDAsNyAr
MzQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAg
ICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQ
Uik7CiAgICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8g
dGFrZW4gOiBub3RUYWtlbik7CiAgICAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0
R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CkBAIC0xMTYxLDE4ICsxMTYxLDE4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BS
KSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0x
MTg0LDcgKzExODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxp
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKQEAgLTEyMzgsMTAgKzEyMzgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdFRvT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCkBAIC0xMjY2LDEwICsx
MjY2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTEzNDUsMTAgKzEz
NDUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
CiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hp
bGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIApAQCAtMTM3MiwxMCArMTM3MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdH
UFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKQEAgLTE2
MjAsMTAgKzE2MjAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJC
cgogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNl
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMVBheWxvYWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJp
bWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3Vs
dFRhZ0dQUik7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFB0cigKICAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3Ax
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEdQUik7CiAg
ICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTM1MzAsNyArMzUzMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGhpc1ZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBh
eWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTM4MzIsMTIgKzM4MzIs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwg
MCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAogICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1
cmVTZXQoKVswXSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c3RydWN0dXJlLmdwcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICAKQEAgLTM4NjgsNyArMzg2OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUo
KSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7
CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNPSy5saW5rKCZtX2ppdCk7
CiAjZWxzZQpAQCAtMzg5Nyw3ICszODk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+c3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdlbmVyaWNB
Y2Nlc3MpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5l
d1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1
cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQwNzcsNyArNDA3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAg
ICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
Jy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdw
cigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hU
ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQxMDYsNyArNDEwNiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgo
SklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZS50
YWdHUFIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00MjA0LDcgKzQyMDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBE
RkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90
RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2OSwxMiArMjY5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9j
YWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxP
YmplY3QodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAg
ICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNo
VGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigx
KSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI4Myw2ICsyODYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBt
X2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwor
ICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIo
KSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1
YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9i
YWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CiAgICAgfQpAQCAtMzMzLDE2ICszMzcsMjAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkp
CiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxl
cjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hU
ZXN0OChKSVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAg
ICAgICAgIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2Nh
bEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iob3BlcmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAg
IGVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVj
dHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAg
ICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwg
cmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9
CkBAIC0xNTE2LDQxICsxNTI0LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BS
KSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAg
IEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTU3MywzNyAr
MTU3NiwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKIAog
ICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAg
IG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CiAKLSAgICBp
ZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgLy8g
VGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUg
cmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0gICAgICAgIC8vIERvIHRoaXMgYXQgdGhl
IHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVy
IGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOwot
ICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7Ci0gICAgICAgIHN0cnVjdHVy
ZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0KICAgICBpZiAobWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQ
Uik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BS
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAg
ICB9CiAgICAgCkBAIC0xNjE1LDIxICsxNjA3LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RUb09iamUKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNo
LCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BS
KSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTY3
NiwzNyArMTY2NywyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmpl
CiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3Ay
LmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVt
cG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJl
ZzsKICAgICAKLSAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQg
PQorICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9IAogICAg
ICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwogCi0g
ICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAg
IC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0
dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgotICAgICAgICAvLyBEbyB0aGlzIGF0
IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdp
c3RlciBhbGxvY2F0aW9uLgotICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlz
KTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUpOwotICAgICAgICBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQotCiAgICAgaWYgKG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQs
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
KTsKICAgICB9CiAKQEAgLTE3MTgsMjEgKzE2OTgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFu
Y2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BS
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hp
bGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAt
MTg0OSw2ICsxODI4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRH
UFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQg
PQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgp
OwpAQCAtMTg1NywzMiArMTgzOCwzNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3
aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgogICAg
ICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5j
aGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTY3JhdGNoKHRo
aXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7CisgICAgICAgIHNj
cmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIH0KIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0g
ICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogCisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTIwMDEsMzEgKzE5ODQs
NDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogewogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVVc2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0
cnVjdHVyZTsKICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IElu
dmFsaWRHUFJSZWc7CisKKyAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
SXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhp
cyk7CisgICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc3Ry
dWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgIH0KICAgICAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5i
cmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpaZXJvLCAKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKIAorICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2YWx1ZUdQUiwgc3RydWN0dXJlR1BS
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpKSk7CiAKICAgICAgICAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKQEAgLTM0NDYsNyArMzQzOSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWxyZWFkeVBy
aW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVz
dWx0R1BSKTsKQEAgLTM0NzMsMTAgKzM0NjksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgc2xv
d1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM2OTUsNyArMzY5MSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBlbWl0QWxsb2NhdGVC
YXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7CiAgICAgICAgICAgICBtX2ppdC5z
dWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKLSAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3Ro
KCkpKTsKQEAgLTM4MzMsMTEgKzM4MjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZpbmFs
T2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHRlbXBHUFIp
OwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKQEAgLTQxMjIsMjQgKzQxMTYs
MjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBp
ZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdl
YWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgICAgICAKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7
ICsraSkKLSAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKVtp
XSkpOworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1
cmUoSklUQ29tcGlsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigp
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAg
ICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwg
MCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAotICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgbm9kZS0+c3RydWN0
dXJlU2V0KCkubGFzdCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVj
dHVyZSgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTQxNjAsNyArNDE1MCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOwogICAgICAgICBpc09LLmxpbmsoJm1faml0KTsKICNlbHNlCkBAIC00MTgyLDcgKzQxNzUs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1f
aml0LmppdENvZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24o
bV9qaXQuZ3JhcGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIAogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwog
ICAgICAgICAKICAgICAgICAgCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQpA
QCAtNDE5MCw3ICs0MTg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+c3RydWN0dXJlVHJhbnNp
dGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdlbmVyaWNBY2Nlc3MpOwog
I2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3
U3RydWN0dXJlKSwgYmFzZUdQUiwgc2NyYXRjaEdQUik7IAogICAgICAgICAKICAgICAgICAgbm9S
ZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM1MSw4ICs0MzQ2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00
MzgwLDggKzQzNzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hU
ZXN0OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1f
aml0Lmp1bXAoKTsKIApAQCAtNDQyOCw4ICs0NDI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgdmFs
dWUuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0
cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVh
bCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmlu
Z1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQ0NjgsOCArNDQ2
OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IFR5cGVPZjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BSUmVnIHZhbHVlR1BS
ID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAg
ICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7CkBAIC00NDgzLDggKzQ0ODIsMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
Q2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
U3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKSksIHJlc3VsdEdQUik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw5ICs3NjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgY2FzZSBBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
dGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIDAsCiAgICAgICAgICAgICBqdW1wU2xvd0ZvclVu
d2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgpKSk7CkBAIC03NzEsOCAr
NzY5LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6Ci0gICAgICAgIGV4
cGVjdGVkQ2xhc3NJbmZvID0gQXJndW1lbnRzOjppbmZvKCk7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihBcmd1bWVudHNUeXBl
KSkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBjbGFzc0luZm9Gb3JU
eXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwogICAgICAgICBicmVhazsK
QEAgLTc4MSw4ICs3ODUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUq
IG5vCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRDbGFzc0luZm8pOwogICAgIAogICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wLmdwcigpKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgZW1pdExvYWRT
dHJ1Y3R1cmUoYmFzZVJlZywgdGVtcC5ncHIoKSwgdGVtcDIuZ3ByKCkpOwogICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLAogICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC04MTIsMTYgKzgxNiwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIAogICAgIGlmIChub2RlLT5vcCgpID09
IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFdlYWtQdHIoCisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrU3Ry
dWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlKCkpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOCgKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAg
ICAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUo
dGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CkBAIC0xMzUwLDI0ICsxMzUxLDI1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgaWYg
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIAotICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3By
KCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBl
bWl0TG9hZFN0cnVjdHVyZShvcDFHUFIsIHN0cnVjdHVyZUdQUiwgdGVtcC5ncHIoKSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LApAQCAtMTM4Miw3ICsxMzg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7
CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBlbWl0
TG9hZFN0cnVjdHVyZShvcDJHUFIsIHN0cnVjdHVyZUdQUiwgdGVtcC5ncHIoKSk7CiAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0
KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLApA
QCAtMjc5MiwxOCArMjc5NCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JGCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBw
cm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHBy
b3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcsIEdQUlJlZyBzY3JhdGNoMlJlZykKIHsKICAg
ICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QuCi0gICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b3R5cGVSZWcsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHNjcmF0Y2hSZWcpKTsKKyAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aElmQ2VsbE5vdE9iamVjdChwcm90b3R5cGVSZWcpKTsKICAgICAKICAgICAvLyBJbml0aWFsaXpl
IHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFsdWUgYmVpbmcgY2hlY2tlZC4KICAgICBtX2ppdC5tb3Zl
KHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsKICAgICAKICAgICAvLyBXYWxrIHVwIHRoZSBwcm90b3R5
cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29tcGFyaW5nIHRvIHByb3Rv
dHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwotICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHNj
cmF0Y2hSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKQEAgLTI4NDIsOSArMjg0MywxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwpAQCAtMjg2MSw3
ICsyODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAg
ICAgICAKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgCi0gICAgICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNj
cmF0Y2hSZWcpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1
ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAgICAgICAgIAog
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKIApAQCAtMjg3NywxMiArMjg4MCwxNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAg
ICAgCiAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3Rv
dHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0
Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAg
Ci0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlw
ZVJlZywgc2NyYXRjaFJlZyk7CisgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwg
dmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBqc1ZhbHVlUmVzdWx0KHNjcmF0Y2hSZWcsIG5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4pOwpAQCAtNDU5OCwxMSArNDYwMywxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAot
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpOwogICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0
dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUobm9kZS0+Y2hpbGQxKCksIAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVDZWxsT2Zmc2V0KCkpLCByZXN1bHRHUFIp
OwogICAgICAgICAKQEAgLTQ2MjcsMTAgKzQ2MzQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5l
ZWRDYWxsID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bmVlZENhbGwgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAg
ICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5lZWRDYWxsLmxpbmsoJm1f
aml0KTsKQEAgLTQ4MzAsMTAgKzQ4MzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlT2JqZWN0KEVkZwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRn
ZSk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Z3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVG
aW5hbE9iamVjdChFZGdlIGVkZ2UpCkBAIC00ODQyLDE0ICs0ODQ5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgR1BSVGVtcG9y
YXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY0ZpbmFsT2JqZWN0LCBtX2ppdC5icmFu
Y2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
RmluYWxPYmplY3RUeXBlKSkpOwogfQogCkBAIC00ODY2LDEwICs0ODcwLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00ODg5LDEwICs0ODkzLDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RDZWxsID0KICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9h
ZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAor
ICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAtNDkxMiwxMCArNDkx
NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsK
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2Ug
ZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpCkBAIC00OTY4LDcgKzQ5NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7
Ci0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDk5NSwxNSArNDk5OSwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0CiAgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVjdCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgCi0gICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0g
bV9qaXQuYnJhbmNoUHRyKAotICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQ
UiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
KyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAKICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7
CiAgICAgCkBAIC01MjY4LDEwICs1MjY5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hDaGFyKE5vZGUKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJv
dWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBv
cDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CkBAIC01NTY4LDEwICs1NTY5LDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNlbmRpZgogICAgICAgICAK
ICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAg
ICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0
Y2hTdHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAx
NTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyMiw3ICs3MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2Up
OwogICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBm
YWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwg
R1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJl
c3VsdFJlZyk7CisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BS
UmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3Vs
dFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5v
ZGUqKTsKICAgICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3Mp
CkBAIC0yMDU2LDYgKzIwNTYsMTEzIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBzbG93UGF0aDsKICAgICB9CisKKyAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNl
KCksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc2NyYXRjaEdQUiwgZGVzdEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCBkZXN0R1BSKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyNlbmRpZgorICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIGRlc3RHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOworICAgICAg
ICBqaXQubG9hZFB0cihqaXQudm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzY3JhdGNoR1BSLCBkZXN0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3RH
UFIpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1p
dFN0b3JlU3RydWN0dXJlKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBHUFJSZWcgZGVzdEdQUikK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1
Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1
ZSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQo
KSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnKQorICAg
IHsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKG1faml0LCBzdHJ1Y3R1
cmUsIGRlc3RHUFIpOworICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRj
aEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlNjQoc2NyYXRjaEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZWxzZQorICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGJldHRlci4KKyAg
ICAgICAgLy8gU3RvcmUgdGhlIHR5cGUgaW5mbyBmbGFncworICAgICAgICBtX2ppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlOChzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUKKyAgICAgICAgbV9q
aXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3Jl
OChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIGluZGV4aW5nIHR5
cGUKKyAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
R1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIG1faml0LnN0b3JlOChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0
R1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUg
dGhlIFN0cnVjdHVyZUlECisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZShzdHJ1Y3R1cmVHUFIs
IGRlc3RHUFIsIHNjcmF0Y2hHUFIpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKENDYWxsSGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgR1BSUmVnIGRlc3QpCisgICAgeworICAgICAgICBjb25zdCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVj
dHVyZS5tX3ZhbHVlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50NjRfdCBibG9i
VG9TdG9yZSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oc3RydWN0dXJlUHRyKSArIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSk7CisgICAgICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChibG9iVG9TdG9yZSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworI2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBiZXR0ZXIuCisgICAgICAg
IC8vIFdlIGhhdmUgdG8gY2FzdCB0byBzaWduZWQgYmVjYXVzZSBzdG9yZTggZ2V0cyBtYWQgaWYg
dGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIHNpZ25lZCBjaGFyIHJhbmdlLgorICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS50eXBl
KCkpIDw9IDI1NSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSA8PSAyNTUpOworICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkp
IDw9IDI1NSk7CisKKyAgICAgICAgaml0LnN0b3JlOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50OF90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSksIAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSkpOworICAgICAgICBqaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQ4X3Q+
KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkpLCAKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSk7CisgICAgICAgIGppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGlu
dDhfdD4oc3RydWN0dXJlUHRyLT5pbmRleGluZ1R5cGUoKSkpLCAKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsK
KyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlKGppdCwgc3RydWN0dXJlLCBkZXN0KTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShDQ2FsbEhlbHBl
cnMmIGppdCwgVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAgIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0
ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAg
ICAgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworI2Vsc2UKKyAgICAgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShHUFJSZWcgc3RydWN0dXJlR1BS
LCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1
cmVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSkpOworI2VuZGlmCisgICAgfQogICAgIAogICAgIC8vIEFsbG9jYXRvciBmb3Ig
YSBjZWxsIG9mIGEgc3BlY2lmaWMgc2l6ZS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0
dXJlVHlwZT4gLy8gU3RydWN0dXJlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KQEAgLTIwNzEs
NyArMjE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9m
ZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBTdHJ1Y3R1cmUuCi0gICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3Vs
dEdQUiwgc2NyYXRjaEdQUik7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhbiBvYmpl
Y3Qgb2YgYSBzcGVjaWZpYyBzaXplLgpAQCAtMzAxMyw4ICszMTIwLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZQogICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmlu
Z09iamVjdFN0cnVjdHVyZSkpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAg
ICAgICBOb3RTdHJpbmdPYmplY3QsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1
Y3R1cmVMb2NhdGlvbiwgVHJ1c3RlZEltbVB0cihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7Cisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0
dXJlKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9j
a0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
Y2xhc3MgV2Vha0Jsb2NrOwogLy8gc2hvcnQgcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGVuIGZyZWVp
bmcgdGhlbSBvbiBhIHNlY29uZGFyeSB0aHJlYWQuCiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yIHsK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIEJs
b2NrQWxsb2NhdG9yKCk7CiAgICAgfkJsb2NrQWxsb2NhdG9yKCk7CkBAIC01OSw2ICs2MCw4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlKFQqKTsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlQ3VzdG9tU2l6ZShUKik7
CiAKKyAgICBTdXBlclJlZ2lvbiYgc3VwZXJSZWdpb24oKSB7IHJldHVybiBtX3N1cGVyUmVnaW9u
OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5n
TG9jayhkb3VibGUgcmVsYXRpdmUpOwogICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3Vi
bGUgcmVsYXRpdmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRp
b25zLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
QXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCiAjZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2Vs
bCkgZG8geyBcCiAgICAgUkVMRUFTRV9BU1NFUlQoY2VsbCk7XAotICAgIFJFTEVBU0VfQVNTRVJU
KGNlbGwtPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkgPT0g
Y2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52
YWxpZGF0ZWRTdHJ1Y3R1cmUoKSk7IFwKKyAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT5zdHJ1Y3R1
cmUoKS0+c3RydWN0dXJlKCkgPT0gY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpLT5zdHJ1
Y3R1cmUoKSk7IFwKIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8ge1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCw3IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShT
dG9wQWxsb2NhdGlvbik7CisgICAgICAgIG1fc3RydWN0dXJlSURUYWJsZS5mbHVzaE9sZFRhYmxl
cygpOwogICAgICAgICBtX29iamVjdFNwYWNlLnN0b3BBbGxvY2F0aW5nKCk7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNp
bmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC0xODYsNiArMTg3LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25z
dCB7IHJldHVybiAhIW1fZGVmZXJyYWxEZXB0aDsgfQogCisgICAgICAgIEJsb2NrQWxsb2NhdG9y
JiBibG9ja0FsbG9jYXRvcigpOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxlJiBzdHJ1Y3R1cmVJ
RFRhYmxlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRFRhYmxlOyB9CisKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQ29w
aWVkQmxvY2s7CkBAIC0yMzYsNyArMjQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNp
emVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNTdGFjayYgc3RhY2soKTsKLSAg
ICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CiAgICAgICAgIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICAg
ICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7CkBAIC0yNTYsNiArMjU5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzczsKICAgICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9ja0FsbG9jYXRvcjsKKyAg
ICAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgICAgIE1hcmtl
ZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgICAgIENvcGllZFNwYWNlIG1fc3RvcmFnZVNwYWNl
OwogICAgICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1
ZmZlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJl
dmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMywyMCArMjIzLDIyIEBAIGlubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRoTm8KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxv
Y2soRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNp
c2VDb3VudDsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7
ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0
cnVjdHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VD
b3VudDsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsg
KytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRh
bFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKLSAgICB9Ci0KICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9y
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJl
Y2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNw
YWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1f
bm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCisgICAg
ICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNb
aV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1w
cmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JT
cGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKIAogICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHJldmlzaW9uIDE1ODMz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIAogY2xh
c3MgU3VwZXJSZWdpb24gOiBwdWJsaWMgV1RGOjpNZXRhQWxsb2NhdG9yIHsKKyAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIFN1cGVyUmVnaW9uKCk7
CiAgICAgdmlydHVhbCB+U3VwZXJSZWdpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcyLDYgKzE3MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFz
cyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewogICAgIHB1YmxpYzoKKyAgICAgICAgQUxXQVlTX0lO
TElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoVk0qIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
aW50IGxpbmVOdW1iZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShsaW5l
TnVtYmVyKTsKKyAgICAgICAgICAgIEFTU0VSVCh2bSk7CisgICAgICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpKTsKKyAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAg
ICAgIH0KKwogICAgICAgICBBTFdBWVNfSU5MSU5FIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcihWTSog
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
dm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJh
bmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBzdHJ1Y3R1
cmVSZWcpCisgICAgSnVtcCBicmFuY2hJZkNlbGxOb3RPYmplY3QoR1BSUmVnIGNlbGxSZWcpCiAg
ICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhzdHJ1Y3R1cmVSZWcs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlw
ZSkpOworICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNlcnZl
MSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBHUFJS
ZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFsaWRH
UFJSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1ODMzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdExv
YWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAgICAgICB2b2lkIGVt
aXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7Ci0gICAg
ICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZyk7Cisg
ICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKTsK
IAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1
Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAgICAgICAg
IHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKQEAgLTMzNSw4ICszMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKHVuc2lnbmVkLCBSZWdpc3RlcklEKSB7IH0KICAgICAgICAg
dm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFJlZ2lzdGVySUQpIHsgfQogI2VuZGlmCi0gICAg
ICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZElu
ZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqKTsKLSAgICAgICAg
dm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0
cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwo
UmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5
UHJvZmlsZSopOworICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29k
ZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRBcnJh
eVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSopOwogICAgICAgICB2
b2lkIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSop
OwogICAgICAgICAKQEAgLTM3Niw2ICszNzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90Rmlu
YWwgfTsKIAorICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhSZWdp
c3RlcklEIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwor
ICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRy
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gSnVtcCBicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENv
bmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVjdHVyZSopOworCiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICAgICAgYm9vbCBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IG9w
MSwgaW50IG9wMiwgaW50JiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDggKzc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlz
KElucwogCiAgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90
SlNDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmpl
Y3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3Qo
cmVnVDApOwogCiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdU
Mik7CiAgICAgZW1pdEdldENhbGxlckZyYW1lRnJvbUNhbGxGcmFtZUhlYWRlclB0cihjYWxsRnJh
bWVSZWdpc3Rlcik7CkBAIC0yNDgsOCArMjQ3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0
ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdU
MSk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgICAg
ICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qx
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgICAgICAgICBzdG9y
ZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAg
IH0KICAgICAKQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9z
dXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3Rl
ZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDEp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTgz
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAp
OwogICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0g
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMCk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMCwgaW5zdHJ1Y3Rpb25bNl0u
dS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QxKTsKKyAgICAgICAgICAgIHN0b3JlMzIocmVnVDEsIGluc3RydWN0aW9uWzZdLnUuYXJyYXlQ
cm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVn
VDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRh
YmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwg
cmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExp
bmtCdWZmCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyhN
YWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewotICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgIG1fc3Ry
dWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICBtX3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSk7CiAg
ICAgCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZlcnRpYmxlTG9hZFB0cigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogICAgIEFzc2VtYmxl
ckxhYmVsIG1fbG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1
bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1
bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKDEpKSk7CiAg
ICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNT
dHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVz
dDMyKFplcm8sIGRzdCkpOwpAQCAtNTUxLDcgKzU1MSw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjpjaGVj
a1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
cmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVybiBicmFuY2hT
dHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nh
c2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBpbnQg
dlJlZykKQEAgLTU5OSw5ICs1OTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVt
cFNsb3dUb0hvCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6
ZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZykKK0FMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxs
UmVnKQogewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC02NzIsMTEgKzY3MiwxMSBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dCksIHNjcmF0Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3MoYWxsb2NhdG9yLCBN
YXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAotICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRk
cmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKLQogICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgogICAgIHN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpKTsKKworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAg
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRj
aCk7CiB9CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC03MzEsMjYgKzczMSwyNiBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2Zp
bGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOyAvLyBXZSBoYWQgZm91bmQgdGhpcyBzY3JhdGNoIHJl
Z2lzdGVyIHVzZWZ1bCBoZXJlIGJlZm9yZSwgc28gSSB3aWxsIGtlZXAgaXQgZm9yIG5vdy4KKyAg
ICBSZWdpc3RlcklEIGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlOworICAgIFJlZ2lzdGVySUQg
aW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZTsKICAgICAKLSAgICBSZWdpc3RlcklE
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICBSZWdpc3RlcklEIGlu
ZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICAKLSAgICBpZiAoc2hv
dWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIGFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgeworICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Vs
bCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAgICBsb2FkOChBZGRyZXNzKGNlbGws
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOwogfQogCi1pbmxp
bmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KFJlZ2lz
dGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1Np
dGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBl
LCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoc3RydWN0dXJl
QW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2Zp
bGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChj
ZWxsQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVBy
b2ZpbGUoYnl0ZWNvZGVJbmRleCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIHNjcmF0Y2gsIDApOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoY2VsbEFuZEluZGV4
aW5nVHlwZSwgc2NyYXRjaCwgMCk7CiAjZW5kaWYKIH0KIApAQCAtMTI0NCw2ICsxMjQ0LDY1IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW0KIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRTdG9yZVN0cnVj
dHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEKQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgdWludDY0X3QgYmxvYlRvU3RvcmUgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50NjRfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cnVjdHVyZVB0
cikgKyBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpOworICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
YmV0dGVyLgorICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygp
LnR5cGUoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3Qs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSk7CisgICAgc3RvcmU4KFRydXN0ZWRJbW0z
MihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgIHN0b3JlUHRyKHN0cnVj
dHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZW5kaWYKK30KKworQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQor
ICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYmV0dGVyLgorICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUK
KyAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkp
OworCisgICAgLy8gU3RvcmUgdGhlIFR5cGVJbmZvIGlubGluZSBmbGFncworICAgIGxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKworICAgIC8v
IFN0b3JlIHRoZSBpbmRleGluZyB0eXBlCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7
CisgICAgc3RvcmU4KHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2Vs
bDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJ
RAorICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRI
YW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICByZXR1
cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGppdC5i
cmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQdHIo
Y29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDggKzI1Niw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
VmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI3Niw4ICsyNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAvLyBP
cHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAg
ICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3Rp
bGwgY29udGFpbnMgdmFsdWUuCkBAIC0yODcsNyArMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAv
LyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRy
b3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAgIEp1
bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBicmFu
Y2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTM0MywxMiAr
MzQxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwot
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zODcsOCArMzg1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAg
ICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwog
ICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtNDI3LDcgKzQyNCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJl
Z1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtNTU0
LDkgKzU1MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKIAog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVz
dDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCks
IHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1
bXAoKTsKQEAgLTU4MCw5ICs1NzYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhh
bmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0
aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAg
d2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNjM2LDggKzYzMSw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0
U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2Vu
ZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAg
ICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02ODAsOCArNjc1LDggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93
Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3Zt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdF
cSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTcxMSw4ICs3MDYsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
U3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJv
dGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3ROb3RT
dHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RDZWxs
LmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzY5LDEy
ICs3NjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAgSnVt
cCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAg
ICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTgwMCwxMiArNzk1
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNv
bXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC04NDQsMTAgKzgzOSw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0TG9h
ZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJ
bW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2Jq
ZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUg
dGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBj
YWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC05MDAsNyArODkzLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZvcihi
YXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtOTExLDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBj
YWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1
cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMp
KS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTE2NCw4ICsxMTU3LDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRoaXNS
ZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2lu
c3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE0OSw4ICsxNDgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0
IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
Zk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2Jq
ZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0
IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwg
Y29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDcg
KzE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAg
IC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBp
cyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3Zl
IGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3Qg
Z28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVn
VDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVn
VDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhp
cyk7CkBAIC0xODUsMTIgKzE4MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQo
SW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5r
KHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwog
ICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJl
Z1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1
YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjMyLDggKzIzMCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlw
ZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwog
ICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKICAgICAKQEAgLTI5NCw4ICsyOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0
X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlUmVnaXN0ZXIpOwogICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVS
ZWdpc3RlciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5v
dE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0
ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAKICAgICAv
LyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0UmV0dXJuUENGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKHJlZ1QxKTsKQEAgLTMzMSw3ICszMjcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90b19wcmltaXRpdmUoSW5zdHJ1Y3RpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMs
IHJlZ1QwKTsKICAgICAKICAgICBKdW1wIGlzSW1tID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdU
MCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGlzSW1tLmxpbmso
dGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTM4Myw4ICszODEsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9
IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0Nl
bGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0
dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1
bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7CkBAIC00MDYsOCAr
NDA0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKgogICAgIEp1
bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZp
cnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBi
aXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChi
cmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBhZGRK
dW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdhc05vdEltbWVkaWF0
ZSA9IGp1bXAoKTsKQEAgLTUwMiwxMCArNTAwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Bu
YW1lcyhJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUoYmFzZSkpCiAgICAg
ICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKSk7Ci0gICAg
aWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLm9mZnNldCgpIHx8IG1fY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2JqZWN0
LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChiYXNl
ICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5lIHRoZSBjYXNlIHdo
ZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0
IHNlZW0gdG8gYmUgaG90LgpAQCAtNTU5LDcgKzU1NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
eHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QwKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9h
ZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwgT0JK
RUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkp
KSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KQEAgLTU3MCw3ICs1NjYs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9uCiAgICAgTGFiZWwg
Y2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgbG9hZDY0KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVy
ZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVu
ZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QyKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0
dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDEpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRy
KE5vblplcm8sIEFkZHJlc3MocmVnVDMpKS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpA
QCAtNzQ4LDEyICs3NDQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlv
biogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwogICAgIEp1bXAg
aXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBK
dW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAgd2FzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEp
OwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBy
ZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJlZ1QwLCByZWdUMiwg
cmVnVDApOwpAQCAtNzgwLDEyICs3NzYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwo
SW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdU
MiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoTm90RXF1YWwsIHJl
Z1QwLCByZWdUMiwgcmVnVDApOwpAQCAtODUxLDExICs4NDcsMTIgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEpOwogCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2g4
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICBsb2FkUHRyKGNhY2hlZFN0
cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDAsIHJlZ1QyKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMikp
OworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMik7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC05MjcsNiArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1
Y3RpbwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfdG9fdGhpcyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU4MzM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMTQ1
LDcgKzE0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIElkZW50aWZpZXIgaWRl
bnQgPSB1aWQtPmlzRW1wdHlVbmlxdWUoKSA/IElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUo
dWlkKSkgOiBJZGVudGlmaWVyKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIApAQCAtMTY2
LDcgKzE2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJ
bXBsKiBrZXkpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIGlmICghYmFzZS0+aXNPYmplY3Qo
KSkgewogICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFt
ZXRlckVycm9yKGV4ZWMsICJpbiIsIGJhc2UpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBpZiAo
IWJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW4iLCBiYXNlKSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4o
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIGJhc2UpKSk7CiB9CkBAIC0yMTQsNyArMjE0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBiYXNlLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBmdW5jdGlvbiwgU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50
KHZtLCB1aWQpOwogICAgIApAQCAtMjI0LDcgKzIyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2EKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBnZXR0
ZXJTZXR0ZXIpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsR2V0dGVyKGV4ZWMsIGJhc2UsIGdldHRlclNldHRlcikpOwogfQpAQCAtMjMyLDcgKzIzMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2EKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSwg
ZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwpAQCAtMjQyLDcgKzI0Miw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2Us
IGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRy
dWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTI2Miw3ICsyNjIs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAg
ICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CkBAIC0yNzIs
NyArMjcyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMs
IF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVf
Xyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlYwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAg
ICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAg
LTM4NCw3ICszODQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTQyNCw3
ICs0MjQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBpbmxpbmUgY2hhciogbGlu
a0ZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAgSlNWYWx1ZSBjYWxs
ZWVBc1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVlQXNWYWx1ZSgpOwogICAgIEpTQ2VsbCogY2Fs
bGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwpAQCAtNzM1
LDcgKzczNSw3IEBAIGlubGluZSBjaGFyKiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEV4ZWMKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElO
RV9fKTsKIAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFz
VmFsdWUoKTsKICAgICBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
QXNWYWx1ZSk7CkBAIC04MjAsNyArODIwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25WaXJ0dWFsQ29ucwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3Mo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICByZXR1cm4ganNMZXNzPHRy
dWU+KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKIH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlTGVzCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
TGVzc0VxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4ganNMZXNz
RXE8dHJ1ZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtODM2LDcgKzgzNiw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVMZXMKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVHcmVhdGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4g
anNMZXNzPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC04NDQsNyArODQ0LDcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAg
cmV0dXJuIGpzTGVzc0VxPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC04NTIsNyArODUyLDcgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZQogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b0Jvb2xlYW4oZXhlYyk7CiB9CkBAIC04NjAsNyAr
ODYwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydEpTVgogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJ
TkVfXyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiB9CkBAIC04NzIsNyArODcyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cgogI2VuZGlmCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgYm9vbCByZXN1bHQgPSBhc1N0
cmluZyhsZWZ0KS0+dmFsdWUoZXhlYykgPT0gYXNTdHJpbmcocmlnaHQpLT52YWx1ZShleGVjKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtODkyLDIxICs4OTIsMjEgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFzUHJvcGVydAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
LCBfX0xJTkVfXyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheU5l
Z2F0aXZlSW5kZXhlZChleGVjLCBwcm9maWxlLCB2YWx1ZXMsIHNpemUpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxl
KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3Qg
SlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheShleGVjLCBwcm9maWxlLCB2YWx1ZXMsIHNpemUp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUq
IHByb2ZpbGUsIEVuY29kZWRKU1ZhbHVlIHNpemUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIEpTVmFs
dWUgc2l6ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHNpemUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CkBAIC05MjIsNyArOTIyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICByZXR1cm4gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKIH0KQEAgLTEzMDksNyArMTMwOSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbEMKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWwpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
YywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZVZhbCk7CkBAIC0xMzk5LDcgKzEzOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2Ny
aXB0KTsKLSAgICAKKwogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBzdWJzY3JpcHQu
aXNJbnQzMigpKSB7CiAgICAgICAgIC8vIFNlZSBpZiBpdCdzIHdvcnRoIG9wdGltaXppbmcgdGhp
cyBhdCBhbGwuCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OwpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRv
U2NvcGUoRQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEV4Y2VwdGlvblZhbHVlKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsK
IAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4
Y2VwdGlvblZhbHVlKTsKICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFs
dWUpOwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFs
dWUgPSBleGVjLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFsdWUpOwpAQCAt
MTY5NCw3ICsxNjk0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBBU1NFUlQoIWV4ZWMtPmhhc0hvc3RDYWxs
RnJhbWVGbGFnKCkpOwogICAgIGdlbmVyaWNVbndpbmQodm0sIGV4ZWMsIHZtLT5leGNlcHRpb24o
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4
LDcgKzg4LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewog
ICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAg
ZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGpp
dCwgTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBs
ZW5ndGggdG8gcmVnVDEsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRh
IHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtI
ZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMTM3LDggKzEzNyw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVn
VDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJv
ZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0z
MihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlw
ZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3Ry
aW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVt
aXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3Ip
LmNvZGUoKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKTsK
ICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpAQCAtMjgyLDggKzI4Miw4IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7
CisgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRl
eGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7
CkBAIC00NzgsOCArNDc4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0
aW9uKgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAg
ICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0
UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
Rm9yQnl0ZWNvZGVJbmRleChyZWdUMiwgcmVnVDMsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAg
ICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JC
eXRlY29kZUluZGV4V2l0aENlbGwocmVnVDIsIHJlZ1QzLCBtX2J5dGVjb2RlT2Zmc2V0KTsKICAg
ICB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTYzNCw3ICs2MzQsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgZW1pdExvYWRQYXls
b2FkKGl0ZXIsIHJlZ1QxKTsKICAgICAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
MCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwg
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwog
ICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtNzM0LDcgKzczNCw3IEBAIHZv
aWQgSklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhpbnQKIHsKICAgICBlbWl0TG9hZChz
Y29wZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBsb2FkUHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QyKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRHZXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3Qq
IG9wZXJhbmRTbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
NiwxMCBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAgICAg
SlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWls
dXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoSlNDOjpicmFuY2hTdHJ1Y3R1cmUoaml0LAor
ICAgICAgICBOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICB2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAK
ICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2Vz
cyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIo
QWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVn
VDIpOwpAQCAtMTExLDggKzExNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5z
dHJ1Y3Rpb24KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVnVDEpOwogCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAs
IHJlZ1QyKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDIsIHJlZ1Qz
LCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBy
ZWdUMik7CiAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC0yMDksNyArMjEyLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2Fz
ZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5v
bkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNo
ZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJl
KE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgCisgICAgICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1p
dE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5
VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0
NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7
CkBAIC0yODAsNyArMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3Ry
dWN0aQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAg
ICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
cmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFs
LCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwg
cmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtMzIxLDggKzMy
Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBT
ZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1Qx
LCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUp
OworICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5k
ZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBl
OwpAQCAtNTE4LDggKzUyMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsK
ICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zm
c2V0KTsKICAgICB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTY5OCw3ICs3
MDMsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwgcmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0
dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMSkpOworICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJv
cGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTc2MCw2ICs3NjcsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zCiAgICAgaWYgKHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24o
V2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21TY29wZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rp
b24pOwogfQpAQCAtODI0LDYgKzgzMyw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoSW5zdHIKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODc2LDcgKzg4Nyw3IEBAIEpJVDo6SnVtcCBKSVQ6
OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0
aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0Y2hwb2ludChtX2NvZGVCbG9jaykpOwogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNj
cmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHNjcmF0
Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkp
OworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNjcmF0
Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiAgICAgICAgIGJy
ZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0aGlzKTsKICNlbmRpZgpAQCAtODg1LDcgKzg5
Niw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICB9CiAg
ICAgCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgIHJldHVy
biBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0
cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0
Y2gpCkBAIC0xMDI5LDcgKzEwNDAsMTMgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBl
ZEFycmF5R2V0QgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOwor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0
TG9hZFN0cnVjdHVyZShiYXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82
NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsK
QEAgLTEwOTksOCArMTExNiwxNCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheUdlCiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNo
KTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAg
ICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFM
VUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBi
YXNlKTsKQEAgLTExNTIsNyArMTE3NSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlw
ZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0
Y2gpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKGJhc2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0
Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
ZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIApAQCAtMTIxOCw3ICsxMjQxLDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwg
ZWFybHlTY3JhdGNoLCBsYXRlU2NyYXRjaCk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAx
NTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdp
c3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlKTsKKyAgICAgICAg
dm9pZCBlbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJl
Z2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklE
IHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkpOwpAQCAtMzg4LDEwICszODksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpT
SW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lz
dGVySUQgc2NyYXRjaFJlZywgSlNUeXBlIHR5cGUpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpT
SW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0
ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291
cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyAgICAgICAgbG9hZFB0
cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOyAKKyAgICAg
ICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgZGVzdCwgVGltZXNFaWdodCksIGRlc3QpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBsb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNl
SklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJh
c2VSZWcsIEpTVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1
YWwsIEFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMih0eXBlKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVk
ZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgpAQCAtNjYsNyArNjks
NyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0aEZ1bmN0
aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9m
IHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRw
dHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9h
ZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9m
TGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0
KQpAQCAtOTQsMTAgKzk3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0aGlzIGNvZGUsIHRoZSBvYmplY3QgbXVz
dCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBBc3NlcnQKICAgICAgICAgLy8gdGhpcyBp
biBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBi
cmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1
Y3R1cmUpOwogICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBvay5saW5rKCZqaXQp
OwogI2VuZGlmCkBAIC0xMDYsMTAgKzEwOSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVU
cmFuc2l0aW9uQ2hlY2soCiAgICAgCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCgK
LSAgICAgICAgaml0LmJyYW5jaFB0cigKKyAgICAgICAgYnJhbmNoU3RydWN0dXJlKGppdCwKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVyZSkpOwogfQogCiBzdGF0
aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCkBAIC0xMjgsMTAgKzEzMSwxMCBA
QCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAKIHN0YXRpYyB2b2lk
IHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7
Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaCgpKSB7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBs
YWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgKKyAgICAgICAgICAgIFJlcGF0
Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcygKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9m
ZnNldCgKICAgICAgICAgICAgICAgICAgICAgLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsKSksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh0YXJnZXQp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwOSwxMCBAQCBzdGF0aWMgdm9pZCBnZW5l
cmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVDYXNlczsKICAgICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgCiAgICAgU3RydWN0dXJl
KiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0yODIsOCArMjg4LDcgQEAgc3RhdGljIGJvb2wgdHJ5
Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAKLSAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsgCi0gICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJ
c0FycmF5KSkpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOwogICAgICAgICAKQEAgLTQ2OSw3ICs0NzQs
MTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAK
ICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0cnVjdCA9IHN0dWJKaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0
cnVjdCA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgc3RydWN0dXJl
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBzdHJhdGVneSB3ZSB1c2UgZm9yIHN0dWJzIGlz
IGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEpIENhbGwgREZHIGhlbHBlciB0aGF0IGNhbGxzIHRo
ZSBnZXR0ZXIuCkBAIC02ODIsMTAgKzY5MCwxMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFj
ZVN0dWIoCiAgICAgICAgIHN0dWJKaXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsKICAgICB9CiAK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBzdHViSml0LmJyYW5jaFB0
cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBicmFuY2hTdHJ1Y3R1
cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgCiAjaWYgRU5BQkxFKFdSSVRF
X0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04MTEsNyArODE5LDEw
IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIAogICAg
IEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3Ry
dWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICBvbGRTdHJ1Y3R1cmUpKTsKICAgICAKICAgICBhZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBl
KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVyZUNhc2VzLApA
QCAtODY5LDcgKzg4MCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAg
ICAgICAgc2NyYXRjaEdQUjFIYXNTdG9yYWdlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBzdHViSml0
LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
KyAgICBERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8o
c3R1YkppdCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYmFzZUdQ
Uik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmU2NCh2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CkBAIC0xMTgyLDEwICsxMTkzLDEwIEBAIHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJ
bigKICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJT
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IGNoYWluLT5oZWFkKCk7CkBAIC0xMzEwLDEwICsxMzIxLDEwIEBAIHZvaWQgbGlua0Nsb3N1
cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2EKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFw
cGVuZCgKLSAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVy
ZShzdHViSml0LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAK
ICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTM3
OSwxNiArMTM5MCwxNiBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENh
CiB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNo
LmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJl
cGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAot
ICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
MzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
MzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwp
OworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZm
ZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVM
YWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0
Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7Cisg
ICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1
bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVs
LCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgMCk7CiAjZWxzZQpAQCAtMTQxMywxNiArMTQyNCwxNiBAQCB2b2lkIHJlc2V0UHV0
QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICByZXBh
dGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wdGltaXplZEZ1
bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJf
dClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKLSAgICBpZiAoTWFjcm9Bc3Nl
bWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAorICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgeworICAgICAgICByZXBhdGNoQnVmZmVyLnJl
dmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCisgICAgICAg
ICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFk
ZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAotICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51
c2VkUG9pbnRlcikpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAg
ICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNp
bmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC02NSwxNCArNjcsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lz
dGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3Vt
ZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5h
cHBlbmQoYnJhbmNoU3RydWN0dXJlKCp0aGlzLCBOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAg
QWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0
Y2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRz
dCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNj
cmF0Y2gsIGRzdCk7CiAgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHJlbG9hZCB0
aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVkIGl0LgorICAgICAg
ICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVy
SUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkpJ
VE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0
ZXJhdG9yLmgiCkBAIC0xNjgsNyArMTY5LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5m
bzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2Fk
U3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMiwg
R1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKQEAgLTk4Niw5
ICs5ODcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0CiAgICAg
aml0LmxvYWQzMihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRl
cmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7
CiAgICAgCiAgICAgLy8gUHVsbCBvdXQgdGhlIGJ1dHRlcmZseSBmcm9tIGl0ZXJhdGVkT2JqZWN0
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKLSAg
ICAKLSAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qz
KTsKKyAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlND
ZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsK
ICAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CiAg
ICAgCiAgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VW51c2VkUG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VW51c2VkUG9pbnRlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1VudXNlZFBvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorc3RhdGljIGNvbnN0IHVp
bnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHgwOworI2Vsc2UKIHN0YXRpYyBjb25zdCB1aW50cHRy
X3QgdW51c2VkUG9pbnRlciA9IDB4ZDFlN2JlZWY7CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwyNCBAQCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFVuY2hlCiAgICAgICAgIHBheWxvYWQpCiBlbmQKIAorbWFjcm8gc3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIHN0b3JlcCBzdHJ1
Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorCisgICAgbG9hZGkgU3RydWN0dXJl
OjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBzY3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gs
IEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1f
aW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpT
Q2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9y
ZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAg
ICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCitlbmQKKwogbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKICAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgogZW5kCkBAIC00
MjgsNyArNDQ2LDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQwCiAg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBd
LCB0MAogICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbigyLCB0MikKICAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKQEAgLTUwOSw3ICs1
MjcsNyBAQCBfbGxpbnRfb3BfZXFfbnVsbDoKICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEK
ICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQK
ICAgICBtb3ZlIDAsIHQxCiAgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQpAQCAtNTU2LDcg
KzU3NCw3IEBAIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAogICAgIG1vdmUgMSwgdDEKICAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQpAQCAt
NTgzLDggKzYwMSw4IEBAIG1hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGEK
ICAgICBiaW5lcSB0MiwgdDMsIC5zbG93CiAgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAg
ICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MV0sIHQzCiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKICAgICBiYmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAu
c2xvdwogLm5vdFN0cmluZzoKQEAgLTg1NSw3ICs4NzMsNyBAQCBfbGxpbnRfb3BfY2hlY2tfaGFz
X2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSAxMltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MAogICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAK
QEAgLTg3MCw3ICs4ODgsNyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICBsb2FkaSAxMltQ
Q10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDFdLCB0MgogICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2FkaSA4W1BDXSwgdDAK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcElu
c3RhbmNlb2ZTbG93KQpAQCAtODc4LDcgKzg5Niw3IEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgog
ICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92
ZSAxLCB0MAogLm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBs
b2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCiAgICAg
YnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCiAgICAgYnRpbnogdDIsIC5vcEluc3RhbmNl
b2ZMb29wCkBAIC05MDUsNyArOTIzLDcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9w
SXNVbmRlZmluZWRDZWxsOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgYnRibnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAs
IHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC05NDgsNyAr
OTY2LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQxLCB0MCwgdDMpCiAgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQogICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MAogICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTEwMTcsNyArMTAzNSw3IEBAIG1hY3JvIGdl
dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0MywKICAgICAgICAgdDAsCiAgICAg
ICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAg
ICAgICAgIGxvYWRpIDRbUENdLCB0MQogICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCiAgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgpAQCAtMTA0NSw3ICsxMDYzLDcgQEAgX2xsaW50X29w
X2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAgMTZbUENd
LCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Mywg
Lm9wR2V0QXJyYXlMZW5ndGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQyCiAgICAgYXJyYXlQ
cm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5n
dGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3Ro
U2xvdwpAQCAtMTA4OSw3ICsxMTA3LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3Jh
Z2UpCiAgICAgICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3Rv
cmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0
MQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQy
KQogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQpAQCAtMTExNyw3ICsxMTM1
LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRp
IDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRh
ZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgIGdldFByb3BlcnR5U3Rv
cmFnZSgKQEAgLTExMzAsNyArMTE0OCw3IEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0
aW9uYWxDaGVja3MKICAgICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQogICAgICAg
ICAgICAgbG9hZGkgMjRbUENdLCB0MQogICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W3QzXQotICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQor
ICAgICAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8odDAsIHQxLCB0MikKICAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCiAgICAgICAgIGVuZCkKIGVuZApAQCAtMTE0OCw3ICsxMTY2LDcg
QEAgbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLAogICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQogLmxvb3A6CiAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCiAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBb
c2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA0LCBzY3JhdGNoCiAgICAgYmluZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAubG9vcApAQCAtMTE3NSw3ICsxMTkzLDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0MF0sIHQyCiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0
MiwgdDMsIHQxKQogICAgIGxvYWRpIDEyW1BDXSwgdDMKQEAgLTEyNjEsNyArMTI3OSw3IEBAIF9s
bGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQw
CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDJdLCB0MAogICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0
cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CiAgICAgbG9hZGkgMjRbUENdLCB0MAogICAg
IGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKQEAgLTEzMDQsNyArMTMyMiw3IEBAIG1hY3JvIHB1dEJ5
VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRp
IDRbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgbG9hZHAg
MTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGxvYWRpIDhbUENd
LCB0MApAQCAtMTQxNiw3ICsxNDM0LDcgQEAgbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBp
bW1lZGlhdGVIYQogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
aW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBjZWxsSGFuZGxlcih0MiwgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQogICAg
IGRpc3BhdGNoKDMpCiAKQEAgLTE1NDcsNyArMTU2NSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hh
cjoKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQx
CiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0s
IFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpbmVxIEpTU3RyaW5n
OjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpT
U3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKQEAgLTE1OTEsOSArMTYwOSw5IEBAIG1hY3JvIGFycmF5
UHJvZmlsZUZvckNhbGwoKQogICAgICAgICBuZWdpIHQzCiAgICAgICAgIGJpbmVxIFRoaXNBcmd1
bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRhZywgLmRvbmUKICAgICAg
ICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwg
dDAKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgICAgIGxvYWRwIDI0W1BDXSwg
dDEKLSAgICAgICAgc3RvcmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVb
dDFdCisgICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJl
SURbdDFdCiAgICAgLmRvbmU6CiAgICAgZW5kCiBlbmQKQEAgLTE2NTgsNyArMTY3Niw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCkBAIC0xNjc0
LDcgKzE2OTIsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0
MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmlu
Z1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTE3MDMsNyArMTcyMSw3IEBAIF9s
bGludF9vcF9uZXh0X3BuYW1lOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQogICAgIGxvYWRpIDhbUENdLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAg
ICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0
Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE3
MTEsNyArMTcyOSw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wOgogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEK
ICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAg
ICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTE5ODMsNyAr
MjAwMSw3IEBAIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhd
LCB0MAogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsx
OTMsNDEgQEAgbWFjcm8gdmFsdWVQcm9maWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIGVu
ZAogZW5kCiAKK21hY3JvIGxvYWRTdHJ1Y3R1cmUoY2VsbCwgc3RydWN0dXJlKQorZW5kCisKK21h
Y3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dm1bc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0
dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gK
KyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxv
YWRwIFtzY3JhdGNoLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBsb2Fk
U3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKKyAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW2NlbGxdLCBjZWxsCisgICAg
bG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRh
YmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCisgICAgbG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0s
IHN0cnVjdHVyZQorZW5kCisKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGws
IHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURb
c3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3JlcSBzY3JhdGNoLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVj
dHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5
cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxs
OjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwg
SlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGkgU3RydWN0dXJlOjptX3N0cnVjdHVy
ZUlEW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFtjZWxsXQorZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0
ZXIuCiAKQEAgLTMxOCwxMCArMzUzLDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAg
YnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbigyLCB0MikKLSAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0
MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpA
QCAtNDAyLDExICs0MzcsMTEgQEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAg
ICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgotICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QyXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRv
bmUKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MCwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2ds
b2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAtNzMzLDggKzc2OCw3IEBAIF9sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKQEAgLTc0NiwyNCArNzgwLDIzIEBAIF9sbGludF9vcF9pbnN0YW5j
ZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5
cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0
VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xv
dykKICAgICAKICAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1
ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MgotICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJd
LCB0MgorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxv
YWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDNdLCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJ
bnN0YW5jZW9mRG9uZQogICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAK
ICAgICBtb3ZlIDAsIHQwCiAub3BJbnN0YW5jZW9mRG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwg
dDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2Zy
LCB0MywgOF0KICAgICBkaXNwYXRjaCg0KQogCkBAIC03ODMsMTcgKzgxNiwxNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
CisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3Rv
cmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MV0sIHQxCi0gICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQz
Ci0gICAgb3JxIFZhbHVlRmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAg
ICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFs
dWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtODI2LDggKzg1OSw3IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQw
KQogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAg
IHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTg3OSwxNCArOTEx
LDE1IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBm
YXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdo
aWNoIGlzIHdoYXQKICAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQs
IHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNs
b3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MywgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQor
ICAgIGJwbmVxIHQyLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0
MikKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAg
IGxvYWRxIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAgICAgc3RvcmVx
IHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQpAQCAtOTEyLDcgKzk0NSw3IEBAIF9sbGludF9vcF9nZXRf
YXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MCwgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQw
KQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXog
dDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTk0OSwxNSAr
OTgyLDE2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKIG1hY3JvIHB1dEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEg
dDIsIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAg
dDAsCiAgICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNo
KQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgICAg
ICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkK
ICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KQEAgLTk4
Miw5ICsxMDE2LDEwIEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rp
b24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKKyAgICBi
cG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMs
IHQyKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikKLSAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNr
cyh0MSwgdDMpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGdldFByb3Bl
cnR5U3RvcmFnZSgKICAgICAgICAgdDAsCkBAIC05OTUsMTUgKzEwMzAsMTUgQEAgbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KHQxKQogICAgICAgICAgICAgc3RvcmVxIHQxLCBbdDNdCiAgICAgICAgICAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MSkKLSAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0KKyAgICAgICAgICAgIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwg
dDIpCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8g
bm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3Jv
IHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVj
dHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3Jh
dGNoKQogICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEw
MTIsNyArMTA0Nyw4IEBAIG1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwK
ICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxs
LCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2Vs
bF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJv
dG9DZWxsLCBzY3JhdGNoMikKKyAgICBtb3ZlIHNjcmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgs
IHNjcmF0Y2gKICAgICBicW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmxvb3AKQEAgLTEwMzksOCArMTA3NSw4IEBAIF9sbGludF9vcF9nZXRfYnlf
dmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIs
IHQzLCB0MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTEyNSw3ICsx
MTYxLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5UG5hbWVTbG93KQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwgdDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykK
ICAgICBicG5lcSB0MiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDFdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykK
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwpAQCAtMTE2Nyw4ICsxMjAz
LDggQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQor
ICAgIG1vdmUgdDEsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0
MCwgdDMsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTEyNzcsOCArMTMxMyw4IEBAIG1hY3JvIGVxdWFs
TnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
ICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1l
ZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFu
ZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAu
dGFyZ2V0KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNl
bGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNo
KDMpCiAKIC50YXJnZXQ6CkBAIC0xNDEwLDggKzE0NDYsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2No
YXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQx
LCB0YWdNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hD
aGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAg
YnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAtMTQ1NSw5ICsxNDkwLDkgQEAgbWFjcm8gYXJy
YXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5lZ3AgdDMKICAgICAgICAgbG9hZHEgVGhpc0Fy
Z3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmRvbmUKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJv
ZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KKyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDMKKyAgICAgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRFt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTUyMCw4
ICsxNTU1LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAg
ICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3Q6CkBAIC0xNTM2LDggKzE1NzAsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0
aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJ
c0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1NjcsNyArMTYw
MCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0s
IHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc1LDcg
KzE2MDgsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGws
IC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwg
dDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBu
YW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3AKQEAgLTE4MDQsOCArMTgzNyw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Nj
b3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFj
cm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsMTMgKzI1NSwxNCBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgp
CiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5k
ZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQotICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVj
dHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFu
ZEluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHBy
b2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAg
ICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAogICAgIGlmIFZBTFVF
X1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0
U2VlblN0cnVjdHVyZVtwcm9maWxlXQorICAgICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHNjcmF0Y2gKKyAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6
bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Byb2ZpbGVdCiAgICAgZW5kCi0gICAgbG9hZGIgU3RydWN0
dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAgICBsb2FkYiBK
U0NlbGw6Om1faW5kZXhpbmdUeXBlW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCiBtYWNybyBj
aGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQpAQCAtNDA5LDggKzQxMCw4IEBAIG1h
Y3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3QKICAgICAgICAgc3RvcmVwIHNj
cmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxsb2NhdG9yXQogICAgIAogICAgICAgICAj
IEluaXRpYWxpemUgdGhlIG9iamVjdC4KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxs
OjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbcmVzdWx0XQorICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhyZXN1bHQs
IHN0cnVjdHVyZSwgc2NyYXRjaDEpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSAKICAgICB7IAotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcmd1bWVudHNUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVt
QXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9udW1Bcmd1
bWVudHMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0Z1bmN0aW9uRXhlY3V0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7Cisg
ICAgICAgIHJldHVybiB0eXBlKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKICAgICB9CiAK
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1Q
YXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0Owog
CkBAIC02NjksNyArNjY5LDcgQEAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2
YWx1ZQogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+dHlw
ZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBQ
cm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02ODMsNyArNjgzLDcgQEAgaW5saW5lIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxl
Ojp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVU
eXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyktPnVubGlu
a0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJX
cml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgSlNBcnJheTo6
c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7
Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICBpZiAoIW5l
d0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDIyLDcgKzQyMiw3IEBAIGJv
b2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgIGVuc3Vy
ZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0
aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1
YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDQ0LDcgKzQ0NCw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywK
IAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgIApAQCAtNTM5LDcgKzUzOSw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNT
dGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBz
dG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJy
YXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewogICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNp
ZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCkBAIC02NzcsNyAr
Njc3LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZQogICAgIAog
ICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4g
YWJub3JtYWwgc3RhdGUsCiAgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJh
eVByb3RvdHlwZS4KLSAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3IgfHwgaW5TcGFyc2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNl
U2xvd1B1dChpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghb2xkTGVuZ3RoKQpAQCAtNzUxLDcgKzc1MSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluZ1QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjb3VudCA+IDApOwogICAg
IAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIApAQCAtODQ5LDcgKzg0OSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlm
dENvdW50V2l0aEFycmF5U3RvcmEKIAogICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBob2xl
cyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3JtYWwgc3RhdGUsCiAgICAgLy8gdXNlIHRoZSBn
ZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3RvdHlwZS4KLSAgICBpZiAobGVuZ3RoICE9IHN0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgc3RvcmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwg
c2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChs
ZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBzdG9yYWdlLT5pblNwYXJz
ZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYm9vbCBtb3ZlRnJvbnQgPSAhc3RhcnRJbmRleCB8fCBzdGFydElu
ZGV4IDwgbGVuZ3RoIC8gMjsKQEAgLTg4Niw3ICs4ODYsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hp
ZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFu
eUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNvdW50KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICAgLy8gV2UgY291bGQgaGFuZGxlIHRo
aXMuIEJ1dCBpdCBzaG91bGRuJ3QgZXZlciBjb21lIHVwLCBzbyB3ZSB3b24ndC4KQEAgLTk5NSwy
MCArOTk1LDIwIEBAIHN0YXRpYyBpbnQgY29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KGMKICAg
ICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+c2Vjb25kLCB2Yi0+c2Vjb25kKTsKIH0KIAot
dGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlw
ZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEludDMyIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUgfHwgaW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aENvbnRpZ3VvdXMgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aEFycmF5U3RvcmFnZSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aEludDMyIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSB8fCBhcnJh
eUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1b3VzIHx8IGFycmF5SW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgCiAgICAgdW5zaWduZWQgbGVuZ3RoTm90
SW5jbHVkaW5nVW5kZWZpbmVkOwogICAgIHVuc2lnbmVkIG5ld1JlbGV2YW50TGVuZ3RoOwotICAg
IGNvbXBhY3RGb3JTb3J0aW5nPGluZGV4aW5nVHlwZT4oCisgICAgY29tcGFjdEZvclNvcnRpbmc8
YXJyYXlJbmRleGluZ1R5cGU+KAogICAgICAgICBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQs
CiAgICAgICAgIG5ld1JlbGV2YW50TGVuZ3RoKTsKICAgICAKLSAgICBDb250aWd1b3VzSlNWYWx1
ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KCk7CisgICAgQ29udGlndW91c0pT
VmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAgICAgCi0g
ICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CisgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0
KCkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJp
Y1ZlY3RvcihFeGVjU3RhdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBhbGxWYWx1
ZXNBcmVOdW1iZXJzID0gdHJ1ZTsKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3
aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAg
IGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBicmVhazsKQEAgLTEwMzksNyArMTAzOSw3
IEBAIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAvLyBhbHNv
IGRvbid0IHJlcXVpcmUgbWVyZ2Vzb3J0J3Mgc3RhYmlsaXR5LCBzaW5jZSB0aGVyZSdzIG5vIHVz
ZXIgdmlzaWJsZQogICAgIC8vIHNpZGUtZWZmZWN0IGZyb20gc3dhcHBpbmcgdGhlIG9yZGVyIG9m
IGVxdWFsIHByaW1pdGl2ZSB2YWx1ZXMuCiAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgdm9pZCos
IGNvbnN0IHZvaWQqKTsKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAo
YXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgICAgICBj
b21wYXJlID0gY29tcGFyZU51bWJlcnNGb3JRU29ydFdpdGhJbnQzMjsKICAgICAgICAgYnJlYWs7
CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljKEV4ZWNTdGF0
ZSogZXhlCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKIAotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKQEAgLTExMTUsNyArMTExNSw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDb250aWd1b3VzVHlw
ZUFjY2Vzc28KIH07CiAKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5
cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgogdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGlndW91c0RhdGE8U3RvcmFnZVR5cGU+IGRhdGEsIHVu
c2lnbmVkIHJlbGV2YW50TGVuZ3RoKQogewogICAgIGlmICghcmVsZXZhbnRMZW5ndGgpCkBAIC0x
MTM5LDExICsxMTM5LDExIEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVj
U3QKICAgICBib29sIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IHRydWU7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlbGV2YW50TGVuZ3RoOyBpKyspIHsKLSAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8aW5kZXhpbmdUeXBlPjo6Z2V0QXNWYWx1
ZShkYXRhLCBpKTsKLSAgICAgICAgQVNTRVJUKGluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQz
MiB8fCB2YWx1ZS5pc0ludDMyKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91
c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7Cisg
ICAgICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1
ZS5pc0ludDMyKCkpOwogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAg
ICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2YWx1ZTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSAh
PSBBcnJheVdpdGhEb3VibGUgJiYgaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQorICAg
ICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGFycmF5SW5k
ZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQogICAgICAgICAgICAgaXNTb3J0aW5nUHJpbWl0
aXZlVmFsdWVzID0gaXNTb3J0aW5nUHJpbWl0aXZlVmFsdWVzICYmIHZhbHVlLmlzUHJpbWl0aXZl
KCk7CiAgICAgfQogICAgICAgICAKQEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSlNBcnJheTo6
c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICAKICAgICAvLyBJZiB0aGUgdG9TdHJpbmcg
ZnVuY3Rpb24gY2hhbmdlZCB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBvciB2ZWN0b3Igc3RvcmFn
ZSwKICAgICAvLyBpbmNyZWFzZSB0aGUgbGVuZ3RoIHRvIGhhbmRsZSB0aGUgb3JpZ25hbCBudW1i
ZXIgb2YgYWN0dWFsIHZhbHVlcy4KLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3
aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAg
IGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgIGNhc2UgQXJyYXlXaXRoQ29udGlndW91czoKQEAg
LTExODQsNyArMTE4NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVj
U3QKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgaWYgKGFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSA8IHJlbGV2YW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBp
bmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCByZWxldmFudExlbmd0aCk7Ci0gICAgICAg
ICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVm
ZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVjdG9yKCkpOworICAgICAgICAgICAgQ29u
dGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVmZXJl
bmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVjdG9yKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkgPCByZWxldmFudExlbmd0aCkKICAgICAgICAg
ICAgIGFycmF5U3RvcmFnZSgpLT5zZXRMZW5ndGgocmVsZXZhbnRMZW5ndGgpOwpAQCAtMTE5NSw3
ICsxMTk1LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAg
IH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVsZXZhbnRMZW5ndGg7IGkrKykKLSAg
ICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRleGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUo
dm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CisgICAgICAgIENvbnRpZ3VvdXNU
eXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRh
dGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CiAgICAgCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cG9w
VGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiB9CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCB2b2lkIEpT
QXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRl
eGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNz
OgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOgogICAgICAgICByZXR1cm47CkBAIC0xMzM2
LDExICsxMzM2LDExIEBAIHN0cnVjdCBBVkxUcmVlQWJzdHJhY3RvckZvckFycmF5Q29tcGFyZSAK
ICAgICBzdGF0aWMgaGFuZGxlIG51bGwoKSB7IHJldHVybiAweDdGRkZGRkZGOyB9CiB9OwogCi10
ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBl
IGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBD
YWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgp
KTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlwZSgpKTsKICAg
ICAKICAgICAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBj
b21wYXJlIGZ1bmN0aW9uIG9yIGluIHRvTnVtYmVyLgogICAgICAgICAKQEAgLTEzNTAsNyArMTM1
MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAo
bV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSByZWxldmFudExlbmd0aDxpbmRleGluZ1R5
cGU+KCk7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFy
cmF5SW5kZXhpbmdUeXBlPigpOwogICAgIHVuc2lnbmVkIG5vZGVDb3VudCA9IHVzZWRWZWN0b3JM
ZW5ndGg7CiAgICAgICAgIAogICAgIGlmICghbm9kZUNvdW50KQpAQCAtMTQxNywxNCArMTQxNywx
NCBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNUb0V4
dHJhY3RUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52
ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkg
PT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlX
aXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtp
XSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0ZXJdLnZhbHVlLmFzTnVtYmVyKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5zZXQodm0s
IHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0ZXJdLnZhbHVlKTsKICAgICAgICAg
KytpdGVyOwogICAgIH0KICAgICAvLyBQdXQgdW5kZWZpbmVkIHZhbHVlcyBiYWNrIGluLgotICAg
IHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdp
dGhEb3VibGU6CiAgICAgICAgIEFTU0VSVChlbGVtZW50c1RvRXh0cmFjdFRocmVzaG9sZCA9PSB1
bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZCk7CkBAIC0xNDQwLDEzICsxNDQwLDEzIEBAIHZvaWQg
SlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICAvLyBFbnN1cmUgdGhhdCB1
bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHplcm9lZCBvdXQuCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQ7IGkgPCBjbGVhckVsZW1lbnRzVGhy
ZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVu
Z3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5
V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJs
ZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFO
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhpbmdEYXRhKClbaV0uY2xl
YXIoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IG5ld1VzZWRW
ZWN0b3JMZW5ndGg7CiB9CiAKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIHZvaWQgSlNBcnJheTo6c29y
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdN
b2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4Niw3ICsx
NDg2LDcgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlzdChFeGVjU3RhdGUqIGV4ZQogICAgIHVu
c2lnbmVkIHZlY3RvckVuZDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvcjsKICAg
ICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0Fy
Z3VtZW50cyhFeGVjU3RhdGUqCiAgICAgdW5zaWduZWQgdmVjdG9yRW5kOwogICAgIAogICAgIEFT
U0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkpOwotICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE2MDMsNDAgKzE2
MDMsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAg
ICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGdldChleGVjLCBpKSk7CiB9CiAKLXRlbXBsYXRl
PEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJ
bmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkJiBu
dW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZhbnRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFp
blNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09
IGluZGV4aW5nVHlwZSgpKTsKIAotICAgIHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxl
dmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7CisgICAgdW5zaWduZWQgbXlSZWxldmFudExlbmd0
aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhpbmdUeXBlPigpOwogICAgIAogICAgIG51bURl
ZmluZWQgPSAwOwogICAgIHVuc2lnbmVkIG51bVVuZGVmaW5lZCA9IDA7CiAgICAgICAgIAogICAg
IGZvciAoOyBudW1EZWZpbmVkIDwgbXlSZWxldmFudExlbmd0aDsgKytudW1EZWZpbmVkKSB7CiAg
ICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgeworICAgICAgICBp
ZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKICAgICAgICAgICAgIEpT
VmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtudW1EZWZpbmVkXS5nZXQo
KTsKICAgICAgICAgICAgIGlmICghdikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAg
ICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAg
ICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZF07
CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdE
YXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkXS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2
ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW251bURlZmluZWRdLmdldCgpOwog
ICAgICAgICBpZiAoIXYgfHwgdi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbXlS
ZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQz
MikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsK
ICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtp
XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5z
aWduZWQKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtudW1EZWZp
bmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkg
eworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAg
ICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07
CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTY1MywyMyArMTY1MywyMyBAQCB2b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2ln
bmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW251bURlZmlu
ZWQrK10gPSB2OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgSlNW
YWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtpXS5nZXQoKTsKKyAgICAgICAg
SlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmdldCgpOwog
ICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgICAgICAgICArK251bVVuZGVmaW5lZDsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW251bURlZmluZWQr
K10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgICAgICBpbmRleGluZ0Rh
dGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgICAgICAKICAgICBu
ZXdSZWxldmFudExlbmd0aCA9IG51bURlZmluZWQgKyBudW1VbmRlZmluZWQ7CiAgICAgCi0gICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3Jh
Z2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghYXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwKTsKICAgICAKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgewor
ICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMy
OgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChudW1E
ZWZpbmVkID09IG5ld1JlbGV2YW50TGVuZ3RoKTsKQEAgLTE2NzgsMTkgKzE2NzgsMTkgQEAgdm9p
ZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBuZXdSZWxldmFudExlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgo
KSk7Ci0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW2ldLnNldFVuZGVm
aW5lZCgpOworICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ld
LnNldFVuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBuZXdSZWxldmFudExlbmd0aDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7
ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7
Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBp
ZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbaV0uY2xlYXIoKTsKKyAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5jbGVhcigpOwogICAg
IH0KIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKSkKKyAgICBpZiAoaGFz
QXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCkt
Pm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdSZWxldmFudExlbmd0aDsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitDT01QSUxFX0FTU0VSVChz
aXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0X3QpLCBqc2NlbGxfaXNfZWlnaHRfYnl0ZXMp
OwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTQ2VsbCk7CiAKIHZv
aWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAog
I2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNp
bmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAt
OTIsOSArOTQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KikgY29uc3Q7CiAgICAgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNU
eXBlIHR5cGUoKSBjb25zdDsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFN0cnVjdHVy
ZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0
dXJlLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlE
ID0gMDsgfQogCiAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCk7CiAKQEAgLTEzNSwyMCArMTM5
LDI2IEBAIHB1YmxpYzoKIAogICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZz
ZXQoKQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKTsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlSUQpOwogICAgIH0K
IAotICAgIHZvaWQqIHN0cnVjdHVyZUFkZHJlc3MoKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlw
ZUluZm9GbGFnc09mZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlOwor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9mbGFncyk7CiAgICAgfQot
ICAgICAgICAKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFs
aWRhdGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsg
fQotI2VuZGlmCi0gICAgICAgIAorCisgICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVP
ZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1f
dHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1faW5kZXhp
bmdUeXBlKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRB
cnJheVN0b3JhZ2VUeXBlID0gTm90VHlwZWRBcnJheTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDgg
KzE4MCwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zdHJ1Y3R1cmU7CisKKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4
aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZv
OjpJbmxpbmVUeXBlRmxhZ3MgbV9mbGFnczsKKyAgICB1aW50OF90IG1fdW51c2VkOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDggKzQyLDExIEBAIGlubGluZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vh
cmx5Q2VsbFQKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CiAKLWlubGlu
ZSBKU0NlbGw6OkpTQ2VsbChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogbV9z
dHJ1Y3R1cmUodm0sIHRoaXMsIHN0cnVjdHVyZSkKK2lubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogbV9zdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUtPmlk
KCkpCisgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQorICAg
ICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpCisgICAgLCBtX2ZsYWdzKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkKIHsKICAgICBBU1NFUlQoIWlz
Q29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkBAIC01Niw3ICs1OSw3IEBAIGlubGluZSB2b2lkIEpT
Q2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICNlbmRpZgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJl
SUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQpAQCAtNjQsMjMgKzY3LDQz
IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKICAgICBBU1NFUlQodm0uaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAg
ICAgdm0uc2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCk7Ci0gICAgaWYgKHN0cnVjdHVyZSkK
KyAgICBpZiAoc3RydWN0dXJlKSB7CisjZW5kaWYKKyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0
cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpOworICAgICAgICBtX3R5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
OworICAgICAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFn
cygpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICNlbmRpZgotICAgICAgICBtX3N0cnVjdHVyZS5zZXRFYXJseVZhbHVlKHZt
LCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25z
IHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwg
IXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlSUQgfHwgIXZt
LnN0cnVjdHVyZVN0cnVjdHVyZSk7Cit9CisKK2lubGluZSBKU1R5cGUgSlNDZWxsOjp0eXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitpbmxpbmUgSW5kZXhpbmdUeXBlIEpT
Q2VsbDo6aW5kZXhpbmdUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleGluZ1R5cGU7
CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgcmV0dXJuIEhlYXA6OmhlYXAodGhpcykt
PnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lk
IEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxsKTsKIAotICAgIHZpc2l0b3Iu
YXBwZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7CisgICAgLy8gRklYTUU6IEl0J3Mgc2lsbHkgYW5k
IHNvbWV3aGF0IGRhbmdlcm91cyB0byBoYXZlIHRvIGRvIHRoaXMgdG8gc2F0aXNmeSBTbG90Vmlz
aXRvci4KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOworICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZzdHJ1Y3R1cmUpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTE2LDM3ICsxMzksNDEgQEAgaW5saW5lIGJvb2wgaXNaYXBw
ZWQoY29uc3QgSlNDZWxsKiBjZWxsKQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzT2JqZWN0KCk7CisgICAgcmV0dXJu
IFR5cGVJbmZvOjppc09iamVjdChtX3R5cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
U3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpID09IFN0cmluZ1R5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQog
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEdldHRlclNldHRlclR5cGU7Cisg
ICAgcmV0dXJuIG1fdHlwZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gUHJveHlUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gUHJveHlUeXBl
OwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3Jh
cHBlclR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOwogfQog
CiBpbmxpbmUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpID09IHRoaXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9z
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKLSAgICBBU1NFUlQoIW1fc3RydWN0dXJlCi0gICAgICAg
IHx8IG1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpCi0gICAgICAgIHx8IG1fc3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZSk7Ci0gICAgbV9z
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpID09IHRoaXMtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSk7CisgICAgQVNT
RVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKQorICAgICAgICB8fCB0aGlzLT5zdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQorICAgICAgICB8fCBIZWFw
OjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZS0+aWQoKSkgPT0g
c3RydWN0dXJlKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1cmUpOwor
ICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgbV9mbGFncyA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyAgICBtX3R5cGUgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKTsKIH0KIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1l
dGhvZFRhYmxlRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdApAQCAtMTU2LDEwICsxODMsMTEgQEAgaW5s
aW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxpbmUgY29uc3QgTWV0
aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAogewotICAgIGlmIChTdHJ1Y3R1
cmUqIHJvb3RTdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkpCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoU3RydWN0dXJlKiBy
b290U3RydWN0dXJlID0gc3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKLSAg
ICByZXR1cm4gJmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKKyAgICByZXR1cm4gJnN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6Omlu
aGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKQEAgLTE3MywxMCArMjAxLDExIEBA
IGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3MKIC8vIGNhc2UgYnkgY2hl
Y2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4K
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkpIHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBs
KCktPmhhc0hhc2goKQotICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgbmFtZSkpCi0gICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQo
ZXhlYy0+dm0oKSwgbmFtZSk7CisgICAgICAgICAgICA/IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCisgICAgICAgICAgICA6IHN0cnVjdHVyZS0+Z2V0
KGV4ZWMtPnZtKCksIG5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCktPmdldCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDcgQEAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlND
ZWxsOjpjbGFzc0luZgogewogICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRl
c3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygp
OwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZh
bGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fc3RydWN0dXJl
LT5jbGFzc0luZm8oKTsKLSNlbmRpZgorICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCAr
NTcsOSBAQCBzdGF0aWMgdW5zaWduZWQgbGFzdEFycmF5U2l6ZSA9IDA7CiAKIEpTQ2VsbCogZ2V0
Q2FsbGFibGVPYmplY3RTbG93KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCiAgICAgICAgIHJldHVybiBjZWxsOwotICAgIGlmIChzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKKyAgICBpZiAo
Y2VsbC0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5j
dGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIDA7CiB9CkBA
IC0yNDgsMTEgKzI0NywxMiBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsCiAgICAgCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKTsK
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAg
IGlmIChidXR0ZXJmbHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0
b3IsIGJ1dHRlcmZseSwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKSk7
CisgICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwg
c3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOwogCi0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemUoKTsKKyAgICBzaXplX3Qgc3RvcmFn
ZVNpemUgPSBzdHJ1Y3R1cmUtPmlubGluZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyh0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4CiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCiAgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgc2xvdCk7CiAgICAgCi0gICAg
c3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBz
d2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktf
SU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICBicmVhazsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3dp
dGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTU2MCw3ICs1NjAsNyBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAKIHZvaWQgSlNPYmpl
Y3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZShWTSYgdm0pCiB7Ci0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVT
OgpAQCAtNTk1LDEzICs1OTUsMTQgQEAgdm9pZCBKU09iamVjdDo6bm90aWZ5UHJlc2VuY2VPZklu
ZGV4ZWRBYwogQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdl
KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUpCiB7CiAgICAgQVNT
RVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUg
PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhl
ZFByb3BlcnRpZXMob2xkVHlwZSkpOwotICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm5lZWRzU2xv
d1B1dEluZGV4aW5nKCkpOworICAgIEFTU0VSVCghc3RydWN0dXJlLT5uZWVkc1Nsb3dQdXRJbmRl
eGluZygpKTsKICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBCQVNFX1ZFQ1RPUl9MRU4pOwog
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dBcnJh
eVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCisgICAgICAgIG1fYnV0dGVy
Zmx5LCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCks
IGZhbHNlLCAwLAogICAgICAgICBlbGVtZW50U2l6ZSAqIHZlY3Rvckxlbmd0aCk7CiAgICAgbmV3
QnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNl
dFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOwpAQCAtNjQ5LDEwICs2NTAsMTEgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogQXJyYXlTdG9yYWdlKiBKU09iamVj
dDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEluZGV4
aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgSW5kZXhpbmdUeXBlIG9s
ZFR5cGUgPSBpbmRleGluZ1R5cGUoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9sZFR5cGUsICFoYXNJ
bmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkg
PSBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIG1fYnV0dGVyZmx5
LCB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwKKyAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIEFycmF5U3Rv
cmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0
ZXJmbHkpOwogCkBAIC02NjIsNyArNjY0LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3Jl
YXRlQXJyYXlTdG9yYQogICAgIHJlc3VsdC0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKICAgICByZXN1
bHQtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSAwOwogICAgIHJlc3VsdC0+bV9pbmRleEJpYXMgPSAw
OwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9y
YWdlVHJhbnNpdGlvbigpKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+c3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJm
bHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtNjc0LDE0ICs2NzYsMTQgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlSW5p
dGlhbEFycgogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0ludDMyKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkp
KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVJbnQzMikpOwogICAgIHJldHVybiBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKCk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpj
b252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lk
ZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRl
ZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtpXSA9IFFOYU47CkBAIC02OTIsMTYgKzY5NCwxNyBAQCBDb250aWd1b3VzRG91
YmxlcyBKU09iamVjdDo6Y29udmVydFVuZGVjCiAKIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVj
dDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhh
c1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFz
VW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGln
dW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCiBBcnJh
eVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0
Q29weWluZ0VsZW1lbnRzKFZNJiB2bSwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogeworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgdW5zaWduZWQgcHVi
bGljTGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAgIHVuc2lnbmVkIHBy
b3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAgICB1
bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpOworICAg
IHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlLT5vdXRPZkxpbmVTaXpl
KCk7CiAgICAgCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoCiAgICAgICAgIHZtLCB0aGlzLCAwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0
cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmVlZGVkTGVuZ3RoKSk7CkBAIC03MjQsNyArNzI3
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9u
UHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsK
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY29uc3Ry
dWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVk
TGVuZ3RoKTsKICAgICAvLyBObyBuZWVkIHRvIGNvcHkgZWxlbWVudHMuCkBAIC03NDYsNyArNzQ5
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZAogCiBDb250aWd1
b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Eb3VibGUoVk0mIHZtKQogewotICAg
IEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NF
UlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtp
XTsKQEAgLTc2Niw3ICs3NjksNyBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVy
dEludDMyCiAKIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Db250
aWd1b3VzKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAg
CiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRl
cmZseS0+Y29udGlndW91cygpOwpAQCAtNzc0LDcgKzc3Nyw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVl
cyBKU09iamVjdDo6Y29udmVydEludDMKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dEludDMyVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNp
dGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdU
eXBlKCkpKTsKICAgICAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQXJyYXlT
dG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91
dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKQEAgLTgwNCw3ICs4MDcsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiB0ZW1wbGF0ZTxKU09iamVj
dDo6RG91YmxlVG9Db250aWd1b3VzTW9kZSBtb2RlPgogQ29udGlndW91c0pTVmFsdWVzIEpTT2Jq
ZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNT
RVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQo
aGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIGRvdWJsZSogY3Vy
cmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwpAQCAtODQ0LDcgKzg0
Nyw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6cmFnZUNvbnZlcnQKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblBy
b3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5
cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENv
bnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0
aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBp
LS07KSB7CkBAIC04NzMsNyArODc2LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dERvdWJsZVRvQQogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNp
Z25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAg
IEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAg
IEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlT
dG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91
dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTk1Miw3ICs5NTUsNyBA
QCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmVuc3VyZUludDMyCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMoKTsKQEAgLTk3Niw3ICs5NzksNyBA
QCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlRG91YmxlCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiBDb250aWd1b3VzRG91YmxlcygpOwpAQCAtMTAwMiw3ICsxMDA1LDcg
QEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1cmVDb250aQogewogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hv
dWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CkBAIC0xMDQyLDcgKzEwNDUs
NyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdT
aG91bGRCZVNwYXJzZSgpKSkKICAgICAgICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VF
eGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pOwpAQCAtMTA3Niw3ICsxMDc5
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogCiBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25h
cnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwg
MCwgMCk7CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNl
SW5kZXhNYXAodm0pOwpAQCAtMTEwNyw3ICsxMTEwLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVj
dDo6ZW5zdXJlQXJyYXlTdG9yYQogCiB2b2lkIEpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJh
eVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9y
YWdlKHZtLCBBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOwogICAgICAgICBicmVhazsKQEAg
LTExNTQsMTAgKzExNTcsMTAgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwg
SlNWYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghaGFzSW5kZXhlZFBy
b3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoIWhhc0luZGV4
ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGlmIChzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAg
aWYgKHNob3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgc3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKHZtKTsKQEAgLTEyMDYsMTAgKzEy
MDksMTEgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcgogICAgIGlm
IChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQogICAgICAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFJl
YWRPbmx5KQotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKKyAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygp
OwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgc3RydWN0
dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCiBib29sIEpTT2JqZWN0OjpoYXNQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBA
IC0xMjcwLDcgKzEyNzQsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCiAgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICBj
YXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTQ1NCw3ICsxNDU4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iagogICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRl
bnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2ll
bnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKICAgICAv
LyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBmb3Ig
UHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0xNjA0LDE5ICsxNjA4LDIwIEBAIHZv
aWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKIAogYm9vbCBKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoIWlz
VmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKKyAg
ICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dERpcmVjdFVuZGVmaW5lZChv
ZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CiAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7CkBAIC0xODQ1LDcgKzE4NTAs
NyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CisgICAgQVNTRVJU
KChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsK
ICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgCiAgICAgLy8gRm9y
IHVzIHRvIGdldCBoZXJlLCB0aGUgaW5kZXggaXMgZWl0aGVyIGdyZWF0ZXIgdGhhbiB0aGUgcHVi
bGljIGxlbmd0aCwgb3IgZ3JlYXRlciB0aGFuCkBAIC0xOTc0LDcgKzE5NzksNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgLy8gaSBzaG91bGQgYmUgYSB2
YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9yLgog
ICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4
aW5nU2hvdWxkQmVTcGFyc2UoKSkgewogICAgICAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0yMDQyLDcgKzIwNDcsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICAKICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFycmF5IGluZGV4IHRoYXQgaXMgb3V0
c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCi0gICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdl
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGFycmF5U3RvcmFnZSgpID09IHN0b3JhZ2Up
OwogICAgIEFTU0VSVChpID49IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpIHx8IGF0dHJpYnV0ZXMp
OwogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CkBAIC0yMTI0LDcgKzIxMjksNyBA
QCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgaWYgKGF0dHJp
YnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvcikpCiAgICAgICAgIG5vdGlmeVByZXNlbmNlT2ZJ
bmRleGVkQWNjZXNzb3JzKHZtKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNw
YXJzZSgpIHx8IGF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0yMjQ4LDcgKzIyNTMsNyBA
QCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWCiAgICAgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoOwogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICAKLSAgICBpZiAoaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgeworICAgIGlmICho
YXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgdmVjdG9yTGVu
Z3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgICAgICBsZW5ndGggPSBtX2J1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKQEAgLTIyODcsNyArMjI5Miw3
IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1lbnRzKEJ1dHRlcmYKIAogdW5zaWduZWQg
SlNPYmplY3Q6OmNvdW50RWxlbWVudHMoKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzI2LDEwICsyMzMxLDExIEBAIGJvb2wg
SlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdWZWN0
b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgobmV3TGVuZ3RoKTsKIAogICAgIC8vIEZhc3Qg
Y2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJbiB0aGVzZSBjYXNlcyBhIHJlYWxsb2Mg
bWFrZXMgc2Vuc2UuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
KTsKICAgICBpZiAoTElLRUxZKCFpbmRleEJpYXMpKSB7CiAgICAgICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5i
dXR0ZXJmbHkoKS0+Z3Jvd0FycmF5UmlnaHQoCi0gICAgICAgICAgICB2bSwgdGhpcywgc3RydWN0
dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLAorICAgICAgICAg
ICAgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0
cnVlLAogICAgICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksIEFy
cmF5U3RvcmFnZTo6c2l6ZUZvcihuZXdWZWN0b3JMZW5ndGgpKTsKICAgICAgICAgaWYgKCFuZXdC
dXR0ZXJmbHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzQzLDcgKzIzNDksNyBA
QCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgdW5zaWduZWQg
bmV3SW5kZXhCaWFzID0gc3RkOjptaW4oaW5kZXhCaWFzID4+IDEsIE1BWF9TVE9SQUdFX1ZFQ1RP
Ul9MRU5HVEggLSBuZXdWZWN0b3JMZW5ndGgpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5
ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6ZUFycmF5KAogICAgICAgICB2bSwgdGhpcywK
LSAgICAgICAgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIEFycmF5U3Rv
cmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLAorICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLAog
ICAgICAgICBuZXdJbmRleEJpYXMsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihuZXdWZWN0
b3JMZW5ndGgpKTsKICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjM1Nyw3ICsyMzYzLDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5n
dGgoVk0mIAogdm9pZCBKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyhWTSYgdm0sIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZX0lOREVYKTsKLSAgICBB
U1NFUlQoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0lu
dDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkpOworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNJ
bnQzMihpbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNV
bmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICBBU1NFUlQobGVuZ3RoID4gbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAKICAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGgg
PSBzdGQ6Om1pbigKQEAgLTIzNjUsMTEgKzIzNzEsMTIgQEAgdm9pZCBKU09iamVjdDo6ZW5zdXJl
TGVuZ3RoU2xvdyhWTSYgdm0sIAogICAgICAgICBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKTsK
ICAgICB1bnNpZ25lZCBvbGRWZWN0b3JMZW5ndGggPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCk7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRlcmZseS0+
Z3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCisgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1
cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgb2xkVmVj
dG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwKICAgICAgICAgbmV3VmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0RvdWJsZShpbmRleGluZ1R5cGUo
KSkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkVmVjdG9yTGVuZ3RoOyBpIDwgbmV3
VmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpLmRhdGEoKVtpXSA9IFFOYU47CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBp
ZiAodmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlv
blR5cGUpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIDA7CiB9
CkBAIC0xMzIsMTQgKzEzMiwxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxl
bmd0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfQogICAgICAgICAKICAgICB1
bnNpZ25lZCBnZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVk
UHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhh
c0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KQEAg
LTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOSw3ICsy
MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCkuYXNJbnQzMigpKTsKICAgICAgICAgY2Fz
ZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
CiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5L
X0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclB1dERpcmVjdCh1bnNpZ25lZCBpKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxM
X0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CkBA
IC0zNjksNyArMzY5LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICB2b2lkIGluaXRpYWxpemVJ
bmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7
CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb1VuZGVjaWRlZCh2bSwgaSwgdik7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTQxOCw3ICs0MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAg
IGJvb2wgaGFzU3BhcnNlTWFwKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CkBAIC00MzUsNyArNDM1LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGlu
U3BhcnNlSW5kZXhpbmdNb2RlKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CkBAIC00OTEsMzEgKzQ5MSwzNSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBnZXQgZnVu
Y3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgIEpTVmFsdWUgZ2V0RGly
ZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5
TmFtZSk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNh
cGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlu
bGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQg
PyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGdl
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKSBjb25zdAogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBz
dHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Cisg
ICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsK
ICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0KG9mZnNl
dCkgOiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGlyZWN0T2Zm
c2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5
KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIH0KIAogICAgIFByb3BlcnR5
T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsK
LSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9m
ZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpYyk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKQEAgLTY0MSw3ICs2NDUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGlndW91cywgYXJyYXkgc3RvcmFnZSkuCiAgICAgQ29u
dGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlm
IChMSUtFTFkoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0
dXJuIGVuc3VyZUludDMyU2xvdyh2bSk7CkBAIC02NTMsNyArNjU3LDcgQEAgcHVibGljOgogICAg
IC8vIG9yIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNEb3VibGVzIGVuc3VyZURvdWJs
ZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0RvdWJsZShzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNEb3VibGUoaW5kZXhp
bmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVEb3VibGVTbG93KHZt
KTsKQEAgLTY2Myw3ICs2NjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gaW5kZXhpbmcgc2hvdWxkIGJl
IHNwYXJzZSBvciBiZWNhdXNlIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLgogICAgIENvbnRpZ3Vv
dXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAg
ICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAgICAgIAogICAgICAg
ICByZXR1cm4gZW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAtNjc0LDcgKzY3OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhdHRlbXB0cyB0byBjb252ZXJ0IGVhY2ggZG91YmxlIHRvIGFuIGludDMy
LgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyByYWdlRW5zdXJlQ29udGlndW91cyhWTSYgdm0pCiAg
ICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhpbmRleGluZ1R5
cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIHJhZ2VFbnN1cmVDb250aWd1b3VzU2xvdyh2bSk7
CkBAIC02ODYsNyArNjkwLDcgQEAgcHVibGljOgogICAgIC8vIGFscmVhZHkuCiAgICAgQXJyYXlT
dG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJ
S0VMWShoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAg
ICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VTbG93KHZtKTsKQEAgLTczNCw3ICs3Mzgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3RvcmFnZS4gVGhpcyB3aWxsIGFzc2VydCBvdGhlcndp
c2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2UoKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAg
ICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpOwogICAgICAgICByZXR1
cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgIH0KICAgICAgICAgCkBAIC03NDIs
NyArNzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIG9iamVjdCBpcyBpbiBhIG1vZGUgd2hlcmUg
aXQgaGFzIGFycmF5IHN0b3JhZ2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2VPck51
bGwoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9B
UlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICAKQEAgLTgwOCw3ICs4MTIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZX0lOREVYKTsKLSAg
ICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8
fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBl
KCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoaW5kZXhpbmdUeXBl
KCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGlmIChtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkgPCBsZW5ndGgpCiAgICAgICAgICAg
ICBlbnN1cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwpAQCAtODQ2LDcgKzg1MCw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjdXJyZW50SW5kZXhpbmdEYXRhKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKQEAgLTg2Myw3
ICs4NjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZSBnZXRIb2x5SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSk7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5U
MzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5n
ZXQoKTsKQEAgLTkwMyw3ICs5MDcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB1bnNpZ25lZCBjdXJy
ZW50UmVsZXZhbnRMZW5ndGgoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfRE9V
QkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOgpAQCAtOTc1LDYgKzk3OSwxMSBAQCBwcml2YXRlOgogICAgIAogcHJvdGVjdGVkOgog
ICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorcHJp
dmF0ZToKKyAgICB1aW50MzJfdCBtX3BhZGRpbmc7CisjZW5kaWYKIH07CiAKIC8vIEpTTm9uRmlu
YWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3Rv
cmFnZSwKQEAgLTExMDEsMzUgKzExMTAsMzUgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBj
b25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xv
YmFsT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CiB9
CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID49IFZhcmlhYmxlT2JqZWN0
VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKIH0KIAogCiBp
bmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdGF0aWNTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
SlNUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBl
IHR5cGUgPSB0aGlzLT50eXBlKCk7CiAgICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNjb3BlT2JqZWN0
VHlwZSB8fCB0eXBlID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiAKIGlubGluZSBib29s
IEpTT2JqZWN0Ojppc05hbWVTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOworICAgIHJl
dHVybiB0eXBlKCkgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNP
YmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKKyAgICByZXR1
cm4gdHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkudHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOworICAgIHJldHVybiB0eXBl
KCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRT
dHJ1Y3R1cmVBbmRCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkpCkBAIC0xMTkxLDEwICsxMjAwLDExIEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6aW5saW5lR2V0T3cKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
IEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmdldChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwogICAgIGlmIChMSUtFTFkoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSkgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0RGlyZWN0KG9mZnNldCk7Ci0g
ICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIHZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAg
ZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBhdHRyaWJ1dGVz
LCB2YWx1ZSwgb2Zmc2V0KTsKQEAgLTEyNzMsMTUgKzEyODMsMTYgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgQVNTRVJUKHBy
b3BlcnR5TmFtZS5hc0luZGV4KCkgPT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKIAotICAg
IGlmIChzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0Nl
bGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVz
LCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMg
ZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3Ig
dGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAg
aWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+ZGVzcGVj
aWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAg
IHN0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1
dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzAy
LDMzICsxMzEzLDMzIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
IAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSog
bmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBn
cm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCks
IHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0g
ICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAg
ICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkp
OworICAgICAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkK
KyAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZS0+c3VnZ2VzdGVkTmV3T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbik7CisgICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7
Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAg
cHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24g
c2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9u
KQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAgc3RydWN0dXJlKCktPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVudENhcGFj
aXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgaWYgKFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIGlmIChTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChjdXJy
ZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAgICAg
ICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0
eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgaWYgKGN1cnJlbnRD
YXBhY2l0eSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAg
ICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFjaXR5
LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIHZhbGlkYXRl
T2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7Ci0gICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3RydWN0dXJl
LCBuZXdCdXR0ZXJmbHkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1ZhbGlkT2Zm
c2V0KG9mZnNldCkpOworICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0
cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZh
bHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0
aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAgIC8v
IHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCkBAIC0xMzM5LDcgKzEz
NTAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICB1
bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uOwotICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwg
Y3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3Vy
cmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkg
ewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMg
JiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNjAsNyArMTM3MSw3
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2UgKDIp
IERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAgICAgIHNldFN0cnVjdHVy
ZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRv
IHRoZSBwdXQsIHJldHVybi4KQEAgLTEzNzIsNyArMTM4Myw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYg
IWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCB0aGlzLT5z
dHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBv
ZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0KCkpOwogICAgIAogICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNl
dChvZmZzZXQpKTsKQEAgLTE0MzYsMTAgKzE0NDcsMTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBB
U1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
KTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAgICAgIG5ld0J1
dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRD
YWxsYWJsZU9iamVjdCh2YWx1ZSkpOwotICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwg
c3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxsR3Jvd091dE9mTGlu
ZVN0b3JhZ2UoKSkKKyAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uo
dm0sIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRO
ZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0U3RydWN0
dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcHV0RGly
ZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24g
MTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtNzcsNiArNzcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1l
QXJyYXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0CiBKU09iamVjdCogSlNTY29w
ZTo6b2JqZWN0QXRTY29wZShKU1Njb3BlKiBzY29wZSkKIHsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gc2NvcGU7Ci0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
ID09IFdpdGhTY29wZVR5cGUpCisgICAgaWYgKG9iamVjdC0+dHlwZSgpID09IFdpdGhTY29wZVR5
cGUpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaXRoU2NvcGUqPihvYmplY3QpLT5vYmplY3Qo
KTsKIAogICAgIHJldHVybiBvYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8pLCBpbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0
aCk7IH0KQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAog
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7CisKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgICAgICAgICAKICAgICAg
ICAgYm9vbCBpc1JvcGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CkBAIC00
OTcsNyArNDk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSBKU1N0cmluZzo6aW5mbygpOyB9
CisgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxs
KCkgJiYgdi5hc0NlbGwoKS0+dHlwZSgpID09IFN0cmluZ1R5cGU7IH0KIAogICAgIC8vIC0tLSBK
U1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNTgzMzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1R5cGUgewor
ZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBVbnNwZWNpZmllZFR5cGUsCiAgICAgVW5kZWZp
bmVkVHlwZSwKICAgICBCb29sZWFuVHlwZSwKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBKU1R5cGUg
ewogICAgIEVycm9ySW5zdGFuY2VUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVU
eXBlLAorICAgIEFyZ3VtZW50c1R5cGUsCiAKICAgICBOYW1lU2NvcGVPYmplY3RUeXBlLAogICAg
IC8vIFZhcmlhYmxlT2JqZWN0VHlwZSBtdXN0IGJlIGxlc3MgdGhhbiBNT1NUIG9mIHRoZSB0eXBl
cyBvZiBpdHMgc3ViY2xhc3NlcyBhbmQgb25seSBpdHMgc3ViY2xhc3Nlcy4KQEAgLTY0LDYgKzY1
LDggQEAgZW51bSBKU1R5cGUgewogICAgIEFjdGl2YXRpb25PYmplY3RUeXBlLAogfTsKIAorQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEpTVHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCBzaXplb2ZfanN0
eXBlX2lzX29uZV9ieXRlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTU4
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMTA7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUhhc1JhcmVEYXRhID0gMSA8PCAx
MTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1vcnRhbCA9IDEgPDwg
MTI7CiAKICAgICBjbGFzcyBUeXBlSW5mbyB7CiAgICAgcHVibGljOgpAQCAtNjYsNyArNjcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIEpTVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5cGUpOyB9Ci0gICAgICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPj0gT2JqZWN0VHlwZTsgfQorICAgICAg
ICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNPYmplY3QodHlwZSgpKTsgfQorICAg
ICAgICBzdGF0aWMgYm9vbCBpc09iamVjdChKU1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA+PSBP
YmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNGaW5hbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc051bWJlck9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJPYmplY3RUeXBlOyB9CiAgICAgICAg
IGJvb2wgaXNOYW1lKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IE5hbWVJbnN0YW5jZVR5cGU7
IH0KQEAgLTg0LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmcpOyB9CiAgICAgICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVy
dHlTbG90KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9w
ZXJ0eVNsb3QpOyB9CiAgICAgICAgIGJvb2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBi
b29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0
cnVjdHVyZUlzSW1tb3J0YWwpOyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09m
ZnNldCgpCiAgICAgICAgIHsKQEAgLTk1LDYgKzk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVJbmZvLCBtX3R5cGUpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdHlwZWRlZiB1aW50OF90IElubGluZVR5cGVGbGFnczsKKyAgICAgICAg
SW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyKCk7CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPGludDMyX3Q+IEluZGV4VHJhaXRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw3ICs4OSw3IEBAIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUKICAgICBpZiAoIXYuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCi0g
ICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCk7CisgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7CiAgICAgaWYgKHR5cGUg
PT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9i
amVjdFR5cGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtMjAyLDYgKzIwMiw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKICNlbmRpZgogCitwcm90ZWN0ZWQ6Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKIHByaXZhdGU6CiAgICAgUHJvcGVydHlU
YWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgUHJvcGVydHlUYWJsZShW
TSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIDApLCBpbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwpAQCAtODUsNiArODUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJl
Z0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJpbmcpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzAs
NyArNzAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
IAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHVibGljOgogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMyArMTU1LDE0
IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAKIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8s
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAg
IDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVj
dHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAg
LCBtX2luZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpCisgICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZv
KQogICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIGdsb2JhbE9iamVjdCwgV3JpdGVCYXJy
aWVyPEpTR2xvYmFsT2JqZWN0Pjo6TWF5QmVOdWxsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRo
aXMsIHByb3RvdHlwZSkKICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJh
bnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9pbmRl
eGluZ1R5cGUoaW5kZXhpbmdUeXBlKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBh
Y2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwg
bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0xODMsMTIgKzE4NCwxMyBAQCBjb25z
dCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTCiAKIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSkKICAgICA6IEpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbCkKKyAgICAsIG1fc3Ry
dWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAg
ICAsIG1faW5kZXhpbmdUeXBlKDApCisgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwpCiAgICAgLCBtX3Byb3Rv
dHlwZSh2bSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAgICAg
LCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBt
X29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAgLCBtX2luZGV4aW5nVHlwZSgwKQogICAgICwgbV9p
bmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtp
bmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTIwNSwxMiArMjA3
LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKIAogU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgIDogSlNDZWxsKHZtLCB2
bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlw
ZShwcmV2aW91cy0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKQorICAgICwgbV90eXBl
SW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50eXBlKCksIHByZXZpb3VzLT50eXBlSW5mbygpLmZs
YWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURhdGEpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhp
cywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlv
dXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFs
aXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlw
ZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCkudHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5m
bGFncygpICYgflN0cnVjdHVyZUhhc1JhcmVEYXRhKQotICAgICwgbV9pbmRleGluZ1R5cGUocHJl
dmlvdXMtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkKICAgICAsIG1faW5saW5lQ2Fw
YWNpdHkocHJldmlvdXMtPm1faW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCkBAIC0yMjMsNiArMjI2LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZt
LCBjb25zdCBTdHJ1YwogICAgICwgbV9kaWRUcmFuc2l0aW9uKHRydWUpCiAgICAgLCBtX3N0YXRp
Y0Z1bmN0aW9uUmVpZmllZChwcmV2aW91cy0+bV9zdGF0aWNGdW5jdGlvblJlaWZpZWQpCiB7Cisg
ICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwog
ICAgIGlmIChwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpICYmIHBy
ZXZpb3VzLT5yYXJlRGF0YSgpLT5uZWVkc0Nsb25pbmcoKSkKICAgICAgICAgY2xvbmVSYXJlRGF0
YUZyb20odm0sIHByZXZpb3VzKTsKICAgICBlbHNlIGlmIChwcmV2aW91cy0+cHJldmlvdXNJRCgp
KQpAQCAtMjMzLDYgKzIzNywxMyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0
IFN0cnVjCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgdGhpcywgcHJldmlvdXMtPm1f
Z2xvYmFsT2JqZWN0LmdldCgpKTsKIH0KIAorU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3sKKyAg
ICBpZiAodHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZGVhbGxvY2F0ZUlEKHRo
aXMsIG1fc3RydWN0dXJlSUQpOworfQorCiB2b2lkIFN0cnVjdHVyZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCiB7CiAgICAgc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4oY2VsbCktPlN0cnVjdHVyZTo6
flN0cnVjdHVyZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4
aW5nVHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOwogCisgICAg
flN0cnVjdHVyZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgewpAQCAtOTUsNiArOTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwdWJsaWM6
CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUlEOyB9CisK
ICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVydHlTbG90OjpDb250ZXh0ID0gUHV0UHJvcGVy
dHlTbG90OjpVbmtub3duQ29udGV4dCk7CkBAIC0zMDEsNiArMzA1LDE0IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0lu
Zm87IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgLy8gV2UgbG9hZCBtX3N0cnVjdHVyZUlELCBtX2luZGV4aW5nVHlwZSwgYW5kIG1f
dHlwZUluZm8gaW4gYSBzaW5nbGUKKyAgICAgICAgLy8gNjQtYml0IGluc3RydWN0aW9uLCBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHByb3Blcmx5IGFsaWduZWQuCisgICAgICAgIEFT
U0VSVChPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3N0cnVjdHVyZUlEKSA9PSA4KTsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fc3RydWN0dXJlSUQpOwor
ICAgIH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3Byb3RvdHlwZSk7CkBA
IC00NjksNyArNDgxLDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRy
YW5zaXRpb25MZW5ndGhGb3JOb25FdmFsUHV0QnlJZCA9IDUxMjsKIAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwotICAgICAgICAK
KyAgICAKKyAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIHByb3Blcmx5IGFsaWduZWQgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgJ1N0cnVjdHVyZScKKyAgICAvLyBwYXJ0IG9mIHRoZSBvYmplY3QuCisg
ICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGlu
Z1R5cGU7CisgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKKwogICAgIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1f
cHJvdG90eXBlOwogICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluOwpAQCAtNDkzLDggKzUxMSw2IEBAIHByaXZhdGU6CiAgICAgLy8g
bV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCiAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAKLSAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwotICAgIEluZGV4
aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CiAg
ICAgCiAgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
LSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsgfQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNjQsNiArNjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkKICAgICAgICAgewog
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisKKyNpbmNsdWRlIDx3
dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRhYmxlKCkKKyAgICA6IG1fZmlyc3RG
cmVlT2Zmc2V0KDApCisgICAgLCBtX3RhYmxlKG5ldyBTdHJ1Y3R1cmVPck9mZnNldFtzX2luaXRp
YWxTaXplXSkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9jYXBhY2l0eShzX2luaXRpYWxTaXpl
KQoreworICAgIC8vIFdlIHByZS1hbGxvY2F0ZSB0aGUgZmlyc3Qgb2Zmc2V0IHNvIHRoYXQgdGhl
IG51bGwgU3RydWN0dXJlCisgICAgLy8gY2FuIHN0aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBT
dHJ1Y3R1cmVJRCAnMCcuCisgICAgYWxsb2NhdGVJRCgwKTsKK30KKworU3RydWN0dXJlSURUYWJs
ZTo6flN0cnVjdHVyZUlEVGFibGUoKQoreworICAgIGRlbGV0ZSBbXSBtX3RhYmxlOworfQorCit2
b2lkIFN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpCit7CisgICAg
Ly8gQ3JlYXRlIHRoZSBuZXcgdGFibGUuCisgICAgU3RydWN0dXJlT3JPZmZzZXQqIG5ld1RhYmxl
ID0gbmV3IFN0cnVjdHVyZU9yT2Zmc2V0W25ld0NhcGFjaXR5XTsKKworICAgIC8vIENvcHkgdGhl
IGNvbnRlbnRzIG9mIHRoZSBvbGQgdGFibGUgdG8gdGhlIG5ldyB0YWJsZS4KKyAgICBtZW1jcHko
bmV3VGFibGUsIG1fdGFibGUsIG1fY2FwYWNpdHkgKiBzaXplb2YoU3RydWN0dXJlT3JPZmZzZXQp
KTsKKworICAgIC8vIFN0b3JlIGZlbmNlIHRvIG1ha2Ugc3VyZSB3ZSd2ZSBjb3BpZWQgZXZlcnl0
aGluZyBiZWZvcmUgZG9pbmcgdGhlIHN3YXAuCisgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsK
KworICAgIC8vIFN3YXAgdGhlIG9sZCBhbmQgbmV3IHRhYmxlcy4KKyAgICBTdHJ1Y3R1cmVPck9m
ZnNldCogb2xkVGFibGUgPSBtX3RhYmxlOworICAgIG1fdGFibGUgPSBuZXdUYWJsZTsKKworICAg
IC8vIFB1dCB0aGUgb2xkIHRhYmxlIChub3cgbGFiZWxlZCBhcyBuZXcpIGludG8gdGhlIGxpc3Qg
b2Ygb2xkIHRhYmxlcy4KKyAgICBtX29sZFRhYmxlcy5hcHBlbmQob2xkVGFibGUpOworCisgICAg
Ly8gVXBkYXRlIHRoZSBjYXBhY2l0eS4KKyAgICBtX2NhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7Cit9
CisKK3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRUYWJsZXMoKQoreworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX29sZFRhYmxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVs
ZXRlIFtdIG1fb2xkVGFibGVzW2ldOworICAgIG1fb2xkVGFibGVzLmNsZWFyKCk7Cit9CisKK1N0
cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAoIW1fZmlyc3RGcmVlT2Zmc2V0KSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FwYWNpdHkgPD0gVUlOVF9NQVgpOworICAgICAg
ICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCisgICAgICAgICAgICByZXNpemUobV9jYXBhY2l0
eSAqIDIpOworICAgICAgICBBU1NFUlQobV9zaXplIDwgbV9jYXBhY2l0eSk7CisKKyAgICAgICAg
U3RydWN0dXJlT3JPZmZzZXQgbmV3RW50cnk7CisgICAgICAgIG5ld0VudHJ5LnN0cnVjdHVyZSA9
IHN0cnVjdHVyZTsKKworICAgICAgICBTdHJ1Y3R1cmVJRCByZXN1bHQgPSBtX3NpemU7CisgICAg
ICAgIG1fdGFibGVbcmVzdWx0XSA9IG5ld0VudHJ5OworICAgICAgICBtX3NpemUrKzsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmVJRCByZXN1bHQgPSBtX2Zp
cnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IG1fdGFibGVbbV9maXJzdEZy
ZWVPZmZzZXRdLm9mZnNldDsKKyAgICBtX3RhYmxlW3Jlc3VsdF0uc3RydWN0dXJlID0gc3RydWN0
dXJlOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBzdHJ1Y3R1cmU7Cisj
ZW5kaWYKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgUkVMRUFTRV9BU1NFUlQobV90YWJsZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJlID09
IHN0cnVjdHVyZSk7CisgICAgbV90YWJsZVtzdHJ1Y3R1cmVJRF0ub2Zmc2V0ID0gbV9maXJzdEZy
ZWVPZmZzZXQ7CisgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBzdHJ1Y3R1cmVJRDsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZUlE
KTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RydWN0dXJl
SURUYWJsZV9oCisjZGVmaW5lIFN0cnVjdHVyZUlEVGFibGVfaAorCisjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBTdHJ1Y3R1cmU7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQordHlwZWRlZiB1aW50MzJfdCBT
dHJ1Y3R1cmVJRDsKKyNlbHNlCit0eXBlZGVmIFN0cnVjdHVyZSogU3RydWN0dXJlSUQ7CisjZW5k
aWYKKworY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRFRhYmxlKCk7CisgICAgflN0
cnVjdHVyZUlEVGFibGUoKTsKKworICAgIHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxlKTsgfQorCisgICAgU3RydWN0dXJlKiBnZXQoU3RydWN0
dXJlSUQpOworICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsK
KyAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOworCisgICAgdm9pZCBmbHVz
aE9sZFRhYmxlcygpOworCitwcml2YXRlOgorICAgIHZvaWQgcmVzaXplKHNpemVfdCBuZXdDYXBh
Y2l0eSk7CisgICAgCisgICAgdW5pb24gU3RydWN0dXJlT3JPZmZzZXQgeworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJlSUQgb2Zmc2V0OworICAgIH07CisK
KyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfaW5pdGlhbFNpemUgPSAyNTY7CisKKyAgICBWZWN0
b3I8U3RydWN0dXJlT3JPZmZzZXQqPiBtX29sZFRhYmxlczsKKyAgICB1aW50MzJfdCBtX2ZpcnN0
RnJlZU9mZnNldDsKKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogbV90YWJsZTsKKyAgICBzaXplX3Qg
bV9zaXplOworICAgIHNpemVfdCBtX2NhcGFjaXR5OworfTsKKworaW5saW5lIFN0cnVjdHVyZSog
U3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsK
KyNlbHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZUlEOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gU3RydWN0dXJlSURUYWJsZV9oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1ODMzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4Nyw2ICs0ODcsOSBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2YXRl
OgogICAgIFNoYXJlZFN5bWJvbFRhYmxlKFZNJiB2bSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZt
LnNoYXJlZFN5bWJvbFRhYmxlU3RydWN0dXJlLmdldCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIFdlYWtNYXBEYXRhKFZNJik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215594</attachid>
            <date>2013-10-30 19:06:35 -0700</date>
            <delta_ts>2013-10-31 13:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131030190631.patch</filename>
            <type>text/plain</type>
            <size>327772</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0OCBA
QAorMjAxMy0xMC0yMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBm
cmVlIHVwIDMyIGJpdHMgb2Ygc3BhY2UgaW4gSlNDZWxsIGhlYWRlcnMsIHdoaWNoIHdlIGNhbiB1
c2UgZm9yIAorICAgICAgICBvdGhlciBpbmZvcm1hdGlvbiBsaWtlIHRoZSBJbmRleGluZ1R5cGUs
IEpTVHlwZSwgSlNUeXBlSW5mbyB0eXBlIGZsYWdzLCBhbmQgCisgICAgICAgIGdhcmJhZ2UgY29s
bGVjdGlvbiBtZXRhZGF0YS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjpzdG9yZTgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bW92ZVdpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Om1vdmJfcm0pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yOjpBcnJheWlmeVNs
b3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFN0cnVjdHVyZVB0cik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
bkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVj
dE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0
VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxv
Y2F0b3IuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAg
ICAgICAoSlNDOjpIZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtl
ZFNwYWNlLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAg
ICAgICAqIGhlYXAvUmVnaW9uLmg6CisgICAgICAgICogaGVhcC9TdXBlclJlZ2lvbi5oOgorICAg
ICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6YmFzZSk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BDYWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAgICAg
ICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRC
eUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKToKKyAgICAgICAgKiBqaXQvSklU
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6SklUOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRBbGxvY2F0
ZUpTT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9v
YmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9w
bmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0RmxvYXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
IChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAgICAgICogaml0L1JlcGF0
Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nlc3MpOgorICAgICAgICAo
SlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVByb3RvQ2hhaW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToK
KyAgICAgICAgKEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQdXRUcmFuc2l0aW9uU3R1Yik6Cisg
ICAgICAgIChKU0M6OnRyeVJlcGF0Y2hJbik6CisgICAgICAgIChKU0M6OmxpbmtDbG9zdXJlQ2Fs
bCk6CisgICAgICAgIChKU0M6OnJlc2V0R2V0QnlJRCk6CisgICAgICAgIChKU0M6OnJlc2V0UHV0
QnlJRCk6CisgICAgICAgICogaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaDoKKyAgICAgICAgKEpT
Qzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEpTU3RyaW5nQXJndW1lbnQpOgorICAgICAgICAo
SlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyk6
CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OnZpcnR1
YWxGb3JUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmFycmF5SXRlcmF0b3JOZXh0VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlw
ZU9mZnNldCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc09iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpKU0NlbGw6Omlz
R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5o
OgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1vcnRhbCk6CisgICAgICAgIChKU0M6OlR5
cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICog
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OlN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpn
ZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OmJhc2UpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFi
bGUuaDoKKyAgICAgICAgKiBydW50aW1lL1dlYWtNYXBEYXRhLmg6CisKKzw8PDw8PDwgLm1pbmUK
KzIwMTMtMTAtMjUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIEpTQ2VsbHMgaGF2ZSAzMi1iaXQgU3RydWN0dXJlIHBvaW50ZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxOTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODY6OmJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZDb21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpz
dG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
WDg2XzY0OjpzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aE9uQWRkcmVzcyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBh
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlND
OjpSZXBhdGNoQnVmZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3RydWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZH
T1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21w
aWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0TG9hZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21w
YXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90
aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
T2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGhlYXAvQmxvY2tBbGxvY2F0b3IuaDoKKyAg
ICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OnN1cGVyUmVnaW9uKToKKyAgICAgICAgKiBoZWFw
L0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzdHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2spOgorICAgICAgICAqIGhlYXAv
U3VwZXJSZWdpb24uaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAoSlNDOjpOYXRpdmVDYWxsRnJhbWVUcmFjZXI6Ok5hdGl2ZUNhbGxGcmFtZVRyYWNlcik6
CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmQ2VsbE5vdE9iamVjdCk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BD
YWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKToKKyAg
ICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQnlJ
ZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyk6CisgICAgICAgICogaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZDZWxsTm90
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0QWxsb2NhdGVKU09iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgor
ICAgICAgICAoSlNDOjpKSVQ6OmJyYW5jaFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmJyYW5j
aFN0cnVjdHVyZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2luc3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZp
bmVkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF90b190aGlzKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfdG9fcHJpbWl0aXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2plcV9u
dWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2puZXFfbnVsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfZXEpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X25lcSk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wU3RyaWN0RXEpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25leHRfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5n
R2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9i
eV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChKU0M6OkpJVDo6
YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SW50
VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0RmxvYXRUeXBlZEFy
cmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlW
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlf
dmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJl
Q2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNDOjpK
U0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0ludGVy
ZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAgKEpTQzo6YWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExp
c3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAg
ICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQp
OgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0
cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFy
Z3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51
c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3Vt
ZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNl
Ojppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6dW5saW5r
Q2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpT
QXJyYXk6OnNldExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnBvcCk6CisgICAgICAg
IChKU0M6OkpTQXJyYXk6OnB1c2gpOgorICAgICAgICAoSlNDOjpKU0FycmF5OjpzaGlmdENvdW50
V2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QW55SW5kZXhpbmdUeXBlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0
aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
bnlJbmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3Rv
cik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3Rvcik6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNv
cnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpzb3J0VmVjdG9yKToKKyAgICAgICAgKEpTQzo6
SlNBcnJheTo6ZmlsbEFyZ0xpc3QpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb3B5VG9Bcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyk6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xlYXJTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6SlNDZWxsKToKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6dHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlKToKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpzdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjppc1N0cmluZyk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OmlzUHJveHkpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmlzQVBJVmFsdWVXcmFwcGVyKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpKU0NlbGw6Om1ldGhvZFRhYmxlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjpmYXN0R2V0T3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEZXN0cnVjdGli
bGVPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpjbGFzc0luZm8pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxsYWJsZU9iamVjdFNs
b3cpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRl
SW5pdGlhbEluZGV4ZWRTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFy
cmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9J
bnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VX
aXRob3V0Q29weWluZ0VsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRV
bmRlY2lkZWRUb0FycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0RvdWJsZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0
b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0Nv
bnRpZ3VvdXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJh
eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW5zdXJlQ29udGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVB
cnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OnNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXREaXJlY3ROb25JbmRleEFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aG91dEF0dHJp
YnV0ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxl
bmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGly
ZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0
TmV3VmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvdW50RWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyk6CisgICAgICAgICogcnVudGltZS9K
U09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFZl
Y3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5HZXRJbmRleFF1aWNrbHkp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnRyeUdldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0
OjpjYW5TZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y2FuU2V0SW5k
ZXhRdWlja2x5Rm9yUHV0RGlyZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNldEluZGV4
UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppbml0aWFsaXplSW5kZXgpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6aGFzU3BhcnNlTWFwKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmluU3BhcnNlSW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERp
cmVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
ZW5zdXJlRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUNvbnRpZ3VvdXMp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmFnZUVuc3VyZUNvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjphcnJheVN0b3Jh
Z2VPck51bGwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlTGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJlbnRJbmRleGluZ0RhdGEpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Z2V0SG9seUluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpj
dXJyZW50UmVsZXZhbnRMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNHbG9iYWxP
YmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojppc1N0YXRpY1Njb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Omlz
QWN0aXZhdGlvbk9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Vycm9ySW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTU2NvcGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpvYmplY3RBdFNjb3BlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjppc0pTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDOjpUeXBl
SW5mbzo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6c3RydWN0dXJlSXNJbW1v
cnRhbCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAg
ICAqIHJ1bnRpbWUvTWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OmpzSXNPYmplY3RUeXBlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5VGFibGU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6aWQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxv
Y2F0ZUlEKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUpOgorICAgICAgICAoSlNDOjpT
dHJ1Y3R1cmVJRFRhYmxlOjpiYXNlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6
Z2V0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisgICAgICAgICogcnVudGlt
ZS9XZWFrTWFwRGF0YS5oOgorCis9PT09PT09CiAyMDEzLTEwLTMwICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggQyBMb29wIExMSU5UIGJ1
aWxkLgpAQCAtNjQ5LDYgKzExOTQsNyBAQAogCiAgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogQWRkIG1pc3NpbmcgZmlsZXMgdG8gY29tcGlsYXRpb24uCiAKKz4+Pj4+Pj4gLnIxNTgzMjAK
IDIwMTMtMTAtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWZhY3RvciBwYXJzZXIgcm9sbGJhY2sgbG9naWMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDA1LDYgKzQwNSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNw
cAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwCisgICAgcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0
dXJlUmFyZURhdGEuY3BwCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKICAgICBydW50aW1l
L1Rlc3RSdW5uZXJVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw2ICsxMDgyLDggQEAg
amF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU4MzM0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjQxLDYgKzY0MSw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlLmNwcCIgLz4NCiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmNwcCIgLz4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuY3BwIiAv
Pg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGEu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0
aWxzLmNwcCIgLz4NCkBAIC0xMjM4LDYgKzEyMzksNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5oIiAvPg0KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIC8+
DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUuaCIgLz4NCkBAIC0xMzA1LDQgKzEzMDcsNCBAQAogICA8SW1wb3J0R3JvdXAgTGFiZWw9
IkV4dGVuc2lvblRhcmdldHMiPg0KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0
aClcQnVpbGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+DQogICA8L0ltcG9ydEdyb3Vw
Pg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+DQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkp
CkBAIC03MzgsNiArNzM4LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RydWN0dXJlQ2hhaW4uY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAg
ICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCI+DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAg
IDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9s
VGFibGUuY3BwIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbENv
bXBpbGU+DQpAQCAtMjIzNCw2ICsyMjM3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RydWN0dXJlSURUYWJsZS5oIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4N
CisgICAgPC9DbEluY2x1ZGU+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxT
dHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+DQogICAgIDwvQ2xJbmNsdWRlPg0KQEAgLTMwNDEsNCArMzA0Nyw0IEBACiAgICAgICA8Rmls
dGVyPmppdDwvRmlsdGVyPg0KICAgICA8L01BU00+DQogICA8L0l0ZW1Hcm91cD4NCi08L1Byb2pl
Y3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0Pg0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCTJBNDhEMTkxMTc3MjM2NUIwMEM2NUE1RiAv
KiBBUElDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjExQjU3NDE3NkEyMjREMDAwRTJBMjMgLyogQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oICovOyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2RjQ2
MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJERjcg
LyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJCTJB
RDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q3MTgxNUMxMEIwMDYx
RTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFEMzUzREExODE1QzEwQjAw
NjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJ
RFRhYmxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4
RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OwogCQkzNzFEODQyRDE3Qzk4
QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGli
ICovOyB9OwogCQk0MTM1OUNGMzBGREQ4OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFE
NDMxMEMwMEVENzlCNiAvKiBEYXRlQ29udmVyc2lvbi5oICovOyB9OwpAQCAtMTk0MSw2ICsxOTQz
LDggQEAKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3Bl
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3
IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVm
ZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIw
MDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFw
SXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0
ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdD
OThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6
LmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJNDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzYzMiw2ICszNjM2LDggQEAKIAkJCQlB
N0JEQUVDMzE3RjRFQTE0MDBGNjE0MEMgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oICovLAog
CQkJCUE3QkRBRUM0MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3BwICovLAog
CQkJCUE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAqLywKKwkJ
CQkyQUQzNTNENzE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJ
CQkJMkFEMzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00
MTEyLDYgKzQxMTgsNyBAQAogCQkJCTY1QzAyODVEMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RP
cGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURC
NUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RB
MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBN0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTUxNUVEOEU0NjAwRjE2N0IyIC8qIEFycmF5Q29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtNTQ0OSw2ICs1NDU2LDcgQEAKIAkJCQkxNDdG
MzlENDEwN0VDMzc2MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ4MkI3RTQwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3Rjk5MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTJBRDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1By
b2ZpbGVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3
Q0I2M0EgLyogSlNQcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5
Q0UwMDc5NEQ0MCAvKiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDE3LDcgKzQxNyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8vCi0g
ICAgLy8gQSBEYXRhTGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGluIHRo
ZSBjb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwzMiBp
cyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIDMy
LWJpdCBjb25zdGFudCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkLgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTksNiArMzU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNo
YWJsZUp1bXAoYnJhbmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlh
bFJpZ2h0VmFsdWUpKTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRh
TGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gz
MldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7Cisg
ICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBQYXRjaGFibGVKdW1wKGp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lvbiAxNTgz
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMTQgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQog
CisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxS
aWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0
Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGluaXRpYWxSaWdodFZh
bHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAgICBkYXRhTGFiZWwg
PSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJsZXIuakND
KHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0
cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAtMjU5LDYgKzI2Nyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9v
bCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRy
V2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAg
ewpAQCAtMjgxLDYgKzI5MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJl
bEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2Nh
dGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2Rl
TG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGludCBvcGNv
ZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5
dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNvZGVCeXRlcyArIG1v
ZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBBU1NFUlQo
dG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICByZXR1cm4g
bGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBpbml0aWFs
VmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19jbXBsX2ly
X2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJl
dF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMjkyLDYgKzMxMiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9y
Y2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJl
c3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9y
Y2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwg
MCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICAvLyBG
b3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNyb0Fzc2VtYmxlclg4
Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZv
aWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1ODMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA5LDYgKzYwOSwxOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBYODZSZWdpc3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0aWMgQUxXQVlTX0lO
TElORSBSZWdpc3RlcklEIGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXgpCisgICAgICAg
ICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFz
ZSAhPSBYODZSZWdpc3RlcnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6
OmVieDsKKworICAgICAgICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWN4
KTsKKyAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0KKwogICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BV
KFg4NikKQEAgLTYyOCw2ICs2NDAsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8gT24gMzIt
Yml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVyczsKKyAg
ICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEKKyAgICAg
ICAgaWYgKHNyYyA+PSA0KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5IHJlZ2lz
dGVyLgorICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0ZXIoYWRk
cmVzcyk7CisKKyAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdpc3RlciB0
byBwZXJmb3JtIHRoZSBzdG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3Mu
YmFzZSk7CisgICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTE2KFJl
Z2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4NikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5
LDYgKzExOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rl
cik7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3Jh
dGNoUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRk
cmVzcykKICAgICB7CkBAIC01OTIsNiArNTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFiZWxQdHIgbW92ZVdpdGhQ
YXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX2k2NHIo
aW5pdGlhbFZhbHVlLm1fdmFsdWUsIGRlc3QpOworICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRy
KHRoaXMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwg
VHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAg
ewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBz
Y3JhdGNoUmVnaXN0ZXIpOwpAQCAtNjA0LDYgKzYxNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAg
IEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRW
YWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmlnaHRWYWx1ZS5t
X3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0
YUxhYmVsMzIodGhpcyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRo
UGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0
aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC02NDQsNiArNjY1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1
cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMg
Ym9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNo
UHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAg
ICAgewpAQCAtNjU1LDE2ICs2NzcsMzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwu
bGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVz
ID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3Qg
aW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBy
ZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0
b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBs
YWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGlj
IENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFk
ZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisK
KyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0
aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOwor
ICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0
LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJs
ZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRk
cmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNo
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVu
dFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgQWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAgICB7Cisg
ICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVj
dGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJl
cGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rp
b25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAg
WDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVl
KSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU2LDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwp
OwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwp
CisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAgIHZvaWQg
cmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVM
b2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKQEAgLTE3NSw2ICsxODAsMTEgQEAgcHVi
bGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUp
OwogICAgIH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJX
aXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0KKwogcHJp
dmF0ZToKICNpZiBFTkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICB2b2lkKiBtX3N0
YXJ0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTEgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJH
Yiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBt
b3ZiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAg
eworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwg
b2Zmc2V0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQgc3JjLCBp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3NiwyNSBA
QCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQgQXJyYXlQ
cm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tl
ciYsIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVy
ZSkKKyAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9s
YXN0U2VlblN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNv
ZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCk7CisgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVy
ZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1
blBydW5pbmcKICAgICAgICAgJiYgaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJyYXlN
b2RlcykpIHsKLSAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3Ry
dWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2Rl
cyA9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgICAgICBt
X2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAgICBtX21h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJl
LT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8oKTsKKyAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
aW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
bygpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmUobV9sYXN0U2VlblN0cnVjdHVyZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmln
aW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAgaWYgKCFn
bG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkK
KyAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUo
bGFzdFNlZW5TdHJ1Y3R1cmUpKQogICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
cyA9IGZhbHNlOwotICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCA9IDA7CiB9CiAKIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0
aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBB
cnJheVByb2ZpbGUgewogcHVibGljOgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAgIDogbV9i
eXRlY29kZU9mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAg
ICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9v
dXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyhmYWxzZSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJyYXlQcm9m
aWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAg
ICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUo
ZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHB1Ymxp
YzoKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGVPZmZzZXQ7IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZSgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAgU3RydWN0
dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2Vl
blN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsg
cmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0
b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29sKiBhZGRy
ZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAgICAg
dm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAg
ICAgbV9sYXN0U2VlblN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0U2VlblN0
cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2Nr
Kik7CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBw
b2x5bW9ycGhpY1N0cnVjdHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNv
ZGVPZmZzZXQ7Ci0gICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgIFN0cnVj
dHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGU7
IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3Bl
Y2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMg
aXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNp
Y2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFn
ZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGlt
cGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJ
bmRleGVkQWNjZXNzZXMgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRleCkuZGF0
YSgpOwogICAgIH0KIAorICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0K
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmpl
Y3QuZ2V0KCk7IH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9y
aWdpbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3
ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2Vs
bDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0Nl
bGw6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0NSw3ICs1
NDUsNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTgzMzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDIzICsxMjIsMTQgQEAgcHJvdGVjdGVkOgogICAg
ICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NF
UlQobV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwo
Ci0gICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAg
ICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBz
aWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMu
IE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3Jl
IHRhbGtpbmcKLSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+
bV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyht
X2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Ci0g
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0
aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3
aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRp
b24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQu
CiAgICAgICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90
IHVzZXItdmlzaWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVK
dW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRB
cnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1
ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0MywyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtS
ZWZlcmVuY2Uod2Vha1B0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVy
ZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFu
Y2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAg
ICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vh
a1N0cnVjdHVyZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIEp1bXAgYnJhbmNoU3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBs
ZWZ0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUt
PmlkKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRy
eSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJv
bCBmbG93IGFuYWx5c2lzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzUsOCArMTM1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBp
bGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNz
T2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1
Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDkgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LmdwcigpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUz
MihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2
YWx1ZSwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3Jh
dGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBy
ZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJ
bW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0zNDAsNyAr
MzQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAg
ICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQ
Uik7CiAgICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8g
dGFrZW4gOiBub3RUYWtlbik7CiAgICAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0
R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CkBAIC0xMTYxLDE4ICsxMTYxLDE4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BS
KSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0x
MTg0LDcgKzExODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxp
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKQEAgLTEyMzgsMTAgKzEyMzgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdFRvT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCkBAIC0xMjY2LDEwICsx
MjY2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTEzNDUsMTAgKzEz
NDUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
CiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hp
bGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIApAQCAtMTM3MiwxMCArMTM3MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdH
UFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKQEAgLTE2
MjAsMTAgKzE2MjAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJC
cgogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNl
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0zMTMwLDcgKzMxMzAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMVBheWxvYWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJp
bWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3Vs
dFRhZ0dQUik7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFB0cigKICAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3Ax
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdEdQUik7CiAg
ICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTM1MzAsNyArMzUzMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGhpc1ZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBh
eWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1w
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTM4MzIsMTIgKzM4MzIs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwg
MCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAogICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1
cmVTZXQoKVswXSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c3RydWN0dXJlLmdwcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICAKQEAgLTM4NjgsNyArMzg2OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUo
KSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7
CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNPSy5saW5rKCZtX2ppdCk7
CiAjZWxzZQpAQCAtMzg5Nyw3ICszODk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+c3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdlbmVyaWNB
Y2Nlc3MpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5l
d1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1
cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBi
cmVhazsKQEAgLTQwNzcsNyArNDA3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAg
ICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
Jy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdw
cigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hU
ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAg
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQxMDYsNyArNDEwNiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgo
SklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZS50
YWdHUFIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00MjA0LDcgKzQyMDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBE
RkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90
RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2OSwxMiArMjY5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9j
YWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxP
YmplY3QodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAg
ICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2Vs
bCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRD
b21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNo
VGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigx
KSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI4Myw2ICsyODYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBt
X2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwor
ICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIo
KSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1
YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9i
YWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CiAgICAgfQpAQCAtMzMzLDE2ICszMzcsMjAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkp
CiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxl
cjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hU
ZXN0OChKSVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBK
SVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAg
ICAgICAgIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2Nh
bEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJS
ZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iob3BlcmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAg
IGVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVj
dHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAg
ICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwg
cmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9
CkBAIC0xNTE2LDQxICsxNTI0LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BS
KSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAg
IEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTU3MywzNyAr
MTU3NiwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAg
R1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKIAog
ICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAg
IG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CiAKLSAgICBp
ZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgLy8g
VGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUg
cmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0gICAgICAgIC8vIERvIHRoaXMgYXQgdGhl
IHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVy
IGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOwot
ICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7Ci0gICAgICAgIHN0cnVjdHVy
ZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0KICAgICBpZiAobWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQ
Uik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BS
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAg
ICB9CiAgICAgCkBAIC0xNjE1LDIxICsxNjA3LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RUb09iamUKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNo
LCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BS
KSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTY3
NiwzNyArMTY2NywyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmpl
CiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3Ay
LmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVt
cG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJl
ZzsKICAgICAKLSAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQg
PQorICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9IAogICAg
ICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwogCi0g
ICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAg
IC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0
dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgotICAgICAgICAvLyBEbyB0aGlzIGF0
IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdp
c3RlciBhbGxvY2F0aW9uLgotICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlz
KTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUpOwotICAgICAgICBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQotCiAgICAgaWYgKG1hc3F1ZXJhZGVz
QXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQs
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
KTsKICAgICB9CiAKQEAgLTE3MTgsMjEgKzE2OTgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFu
Y2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BS
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hp
bGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAt
MTg0OSw2ICsxODI4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRH
UFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQg
PQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgp
OwpAQCAtMTg1NywzMiArMTgzOCwzNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3
aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgogICAg
ICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5j
aGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTY3JhdGNoKHRo
aXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7CisgICAgICAgIHNj
cmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwogICAgIH0KIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0g
ICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogCisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIs
IHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTIwMDEsMzEgKzE5ODQs
NDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogewogICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVVc2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0
cnVjdHVyZTsKICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IElu
dmFsaWRHUFJSZWc7CisKKyAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
SXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhp
cyk7CisgICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc3Ry
dWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgIH0KICAgICAKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5i
cmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpaZXJvLCAKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKIAorICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2YWx1ZUdQUiwgc3RydWN0dXJlR1BS
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpKSk7CiAKICAgICAgICAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKQEAgLTM0NDYsNyArMzQzOSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3Rlcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWxyZWFkeVBy
aW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVz
dWx0R1BSKTsKQEAgLTM0NzMsMTAgKzM0NjksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgc2xv
d1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM2OTUsNyArMzY5MSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBlbWl0QWxsb2NhdGVC
YXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7CiAgICAgICAgICAgICBtX2ppdC5z
dWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKLSAgICAgICAgICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1tUHRyKHN0cnVjdHVyZSksIHN0b3Jh
Z2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOworICAgICAgICAgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNM
ZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mVmVjdG9yTGVuZ3Ro
KCkpKTsKQEAgLTM4MzMsMTEgKzM4MjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZpbmFs
T2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHRlbXBHUFIp
OwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKQEAgLTQxMjIsMjQgKzQxMTYs
MjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBp
ZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdl
YWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgICAgICAKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7
ICsraSkKLSAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKEpJ
VENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKVtp
XSkpOworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1
cmUoSklUQ29tcGlsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigp
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAg
ICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwg
MCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAotICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgbm9kZS0+c3RydWN0
dXJlU2V0KCkubGFzdCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVj
dHVyZSgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTQxNjAsNyArNDE1MCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hQdHIo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2lu
dCgpOwogICAgICAgICBpc09LLmxpbmsoJm1faml0KTsKICNlbHNlCkBAIC00MTgyLDcgKzQxNzUs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1f
aml0LmppdENvZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24o
bV9qaXQuZ3JhcGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIAogICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwog
ICAgICAgICAKICAgICAgICAgCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQpA
QCAtNDE5MCw3ICs0MTg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+c3RydWN0dXJlVHJhbnNp
dGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdlbmVyaWNBY2Nlc3MpOwog
I2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3
U3RydWN0dXJlKSwgYmFzZUdQUiwgc2NyYXRjaEdQUik7IAogICAgICAgICAKICAgICAgICAgbm9S
ZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM1MSw4ICs0MzQ2LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC00
MzgwLDggKzQzNzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hU
ZXN0OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1f
aml0Lmp1bXAoKTsKIApAQCAtNDQyOCw4ICs0NDI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywgdmFs
dWUuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgbV9qaXQuY29tcGFyZTgo
SklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0
cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVh
bCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmlu
Z1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQ0NjgsOCArNDQ2
OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IFR5cGVPZjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BSUmVnIHZhbHVlR1BS
ID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgICAg
ICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7CkBAIC00NDgzLDggKzQ0ODIsMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
Q2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91bGRT
cGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
U3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKSksIHJlc3VsdEdQUik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw5ICs3NjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgY2FzZSBBcnJheTo6U2xvd1B1
dEFycmF5U3RvcmFnZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
dGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIDAsCiAgICAgICAgICAgICBqdW1wU2xvd0ZvclVu
d2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgpKSk7CkBAIC03NzEsOCAr
NzY5LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6Ci0gICAgICAgIGV4
cGVjdGVkQ2xhc3NJbmZvID0gQXJndW1lbnRzOjppbmZvKCk7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihBcmd1bWVudHNUeXBl
KSkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOworICAgICAgICByZXR1cm47
CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBjbGFzc0luZm9Gb3JU
eXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwogICAgICAgICBicmVhazsK
QEAgLTc4MSw4ICs3ODUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUq
IG5vCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRDbGFzc0luZm8pOwogICAgIAogICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wLmdwcigpKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgZW1pdExvYWRT
dHJ1Y3R1cmUoYmFzZVJlZywgdGVtcC5ncHIoKSwgdGVtcDIuZ3ByKCkpOwogICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLAogICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC04MTIsMTYgKzgxNiwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2RlCiAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIAogICAgIGlmIChub2RlLT5vcCgpID09
IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJy
YW5jaFdlYWtQdHIoCisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrU3Ry
dWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlKCkpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOCgKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAg
ICAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUo
dGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CkBAIC0xMzUwLDI0ICsxMzUxLDI1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgaWYg
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIAotICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgICAgIG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3By
KCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBl
bWl0TG9hZFN0cnVjdHVyZShvcDFHUFIsIHN0cnVjdHVyZUdQUiwgdGVtcC5ncHIoKSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2Jq
ZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LApAQCAtMTM4Miw3ICsxMzg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7
CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBlbWl0
TG9hZFN0cnVjdHVyZShvcDJHUFIsIHN0cnVjdHVyZUdQUiwgdGVtcC5ncHIoKSk7CiAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0
KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLApA
QCAtMjc5MiwxOCArMjc5NCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JGCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBw
cm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHBy
b3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcsIEdQUlJlZyBzY3JhdGNoMlJlZykKIHsKICAg
ICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QuCi0gICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b3R5cGVSZWcsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHNjcmF0Y2hSZWcpKTsKKyAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aElmQ2VsbE5vdE9iamVjdChwcm90b3R5cGVSZWcpKTsKICAgICAKICAgICAvLyBJbml0aWFsaXpl
IHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFsdWUgYmVpbmcgY2hlY2tlZC4KICAgICBtX2ppdC5tb3Zl
KHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsKICAgICAKICAgICAvLyBXYWxrIHVwIHRoZSBwcm90b3R5
cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29tcGFyaW5nIHRvIHByb3Rv
dHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgmbV9qaXQpOwotICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHNj
cmF0Y2hSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKQEAgLTI4NDIsOSArMjg0MywxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsK
ICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwpAQCAtMjg2MSw3
ICsyODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAg
ICAgICAKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgCi0gICAgICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNj
cmF0Y2hSZWcpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1
ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAgICAgICAgIAog
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKIApAQCAtMjg3NywxMiArMjg4MCwxNCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAg
ICAgCiAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3Rv
dHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0
Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAg
Ci0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlw
ZVJlZywgc2NyYXRjaFJlZyk7CisgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwg
dmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICBqc1ZhbHVlUmVzdWx0KHNjcmF0Y2hSZWcsIG5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4pOwpAQCAtNDU5OCwxMSArNDYwMywxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAot
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpOwogICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0
dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUobm9kZS0+Y2hpbGQxKCksIAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVDZWxsT2Zmc2V0KCkpLCByZXN1bHRHUFIp
OwogICAgICAgICAKQEAgLTQ2MjcsMTAgKzQ2MzQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRp
Y3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5l
ZWRDYWxsID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
bmVlZENhbGwgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAg
ICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5lZWRDYWxsLmxpbmsoJm1f
aml0KTsKQEAgLTQ4MzAsMTAgKzQ4MzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlT2JqZWN0KEVkZwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRn
ZSk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Z3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVG
aW5hbE9iamVjdChFZGdlIGVkZ2UpCkBAIC00ODQyLDE0ICs0ODQ5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgR1BSVGVtcG9y
YXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY0ZpbmFsT2JqZWN0LCBtX2ppdC5icmFu
Y2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIo
RmluYWxPYmplY3RUeXBlKSkpOwogfQogCkBAIC00ODY2LDEwICs0ODcwLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBl
Q2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00ODg5LDEwICs0ODkzLDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RDZWxsID0KICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9h
ZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAor
ICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAtNDkxMiwxMCArNDkx
NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsK
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
Y2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2Ug
ZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpCkBAIC00OTY4LDcgKzQ5NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7
Ci0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDk5NSwxNSArNDk5OSwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0CiAgICAgaWYgKCFuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09iamVjdCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgCi0gICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0g
bV9qaXQuYnJhbmNoUHRyKAotICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQ
UiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
KyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAKICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7
CiAgICAgCkBAIC01MjY4LDEwICs1MjY5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hDaGFyKE5vZGUKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJv
dWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBv
cDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CkBAIC01NTY4LDEwICs1NTY5LDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNlbmRpZgogICAgICAgICAK
ICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAg
ICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0
Y2hTdHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAx
NTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcyMiw3ICs3MjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2Up
OwogICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBm
YWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwg
R1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJl
c3VsdFJlZyk7CisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BS
UmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3Vs
dFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5v
ZGUqKTsKICAgICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3Mp
CkBAIC0yMDU2LDYgKzIwNTYsMTEzIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBzbG93UGF0aDsKICAgICB9CisKKyAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKEdQUlJlZyBi
YXNlR1BSLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihtX2ppdC52bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNl
KCksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc2NyYXRjaEdQUiwgZGVzdEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQp
LCBkZXN0R1BSKTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoR1BSKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyNlbmRpZgorICAgIH0KKworICAg
IHN0YXRpYyB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIGRlc3RHUFIsIEdQUlJlZyBzY3JhdGNoR1BSKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOworICAgICAg
ICBqaXQubG9hZFB0cihqaXQudm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBz
Y3JhdGNoR1BSKTsKKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRl
eChzY3JhdGNoR1BSLCBkZXN0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3RH
UFIpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBq
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBkZXN0R1BSKTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1p
dFN0b3JlU3RydWN0dXJlKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBHUFJSZWcgZGVzdEdQUikK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1
Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1
ZSk7CisgICAgICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQo
KSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnKQorICAg
IHsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKG1faml0LCBzdHJ1Y3R1
cmUsIGRlc3RHUFIpOworICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRj
aEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlNjQoc2NyYXRjaEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZWxzZQorICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGJldHRlci4KKyAg
ICAgICAgLy8gU3RvcmUgdGhlIHR5cGUgaW5mbyBmbGFncworICAgICAgICBtX2ppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3JlOChzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSkpOworCisgICAgICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUKKyAgICAgICAgbV9q
aXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LnN0b3Jl
OChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIGluZGV4aW5nIHR5
cGUKKyAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
R1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAg
ICAgIG1faml0LnN0b3JlOChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0
R1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUg
dGhlIFN0cnVjdHVyZUlECisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZShzdHJ1Y3R1cmVHUFIs
IGRlc3RHUFIsIHNjcmF0Y2hHUFIpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKENDYWxsSGVscGVycyYgaml0LCBUcnVzdGVk
SW1tUHRyIHN0cnVjdHVyZSwgR1BSUmVnIGRlc3QpCisgICAgeworICAgICAgICBjb25zdCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVj
dHVyZS5tX3ZhbHVlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50NjRfdCBibG9i
VG9TdG9yZSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oc3RydWN0dXJlUHRyKSArIFN0cnVjdHVyZTo6c3RydWN0dXJlSURP
ZmZzZXQoKSk7CisgICAgICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChibG9iVG9TdG9yZSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworI2Vsc2UKKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBiZXR0ZXIuCisgICAgICAg
IC8vIFdlIGhhdmUgdG8gY2FzdCB0byBzaWduZWQgYmVjYXVzZSBzdG9yZTggZ2V0cyBtYWQgaWYg
dGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIHNpZ25lZCBjaGFyIHJhbmdlLgorICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS50eXBl
KCkpIDw9IDI1NSk7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKSA8PSAyNTUpOworICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkp
IDw9IDI1NSk7CisKKyAgICAgICAgaml0LnN0b3JlOChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50OF90PihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSksIAorICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSkpOworICAgICAgICBqaXQuc3RvcmU4KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQ4X3Q+
KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkpLCAKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSk7CisgICAgICAgIGppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGlu
dDhfdD4oc3RydWN0dXJlUHRyLT5pbmRleGluZ1R5cGUoKSkpLCAKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsK
KyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlKGppdCwgc3RydWN0dXJlLCBkZXN0KTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShDQ2FsbEhlbHBl
cnMmIGppdCwgVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAgIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0
ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAg
ICAgICAgaml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworI2Vsc2UKKyAgICAgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShHUFJSZWcgc3RydWN0dXJlR1BS
LCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAg
VU5VU0VEX1BBUkFNKHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1
cmVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSkpOworI2VuZGlmCisgICAgfQogICAgIAogICAgIC8vIEFsbG9jYXRvciBmb3Ig
YSBjZWxsIG9mIGEgc3BlY2lmaWMgc2l6ZS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0
dXJlVHlwZT4gLy8gU3RydWN0dXJlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KQEAgLTIwNzEs
NyArMjE3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9m
ZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmpl
Y3QncyBTdHJ1Y3R1cmUuCi0gICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7
CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3Vs
dEdQUiwgc2NyYXRjaEdQUik7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhbiBvYmpl
Y3Qgb2YgYSBzcGVjaWZpYyBzaXplLgpAQCAtMzAxMyw4ICszMTIwLDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZQogICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmlu
Z09iamVjdFN0cnVjdHVyZSkpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAg
ICAgICBOb3RTdHJpbmdPYmplY3QsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1
Y3R1cmVMb2NhdGlvbiwgVHJ1c3RlZEltbVB0cihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7Cisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0
dXJlKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9j
a0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrQWxsb2NhdG9yLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
Y2xhc3MgV2Vha0Jsb2NrOwogLy8gc2hvcnQgcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGVuIGZyZWVp
bmcgdGhlbSBvbiBhIHNlY29uZGFyeSB0aHJlYWQuCiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yIHsK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIEJs
b2NrQWxsb2NhdG9yKCk7CiAgICAgfkJsb2NrQWxsb2NhdG9yKCk7CkBAIC01OSw2ICs2MCw4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlKFQqKTsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBkZWFsbG9jYXRlQ3VzdG9tU2l6ZShUKik7
CiAKKyAgICBTdXBlclJlZ2lvbiYgc3VwZXJSZWdpb24oKSB7IHJldHVybiBtX3N1cGVyUmVnaW9u
OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5n
TG9jayhkb3VibGUgcmVsYXRpdmUpOwogICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGltZShkb3Vi
bGUgcmVsYXRpdmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRp
b25zLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dD
QXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCiAjZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2Vs
bCkgZG8geyBcCiAgICAgUkVMRUFTRV9BU1NFUlQoY2VsbCk7XAotICAgIFJFTEVBU0VfQVNTRVJU
KGNlbGwtPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkgPT0g
Y2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52
YWxpZGF0ZWRTdHJ1Y3R1cmUoKSk7IFwKKyAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT5zdHJ1Y3R1
cmUoKS0+c3RydWN0dXJlKCkgPT0gY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpLT5zdHJ1
Y3R1cmUoKSk7IFwKIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8ge1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCw3IEBAIHZvaWQgSGVhcDo6
Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShT
dG9wQWxsb2NhdGlvbik7CisgICAgICAgIG1fc3RydWN0dXJlSURUYWJsZS5mbHVzaE9sZFRhYmxl
cygpOwogICAgICAgICBtX29iamVjdFNwYWNlLnN0b3BBbGxvY2F0aW5nKCk7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlICJTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNp
bmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC0xODYsNiArMTg3LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25z
dCB7IHJldHVybiAhIW1fZGVmZXJyYWxEZXB0aDsgfQogCisgICAgICAgIEJsb2NrQWxsb2NhdG9y
JiBibG9ja0FsbG9jYXRvcigpOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxlJiBzdHJ1Y3R1cmVJ
RFRhYmxlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRFRhYmxlOyB9CisKICAgICBwcml2YXRlOgog
ICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQ29w
aWVkQmxvY2s7CkBAIC0yMzYsNyArMjQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNp
emVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNTdGFjayYgc3RhY2soKTsKLSAg
ICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CiAgICAgICAgIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICAg
ICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7CkBAIC0yNTYsNiArMjU5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzczsKICAgICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9ja0FsbG9jYXRvcjsKKyAg
ICAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgICAgIE1hcmtl
ZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgICAgIENvcGllZFNwYWNlIG1fc3RvcmFnZVNwYWNl
OwogICAgICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1
ZmZlcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJl
dmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMywyMCArMjIzLDIyIEBAIGlubGluZSB2b2lkKiBNYXJr
ZWRTcGFjZTo6YWxsb2NhdGVXaXRoTm8KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxv
Y2soRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNp
c2VDb3VudDsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7
ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0
cnVjdHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VD
b3VudDsgKytpKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsg
KytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFj
aEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRh
bFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKLSAgICB9Ci0KICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9y
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJl
Y2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VB
bGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNw
YWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1f
bm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCisgICAg
ICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNb
aV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1w
cmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JT
cGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBt
X2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKIAogICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHJldmlzaW9uIDE1ODMz
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBWTTsKIAogY2xh
c3MgU3VwZXJSZWdpb24gOiBwdWJsaWMgV1RGOjpNZXRhQWxsb2NhdG9yIHsKKyAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgogICAgIFN1cGVyUmVnaW9uKCk7
CiAgICAgdmlydHVhbCB+U3VwZXJSZWdpb24oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcyLDYgKzE3MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFz
cyBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgewogICAgIHB1YmxpYzoKKyAgICAgICAgQUxXQVlTX0lO
TElORSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIoVk0qIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
aW50IGxpbmVOdW1iZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTShsaW5l
TnVtYmVyKTsKKyAgICAgICAgICAgIEFTU0VSVCh2bSk7CisgICAgICAgICAgICBBU1NFUlQoY2Fs
bEZyYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT5oYXNIb3N0Q2FsbEZyYW1l
RmxhZygpKTsKKyAgICAgICAgICAgIHZtLT50b3BDYWxsRnJhbWUgPSBjYWxsRnJhbWU7CisgICAg
ICAgIH0KKwogICAgICAgICBBTFdBWVNfSU5MSU5FIE5hdGl2ZUNhbGxGcmFtZVRyYWNlcihWTSog
dm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
dm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2LDkgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJh
bmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBzdHJ1Y3R1
cmVSZWcpCisgICAgSnVtcCBicmFuY2hJZkNlbGxOb3RPYmplY3QoR1BSUmVnIGNlbGxSZWcpCiAg
ICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhzdHJ1Y3R1cmVSZWcs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlw
ZSkpOworICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0Nl
bGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNlcnZl
MSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBHUFJS
ZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFsaWRH
UFJSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE1ODMzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw3
ICszMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZW1pdExv
YWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAgICAgICB2b2lkIGVt
aXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7Ci0gICAg
ICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZyk7Cisg
ICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKTsK
IAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1
Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAgICAgICAg
IHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgUmVnaXN0ZXJJRCBzY3Jh
dGNoKTsKQEAgLTMzNSw4ICszMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKHVuc2lnbmVkLCBSZWdpc3RlcklEKSB7IH0KICAgICAgICAg
dm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFJlZ2lzdGVySUQpIHsgfQogI2VuZGlmCi0gICAg
ICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZElu
ZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqKTsKLSAgICAgICAg
dm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0
cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwo
UmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5
UHJvZmlsZSopOworICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29k
ZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRBcnJh
eVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSopOwogICAgICAgICB2
b2lkIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSop
OwogICAgICAgICAKQEAgLTM3Niw2ICszNzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90Rmlu
YWwgfTsKIAorICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhSZWdp
c3RlcklEIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOwor
ICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRy
IHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gSnVtcCBicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENv
bmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVjdHVyZSopOworCiAjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKICAgICAgICAgYm9vbCBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IG9w
MSwgaW50IG9wMiwgaW50JiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1LDggKzc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlz
KElucwogCiAgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90
SlNDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmpl
Y3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3Qo
cmVnVDApOwogCiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdU
Mik7CiAgICAgZW1pdEdldENhbGxlckZyYW1lRnJvbUNhbGxGcmFtZUhlYWRlclB0cihjYWxsRnJh
bWVSZWdpc3Rlcik7CkBAIC0yNDgsOCArMjQ3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwo
T3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0
ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdU
MSk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgICAg
ICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NP
Zkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qx
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgICAgICAgICBzdG9y
ZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAg
IH0KICAgICAKQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9z
dXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3Rl
ZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkp
LCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDEp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTgz
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJP
ZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAp
OwogICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0g
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMCk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMCwgaW5zdHJ1Y3Rpb25bNl0u
dS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QxKTsKKyAgICAgICAgICAgIHN0b3JlMzIocmVnVDEsIGluc3RydWN0aW9uWzZdLnUuYXJyYXlQ
cm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKICAgICAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVn
VDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRh
YmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwg
cmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExp
bmtCdWZmCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyhN
YWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewotICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAgIG1fc3RydWN0dXJl
Q2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgIG1fc3Ry
dWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICBtX3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSk7CiAg
ICAgCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZlcnRpYmxlTG9hZFB0cigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNP
YmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7CiAgICAgCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKKyAgICBNYWNy
b0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogICAgIEFzc2VtYmxl
ckxhYmVsIG1fbG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpl
bWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1
bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1
bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKDEpKSk7CiAg
ICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNT
dHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVz
dDMyKFplcm8sIGRzdCkpOwpAQCAtNTUxLDcgKzU1MSw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjpjaGVj
a1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAg
cmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVybiBicmFuY2hT
dHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nh
c2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBpbnQg
dlJlZykKQEAgLTU5OSw5ICs1OTksOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVt
cFNsb3dUb0hvCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6
ZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZykKK0FMV0FZU19JTkxJ
TkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxs
UmVnKQogewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC02NzIsMTEgKzY3MiwxMSBAQCBpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dCksIHNjcmF0Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3MoYWxsb2NhdG9yLCBN
YXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAotICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRk
cmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKLQogICAgIC8vIGluaXRp
YWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgogICAgIHN0b3JlUHRy
KFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zm
c2V0KCkpKTsKKworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAg
IGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRj
aCk7CiB9CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC03MzEsMjYgKzczMSwyNiBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2Zp
bGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGxBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOyAvLyBXZSBoYWQgZm91bmQgdGhpcyBzY3JhdGNoIHJl
Z2lzdGVyIHVzZWZ1bCBoZXJlIGJlZm9yZSwgc28gSSB3aWxsIGtlZXAgaXQgZm9yIG5vdy4KKyAg
ICBSZWdpc3RlcklEIGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlOworICAgIFJlZ2lzdGVySUQg
aW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZTsKICAgICAKLSAgICBSZWdpc3RlcklE
IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICBSZWdpc3RlcklEIGlu
ZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAgICAKLSAgICBpZiAoc2hv
dWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUsIGFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgeworICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2Vs
bCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
MzIoc2NyYXRjaCwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAgICBsb2FkOChBZGRyZXNzKGNlbGws
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOwogfQogCi1pbmxp
bmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KFJlZ2lz
dGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1Np
dGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBl
LCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoc3RydWN0dXJl
QW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2Zp
bGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChj
ZWxsQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVBy
b2ZpbGUoYnl0ZWNvZGVJbmRleCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIHNjcmF0Y2gsIDApOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoY2VsbEFuZEluZGV4
aW5nVHlwZSwgc2NyYXRjaCwgMCk7CiAjZW5kaWYKIH0KIApAQCAtMTI0NCw2ICsxMjQ0LDY1IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW0KIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRTdG9yZVN0cnVj
dHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEKQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgdWludDY0X3QgYmxvYlRvU3RvcmUgPSAqcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50NjRfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cnVjdHVyZVB0
cikgKyBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpOworICAgIHN0b3JlNjQoVHJ1c3Rl
ZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
YmV0dGVyLgorICAgIHN0b3JlOChUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygp
LnR5cGUoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpKTsKKyAgICBzdG9yZTgoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3Qs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSk7CisgICAgc3RvcmU4KFRydXN0ZWRJbW0z
MihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgIHN0b3JlUHRyKHN0cnVj
dHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZW5kaWYKK30KKworQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGxvYWQ2
NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQor
ICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYmV0dGVyLgorICAgIC8vIFN0b3JlIHRoZSBKU1R5cGUK
KyAgICBsb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkp
OworCisgICAgLy8gU3RvcmUgdGhlIFR5cGVJbmZvIGlubGluZSBmbGFncworICAgIGxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBzdG9yZTgoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpKTsKKworICAgIC8v
IFN0b3JlIHRoZSBpbmRleGluZyB0eXBlCisgICAgbG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7
CisgICAgc3RvcmU4KHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2Vs
bDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJ
RAorICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRI
YW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICByZXR1
cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGppdC5i
cmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQdHIo
Y29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDggKzI1Niw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
VmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI3Niw4ICsyNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAvLyBP
cHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAg
ICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3Rp
bGwgY29udGFpbnMgdmFsdWUuCkBAIC0yODcsNyArMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAv
LyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRy
b3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAgIEp1
bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBicmFu
Y2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTM0MywxMiAr
MzQxLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwot
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zODcsOCArMzg1LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAg
ICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwog
ICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtNDI3LDcgKzQyNCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJl
Z1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtNTU0
LDkgKzU1MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKIAog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVz
dDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCks
IHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1
bXAoKTsKQEAgLTU4MCw5ICs1NzYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhh
bmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0
aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAg
d2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNjM2LDggKzYzMSw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0
U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2Vu
ZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAg
ICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02ODAsOCArNjc1LDggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93
Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3Zt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdF
cSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTcxMSw4ICs3MDYsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
U3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJv
dGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3ROb3RT
dHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RDZWxs
LmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzY5LDEy
ICs3NjQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAgSnVt
cCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAg
ICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTgwMCwxMiArNzk1
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNv
bXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC04NDQsMTAgKzgzOSw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0TG9h
ZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJ
bW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2Jq
ZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUg
dGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBj
YWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC05MDAsNyArODkzLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZvcihi
YXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtOTExLDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBj
YWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1
cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMp
KS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTE2NCw4ICsxMTU3LDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRoaXNS
ZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI5LDggKzEyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2lu
c3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTE0OSw4ICsxNDgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0
IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
Zk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2Jq
ZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0
IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwg
Y29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTYwLDcg
KzE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAg
IC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBp
cyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3Zl
IGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3Qg
Z28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVn
VDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVn
VDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhp
cyk7CkBAIC0xODUsMTIgKzE4MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQo
SW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5r
KHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwog
ICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJl
Z1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1
YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjMyLDggKzIzMCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlw
ZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwog
ICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKICAgICAKQEAgLTI5NCw4ICsyOTEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0
X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlUmVnaXN0ZXIpOwogICAgIEp1bXAgbm90SlNDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVS
ZWdpc3RlciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5v
dE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0
ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAKICAgICAv
LyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KICAgICBlbWl0R2V0UmV0dXJuUENGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKHJlZ1QxKTsKQEAgLTMzMSw3ICszMjcsOSBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90b19wcmltaXRpdmUoSW5zdHJ1Y3RpCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMs
IHJlZ1QwKTsKICAgICAKICAgICBKdW1wIGlzSW1tID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdU
MCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGlzSW1tLmxpbmso
dGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTM4Myw4ICszODEsOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9
IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0Nl
bGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0
dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1
bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7CkBAIC00MDYsOCAr
NDA0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKgogICAgIEp1
bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZp
cnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBi
aXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChi
cmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBhZGRK
dW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdhc05vdEltbWVkaWF0
ZSA9IGp1bXAoKTsKQEAgLTUwMiwxMCArNTAwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Bu
YW1lcyhJbnN0cnVjdGlvbgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDAp
OwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUoYmFzZSkpCiAgICAg
ICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKSk7Ci0gICAg
aWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpLm9mZnNldCgpIHx8IG1fY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2JqZWN0
LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChiYXNl
ICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5lIHRoZSBjYXNlIHdo
ZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0
IHNlZW0gdG8gYmUgaG90LgpAQCAtNTU5LDcgKzU1NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
eHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJl
Z1QwKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9h
ZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwgT0JK
RUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkp
KSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KQEAgLTU3MCw3ICs1NjYs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9uCiAgICAgTGFiZWwg
Y2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgbG9hZDY0KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVy
ZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVu
ZChlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QyKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0
dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDEpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1
c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRy
KE5vblplcm8sIEFkZHJlc3MocmVnVDMpKS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpA
QCAtNzQ4LDEyICs3NDQsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlv
biogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwogICAgIEp1bXAg
aXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBK
dW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAgd2FzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEp
OwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBy
ZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJlZ1QwLCByZWdUMiwg
cmVnVDApOwpAQCAtNzgwLDEyICs3NzYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVxX251bGwo
SW5zdHJ1Y3Rpb24qIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjMSwgcmVnVDApOwog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDApOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdU
MiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmVQdHIoTm90RXF1YWwsIHJl
Z1QwLCByZWdUMiwgcmVnVDApOwpAQCAtODUxLDExICs4NDcsMTIgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDEpOwogCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CiAKLSAgICBhZGRTbG93Q2FzZShicmFuY2g4
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICBsb2FkUHRyKGNhY2hlZFN0
cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDAsIHJlZ1QyKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMikp
OworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMik7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC05MjcsNiArOTI0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1
Y3RpbwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfdG9fdGhpcyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU4MzM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25D
b25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwg
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUpOwpAQCAtMTI3LDcgKzEyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJ
ZEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAog
ICAgIElkZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBl
ID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMTQ1
LDcgKzE0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIElkZW50aWZpZXIgaWRl
bnQgPSB1aWQtPmlzRW1wdHlVbmlxdWUoKSA/IElkZW50aWZpZXI6OmZyb20oUHJpdmF0ZU5hbWUo
dWlkKSkgOiBJZGVudGlmaWVyKHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKIApAQCAtMTY2
LDcgKzE2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5PcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSlNDZWxsKiBiYXNlLCBTdHJpbmdJ
bXBsKiBrZXkpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIGlmICghYmFzZS0+aXNPYmplY3Qo
KSkgewogICAgICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFt
ZXRlckVycm9yKGV4ZWMsICJpbiIsIGJhc2UpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkluKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qLCBK
U0NlbGwqIGJhc2UsIFN0cmluZ0ltcGwqIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBpZiAo
IWJhc2UtPmlzT2JqZWN0KCkpIHsKICAgICAgICAgdm0tPnRocm93RXhjZXB0aW9uKGV4ZWMsIGNy
ZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW4iLCBiYXNlKSk7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkKIHsKICAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4o
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIGJhc2UpKSk7CiB9CkBAIC0yMTQsNyArMjE0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNDZWxsKiBiYXNlLCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBmdW5jdGlvbiwgU3Ry
aW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50
KHZtLCB1aWQpOwogICAgIApAQCAtMjI0LDcgKzIyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2EKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgSlNDZWxsKiBnZXR0
ZXJTZXR0ZXIpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YWxsR2V0dGVyKGV4ZWMsIGJhc2UsIGdldHRlclNldHRlcikpOwogfQpAQCAtMjMyLDcgKzIzMiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2EKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodHJ1ZSwg
ZXhlYy0+Y29kZUJsb2NrKCktPnB1dEJ5SWRDb250ZXh0KCkpOwpAQCAtMjQyLDcgKzI0Miw3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWMKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElk
ZW50aWZpZXIgaWRlbnQodm0sIHVpZCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2Us
IGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRy
dWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5wdXRCeUlkQ29udGV4dCgpKTsKQEAgLTI2Miw3ICsyNjIs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAg
ICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGZhbHNlLCBleGVjLT5jb2RlQmxvY2soKS0+cHV0QnlJZENvbnRleHQoKSk7CkBAIC0yNzIs
NyArMjcyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlYwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMs
IF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFj
Y2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZFN0cmljCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIElkZW50aWZpZXIg
aWRlbnQodm0sIHVpZCk7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3QKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVf
Xyk7CiAgICAgCiAgICAgSWRlbnRpZmllciBpZGVudCh2bSwgdWlkKTsKICAgICBBY2Nlc3NUeXBl
IGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlw
ZSk7CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlYwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJp
Y3RPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlk
ZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZl
eGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAg
ICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNz
VHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAg
LTM4NCw3ICszODQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTQwNCw3ICs0MDQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZE5vblN0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAg
ICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9
IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTQyNCw3
ICs0MjQsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChF
eGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgU3RyaW5nSW1wbCog
dWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
dm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICBJZGVudGlmaWVyIGlkZW50KHZtLCB1aWQp
OwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0
dWJJbmZvLT5hY2Nlc3NUeXBlKTsKQEAgLTY4NSw3ICs2ODUsNyBAQCBpbmxpbmUgY2hhciogbGlu
a0ZvcihFeGVjU3RhdGUqIGV4ZWNDYWxsCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgCiAgICAgSlNWYWx1ZSBjYWxs
ZWVBc1ZhbHVlID0gZXhlY0NhbGxlZS0+Y2FsbGVlQXNWYWx1ZSgpOwogICAgIEpTQ2VsbCogY2Fs
bGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwpAQCAtNzM1
LDcgKzczNSw3IEBAIGlubGluZSBjaGFyKiB2aXJ0dWFsRm9yV2l0aEZ1bmN0aW9uKEV4ZWMKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElO
RV9fKTsKIAogICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IGV4ZWNDYWxsZWUtPmNhbGxlZUFz
VmFsdWUoKTsKICAgICBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
QXNWYWx1ZSk7CkBAIC04MjAsNyArODIwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25WaXJ0dWFsQ29ucwogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUxlc3Mo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkT3AyKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICByZXR1cm4ganNMZXNzPHRy
dWU+KGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRPcDIpKTsKIH0KQEAgLTgyOCw3ICs4MjgsNyBAQCBzaXplX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlTGVzCiBzaXplX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
TGVzc0VxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4ganNMZXNz
RXE8dHJ1ZT4oZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZE9wMikpOwogfQpAQCAtODM2LDcgKzgzNiw3IEBAIHNpemVfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVMZXMKIHNpemVfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVHcmVhdGVyKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICByZXR1cm4g
anNMZXNzPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC04NDQsNyArODQ0LDcgQEAgc2l6ZV90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZQogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ29tcGFyZUdyZWF0ZXJFcShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMt
PnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAg
cmV0dXJuIGpzTGVzc0VxPGZhbHNlPihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMiks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSk7CiB9CkBAIC04NTIsNyArODUyLDcgQEAgc2l6
ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUdyZQogc2l6ZV90IEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uQ29udmVydEpTVmFsdWVUb0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3ApCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wKS50b0Jvb2xlYW4oZXhlYyk7CiB9CkBAIC04NjAsNyAr
ODYwLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29udmVydEpTVgogc2l6ZV90
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZUVxKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikKIHsKICAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJ
TkVfXyk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShleGVjLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7
CiB9CkBAIC04NzIsNyArODcyLDcgQEAgc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29t
cGFyZVN0cgogI2VuZGlmCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogCiAgICAgYm9vbCByZXN1bHQgPSBhc1N0
cmluZyhsZWZ0KS0+dmFsdWUoZXhlYykgPT0gYXNTdHJpbmcocmlnaHQpLT52YWx1ZShleGVjKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtODkyLDIxICs4OTIsMjEgQEAgc2l6ZV90IEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFzUHJvcGVydAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdBcnJheVdpdGhQcm9maWxlKEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3QgSlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsK
ICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
LCBfX0xJTkVfXyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheU5l
Z2F0aXZlSW5kZXhlZChleGVjLCBwcm9maWxlLCB2YWx1ZXMsIHNpemUpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcldpdGhQcm9maWxl
KEV4ZWNTdGF0ZSogZXhlYywgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSogcHJvZmlsZSwgY29uc3Qg
SlNWYWx1ZSogdmFsdWVzLCBpbnQgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjb25zdHJ1Y3RBcnJheShleGVjLCBwcm9maWxlLCB2YWx1ZXMsIHNpemUp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplQW5kUHJvZmlsZShFeGVjU3RhdGUqIGV4ZWMsIEFycmF5QWxsb2NhdGlvblByb2ZpbGUq
IHByb2ZpbGUsIEVuY29kZWRKU1ZhbHVlIHNpemUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYywgX19MSU5FX18pOwogICAgIEpTVmFs
dWUgc2l6ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHNpemUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoY29uc3RydWN0QXJyYXlXaXRoU2l6ZVF1aXJrKGV4ZWMsIHByb2ZpbGUsIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgc2l6ZVZhbHVlKSk7CiB9CkBAIC05MjIsNyArOTIyLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZQogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKICAgICAKICAgICByZXR1cm4gY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKIH0KQEAgLTEzMDksNyArMTMwOSw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbEMKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2VWYWwpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhl
YywgX19MSU5FX18pOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZVZhbCk7CkBAIC0xMzk5LDcgKzEzOTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4
ZWMpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2Ny
aXB0KTsKLSAgICAKKwogICAgIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSAmJiBzdWJzY3JpcHQu
aXNJbnQzMigpKSB7CiAgICAgICAgIC8vIFNlZSBpZiBpdCdzIHdvcnRoIG9wdGltaXppbmcgdGhp
cyBhdCBhbGwuCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUp
OwpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dFRv
U2NvcGUoRQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEV4Y2VwdGlvblZhbHVlKQogewogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsK
IAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEV4
Y2VwdGlvblZhbHVlKTsKICAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uVmFs
dWUpOwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIoRXhl
Y1N0YXRlKiBleGVjKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMsIF9fTElORV9fKTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFs
dWUgPSBleGVjLT5leGNlcHRpb24oKTsKICAgICBBU1NFUlQoZXhjZXB0aW9uVmFsdWUpOwpAQCAt
MTY5NCw3ICsxNjk0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRs
ZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZNSGFuZGxlRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjLCBfX0xJTkVfXyk7CiAKICAgICBBU1NFUlQoIWV4ZWMtPmhhc0hvc3RDYWxs
RnJhbWVGbGFnKCkpOwogICAgIGdlbmVyaWNVbndpbmQodm0sIGV4ZWMsIHZtLT5leGNlcHRpb24o
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4
LDcgKzg4LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewog
ICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAg
ZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGpp
dCwgTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBs
ZW5ndGggdG8gcmVnVDEsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRh
IHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtI
ZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMTM3LDggKzEzNyw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVn
VDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJv
ZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0z
MihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlw
ZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3Ry
aW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVt
aXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3Ip
LmNvZGUoKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKTsK
ICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpAQCAtMjgyLDggKzI4Miw4IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7
CisgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRl
eGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7
CkBAIC00NzgsOCArNDc4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0
aW9uKgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAg
ICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0
UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
Rm9yQnl0ZWNvZGVJbmRleChyZWdUMiwgcmVnVDMsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAg
ICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JC
eXRlY29kZUluZGV4V2l0aENlbGwocmVnVDIsIHJlZ1QzLCBtX2J5dGVjb2RlT2Zmc2V0KTsKICAg
ICB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTYzNCw3ICs2MzQsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3RpCiAgICAgZW1pdExvYWRQYXls
b2FkKGl0ZXIsIHJlZ1QxKTsKICAgICAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
MCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwg
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwog
ICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtNzM0LDcgKzczNCw3IEBAIHZv
aWQgSklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhpbnQKIHsKICAgICBlbWl0TG9hZChz
Y29wZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBsb2FkUHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QyKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRHZXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3Qq
IG9wZXJhbmRTbG90KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
NiwxMCBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAgICAg
SlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWls
dXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoSlNDOjpicmFuY2hTdHJ1Y3R1cmUoaml0LAor
ICAgICAgICBOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICB2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAK
ICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2Vz
cyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIo
QWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVn
VDIpOwpAQCAtMTExLDggKzExNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5z
dHJ1Y3Rpb24KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVnVDEpOwogCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAs
IHJlZ1QyKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDIsIHJlZ1Qz
LCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBy
ZWdUMik7CiAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC0yMDksNyArMjEyLDkgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2Fz
ZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5v
bkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNo
ZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJl
KE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgCisgICAgICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1p
dE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5
VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0
NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7
CkBAIC0yODAsNyArMjg1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3Ry
dWN0aQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAg
ICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
cmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFs
LCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwg
cmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtMzIxLDggKzMy
Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBT
ZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1Qx
LCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUp
OworICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5k
ZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBl
OwpAQCAtNTE4LDggKzUyMyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsK
ICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zm
c2V0KTsKICAgICB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKQEAgLTY5OCw3ICs3
MDMsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwgcmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0
dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMSkpOworICAgIGxvYWQzMihBZGRyZXNz
KHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJv
cGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTc2MCw2ICs3NjcsOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zCiAgICAgaWYgKHJlc29sdmVUeXBlID09
IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47
CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24o
V2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21TY29wZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rp
b24pOwogfQpAQCAtODI0LDYgKzgzMyw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9f
c2NvcGUoSW5zdHIKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVU
eXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODc2LDcgKzg4Nyw3IEBAIEpJVDo6SnVtcCBKSVQ6
OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0
aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0Y2hwb2ludChtX2NvZGVCbG9jaykpOwogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNj
cmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHNjcmF0
Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkp
OworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNjcmF0
Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiAgICAgICAgIGJy
ZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0aGlzKTsKICNlbmRpZgpAQCAtODg1LDcgKzg5
Niw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICB9CiAg
ICAgCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgIHJldHVy
biBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0
cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0
Y2gpCkBAIC0xMDI5LDcgKzEwNDAsMTMgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBl
ZEFycmF5R2V0QgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOwor
I2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0
TG9hZFN0cnVjdHVyZShiYXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82
NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsK
QEAgLTEwOTksOCArMTExNiwxNCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheUdlCiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAg
bG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNo
KTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAg
ICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBzY3JhdGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFM
VUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNlbmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBi
YXNlKTsKQEAgLTExNTIsNyArMTE3NSw3IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlw
ZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9h
ZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0
Y2gpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKGJhc2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0
Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
ZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gz
MihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIApAQCAtMTIxOCw3ICsxMjQxLDcgQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwg
ZWFybHlTY3JhdGNoLCBsYXRlU2NyYXRjaCk7CiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAx
NTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdp
c3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlKTsKKyAgICAgICAg
dm9pZCBlbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0
LCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJl
Z2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklE
IHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkpOwpAQCAtMzg4LDEwICszODksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpT
SW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lz
dGVySUQgc2NyYXRjaFJlZywgSlNUeXBlIHR5cGUpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpT
SW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0
ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291
cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyAgICAgICAgbG9hZFB0
cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gpOyAKKyAgICAg
ICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwgZGVzdCwgVGltZXNFaWdodCksIGRlc3QpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBsb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNl
SklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJh
c2VSZWcsIEpTVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1
YWwsIEFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMih0eXBlKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJm
YWNlSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVI
ZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTgzMzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVk
ZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAi
SklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgpAQCAtNjYsNyArNjks
NyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29kZUJsCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0aEZ1bmN0
aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9m
IHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5k
ZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRw
dHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3Ry
dWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9h
ZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9m
TGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0
KQpAQCAtOTQsMTAgKzk3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25D
aGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0aGlzIGNvZGUsIHRoZSBvYmplY3QgbXVz
dCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBBc3NlcnQKICAgICAgICAgLy8gdGhpcyBp
biBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBi
cmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1
Y3R1cmUpOwogICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBvay5saW5rKCZqaXQp
OwogI2VuZGlmCkBAIC0xMDYsMTAgKzEwOSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVU
cmFuc2l0aW9uQ2hlY2soCiAgICAgCiAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCgK
LSAgICAgICAgaml0LmJyYW5jaFB0cigKKyAgICAgICAgYnJhbmNoU3RydWN0dXJlKGppdCwKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVyZSkpOwogfQogCiBzdGF0
aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCkBAIC0xMjgsMTAgKzEzMSwxMCBA
QCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAKIHN0YXRpYyB2b2lk
IHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8sIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7
Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaCgpKSB7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBs
YWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAotICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgKKyAgICAgICAgICAgIFJlcGF0
Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcygKKyAg
ICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9m
ZnNldCgKICAgICAgICAgICAgICAgICAgICAgLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsKSksCiAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCh0YXJnZXQp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwOSwxMCBAQCBzdGF0aWMgdm9pZCBnZW5l
cmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IGZhaWx1cmVDYXNlczsKICAgICAKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgCiAgICAgU3RydWN0dXJl
KiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0yODIsOCArMjg4LDcgQEAgc3RhdGljIGJvb2wgdHJ5
Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAKLSAgICAgICAgc3R1YkppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsgCi0gICAgICAgIHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJ
c0FycmF5KSkpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOwogICAgICAgICAKQEAgLTQ2OSw3ICs0NzQs
MTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlETGlzdChFeGVjU3RhdAogICAgICAgICAK
ICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIAot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0cnVjdCA9IHN0dWJKaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0
cnVjdCA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgc3RydWN0dXJl
KTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBzdHJhdGVneSB3ZSB1c2UgZm9yIHN0dWJzIGlz
IGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEpIENhbGwgREZHIGhlbHBlciB0aGF0IGNhbGxzIHRo
ZSBnZXR0ZXIuCkBAIC02ODIsMTAgKzY5MCwxMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFj
ZVN0dWIoCiAgICAgICAgIHN0dWJKaXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsKICAgICB9CiAK
LSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBzdHViSml0LmJyYW5jaFB0
cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBicmFuY2hTdHJ1Y3R1
cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgCiAjaWYgRU5BQkxFKFdSSVRF
X0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC04MTEsNyArODE5LDEw
IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIAogICAg
IEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFs
aWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3Ry
dWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICBvbGRTdHJ1Y3R1cmUpKTsKICAgICAKICAgICBhZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBl
KCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVyZUNhc2VzLApA
QCAtODY5LDcgKzg4MCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAg
ICAgICAgc2NyYXRjaEdQUjFIYXNTdG9yYWdlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBzdHViSml0
LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
KyAgICBERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8o
c3R1YkppdCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYmFzZUdQ
Uik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNo
ZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmU2NCh2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgp
ICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpT
VmFsdWUpKSk7CkBAIC0xMTgyLDEwICsxMTkzLDEwIEBAIHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJ
bigKICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJT
dHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBp
dCA9IGNoYWluLT5oZWFkKCk7CkBAIC0xMzEwLDEwICsxMzIxLDEwIEBAIHZvaWQgbGlua0Nsb3N1
cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2EKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFw
cGVuZCgKLSAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVy
ZShzdHViSml0LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAK
ICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTM3
OSwxNiArMTM5MCwxNiBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENh
CiB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNo
LmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJl
cGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVm
ZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAot
ICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVs
MzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVs
MzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwp
OworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZm
ZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVM
YWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0
Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7Cisg
ICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1
bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVs
LCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRP
clN0b3JlKSwgMCk7CiAjZWxzZQpAQCAtMTQxMywxNiArMTQyNCwxNiBAQCB2b2lkIHJlc2V0UHV0
QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0g
b3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICByZXBh
dGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wdGltaXplZEZ1
bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBz
dHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJf
dClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKLSAgICBpZiAoTWFjcm9Bc3Nl
bWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKLSAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAorICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0
YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgeworICAgICAgICByZXBhdGNoQnVmZmVyLnJl
dmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCisgICAgICAg
ICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFk
ZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAotICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51
c2VkUG9pbnRlcikpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAg
ICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNh
bGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNp
bmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCkBAIC02NSwxNCArNjcsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lz
dGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3Vt
ZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5h
cHBlbmQoYnJhbmNoU3RydWN0dXJlKCp0aGlzLCBOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAg
QWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0
Y2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRz
dCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNj
cmF0Y2gsIGRzdCk7CiAgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHJlbG9hZCB0
aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVkIGl0LgorICAgICAg
ICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVy
SUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkpJ
VE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0
ZXJhdG9yLmgiCkBAIC0xNjgsNyArMTY5LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5m
bzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2Fk
U3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMiwg
R1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKQEAgLTk4Niw5
ICs5ODcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0CiAgICAg
aml0LmxvYWQzMihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRl
cmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7
CiAgICAgCiAgICAgLy8gUHVsbCBvdXQgdGhlIGJ1dHRlcmZseSBmcm9tIGl0ZXJhdGVkT2JqZWN0
Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKLSAg
ICAKLSAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qz
KTsKKyAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlND
ZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsK
ICAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09i
amVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CiAg
ICAgCiAgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VW51c2VkUG9pbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VW51c2VkUG9pbnRlci5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1VudXNlZFBvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorc3RhdGljIGNvbnN0IHVp
bnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHgwOworI2Vsc2UKIHN0YXRpYyBjb25zdCB1aW50cHRy
X3QgdW51c2VkUG9pbnRlciA9IDB4ZDFlN2JlZWY7CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwyNCBAQCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFVuY2hlCiAgICAgICAgIHBheWxvYWQpCiBlbmQKIAorbWFjcm8gc3RvcmVTdHJ1Y3R1
cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIHN0b3JlcCBzdHJ1
Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorCisgICAgbG9hZGkgU3RydWN0dXJl
OjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBzY3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gs
IEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1f
aW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpT
Q2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9y
ZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAg
ICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCitlbmQKKwogbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKICAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgogZW5kCkBAIC00
MjgsNyArNDQ2LDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQwCiAg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBd
LCB0MAogICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbigyLCB0MikKICAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKQEAgLTUwOSw3ICs1
MjcsNyBAQCBfbGxpbnRfb3BfZXFfbnVsbDoKICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEK
ICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQK
ICAgICBtb3ZlIDAsIHQxCiAgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQpAQCAtNTU2LDcg
KzU3NCw3IEBAIF9sbGludF9vcF9uZXFfbnVsbDoKICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAogICAgIG1vdmUgMSwgdDEKICAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQpAQCAt
NTgzLDggKzYwMSw4IEBAIG1hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGEK
ICAgICBiaW5lcSB0MiwgdDMsIC5zbG93CiAgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAg
ICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MV0sIHQzCiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKICAgICBiYmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAu
c2xvdwogLm5vdFN0cmluZzoKQEAgLTg1NSw3ICs4NzMsNyBAQCBfbGxpbnRfb3BfY2hlY2tfaGFz
X2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSAxMltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MAogICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAK
QEAgLTg3MCw3ICs4ODgsNyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICBsb2FkaSAxMltQ
Q10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDFdLCB0MgogICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2FkaSA4W1BDXSwgdDAK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcElu
c3RhbmNlb2ZTbG93KQpAQCAtODc4LDcgKzg5Niw3IEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgog
ICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92
ZSAxLCB0MAogLm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBs
b2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCiAgICAg
YnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCiAgICAgYnRpbnogdDIsIC5vcEluc3RhbmNl
b2ZMb29wCkBAIC05MDUsNyArOTIzLDcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9w
SXNVbmRlZmluZWRDZWxsOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgYnRibnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAs
IHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCkBAIC05NDgsNyAr
OTY2LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQxLCB0MCwgdDMpCiAgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQogICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MAogICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTEwMTcsNyArMTAzNSw3IEBAIG1hY3JvIGdl
dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0MywKICAgICAgICAgdDAsCiAgICAg
ICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAg
ICAgICAgIGxvYWRpIDRbUENdLCB0MQogICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCiAgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgpAQCAtMTA0NSw3ICsxMDYzLDcgQEAgX2xsaW50X29w
X2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAgMTZbUENd
LCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Mywg
Lm9wR2V0QXJyYXlMZW5ndGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQyCiAgICAgYXJyYXlQ
cm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5n
dGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3Ro
U2xvdwpAQCAtMTA4OSw3ICsxMTA3LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3Jh
Z2UpCiAgICAgICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3Rv
cmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0
MQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQy
KQogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQpAQCAtMTExNyw3ICsxMTM1
LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRp
IDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRh
ZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgIGdldFByb3BlcnR5U3Rv
cmFnZSgKQEAgLTExMzAsNyArMTE0OCw3IEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0
aW9uYWxDaGVja3MKICAgICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQogICAgICAg
ICAgICAgbG9hZGkgMjRbUENdLCB0MQogICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W3QzXQotICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQor
ICAgICAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8odDAsIHQxLCB0MikKICAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCiAgICAgICAgIGVuZCkKIGVuZApAQCAtMTE0OCw3ICsxMTY2LDcg
QEAgbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLAogICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQogLmxvb3A6CiAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCiAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBb
c2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA0LCBzY3JhdGNoCiAgICAgYmluZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAubG9vcApAQCAtMTE3NSw3ICsxMTkzLDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0MF0sIHQyCiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0
MiwgdDMsIHQxKQogICAgIGxvYWRpIDEyW1BDXSwgdDMKQEAgLTEyNjEsNyArMTI3OSw3IEBAIF9s
bGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQw
CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDJdLCB0MAogICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0
cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CiAgICAgbG9hZGkgMjRbUENdLCB0MAogICAg
IGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKQEAgLTEzMDQsNyArMTMyMiw3IEBAIG1hY3JvIHB1dEJ5
VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRp
IDRbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgbG9hZHAg
MTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGxvYWRpIDhbUENd
LCB0MApAQCAtMTQxNiw3ICsxNDM0LDcgQEAgbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBp
bW1lZGlhdGVIYQogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
aW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBjZWxsSGFuZGxlcih0MiwgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQogICAg
IGRpc3BhdGNoKDMpCiAKQEAgLTE1NDcsNyArMTU2NSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hh
cjoKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQx
CiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0s
IFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpbmVxIEpTU3RyaW5n
OjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpT
U3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKQEAgLTE1OTEsOSArMTYwOSw5IEBAIG1hY3JvIGFycmF5
UHJvZmlsZUZvckNhbGwoKQogICAgICAgICBuZWdpIHQzCiAgICAgICAgIGJpbmVxIFRoaXNBcmd1
bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRhZywgLmRvbmUKICAgICAg
ICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwg
dDAKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgICAgIGxvYWRwIDI0W1BDXSwg
dDEKLSAgICAgICAgc3RvcmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVb
dDFdCisgICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJl
SURbdDFdCiAgICAgLmRvbmU6CiAgICAgZW5kCiBlbmQKQEAgLTE2NTgsNyArMTY3Niw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCkBAIC0xNjc0
LDcgKzE2OTIsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0
MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmlu
Z1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTE3MDMsNyArMTcyMSw3IEBAIF9s
bGludF9vcF9uZXh0X3BuYW1lOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQogICAgIGxvYWRpIDhbUENdLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAg
ICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0
Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE3
MTEsNyArMTcyOSw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wOgogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEK
ICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAg
ICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTE5ODMsNyAr
MjAwMSw3IEBAIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhd
LCB0MAogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsx
OTMsNDEgQEAgbWFjcm8gdmFsdWVQcm9maWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIGVu
ZAogZW5kCiAKK21hY3JvIGxvYWRTdHJ1Y3R1cmUoY2VsbCwgc3RydWN0dXJlKQorZW5kCisKK21h
Y3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dm1bc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0
dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gK
KyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxv
YWRwIFtzY3JhdGNoLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBsb2Fk
U3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKKyAgICBsb2FkaSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW2NlbGxdLCBjZWxsCisgICAg
bG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRh
YmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCisgICAgbG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0s
IHN0cnVjdHVyZQorZW5kCisKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGws
IHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURb
c3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3JlcSBzY3JhdGNoLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVj
dHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5
cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxs
OjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwg
SlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGkgU3RydWN0dXJlOjptX3N0cnVjdHVy
ZUlEW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFtjZWxsXQorZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0
ZXIuCiAKQEAgLTMxOCwxMCArMzUzLDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAg
YnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbigyLCB0MikKLSAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0
MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpA
QCAtNDAyLDExICs0MzcsMTEgQEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAg
ICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgotICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QyXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRv
bmUKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MCwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2ds
b2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAtNzMzLDggKzc2OCw3IEBAIF9sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigzLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKQEAgLTc0NiwyNCArNzgwLDIzIEBAIF9sbGludF9vcF9pbnN0YW5j
ZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5
cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0
VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xv
dykKICAgICAKICAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1
ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MgotICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJd
LCB0MgorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxv
YWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDNdLCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJ
bnN0YW5jZW9mRG9uZQogICAgIGJ0cXogdDIsIHRhZ01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAK
ICAgICBtb3ZlIDAsIHQwCiAub3BJbnN0YW5jZW9mRG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwg
dDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2Zy
LCB0MywgOF0KICAgICBkaXNwYXRjaCg0KQogCkBAIC03ODMsMTcgKzgxNiwxNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
CisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3Rv
cmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MV0sIHQxCi0gICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQz
Ci0gICAgb3JxIFZhbHVlRmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAg
ICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFs
dWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtODI2LDggKzg1OSw3IEBAIF9sbGludF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQw
KQogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAg
IHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTg3OSwxNCArOTEx
LDE1IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBm
YXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdo
aWNoIGlzIHdoYXQKICAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQs
IHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNs
b3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MywgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQor
ICAgIGJwbmVxIHQyLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2Uo
CiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0
MikKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAg
IGxvYWRxIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAgICAgc3RvcmVx
IHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQpAQCAtOTEyLDcgKzk0NSw3IEBAIF9sbGludF9vcF9nZXRf
YXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MCwgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQw
KQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXog
dDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTk0OSwxNSAr
OTgyLDE2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKIG1hY3JvIHB1dEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEg
dDIsIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAg
dDAsCiAgICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNo
KQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgICAg
ICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHdyaXRlQmFycmllcih0MCkK
ICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KQEAgLTk4
Miw5ICsxMDE2LDEwIEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rp
b24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKKyAgICBi
cG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMs
IHQyKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MikKLSAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNr
cyh0MSwgdDMpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGdldFByb3Bl
cnR5U3RvcmFnZSgKICAgICAgICAgdDAsCkBAIC05OTUsMTUgKzEwMzAsMTUgQEAgbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgd3JpdGVCYXJyaWVy
KHQxKQogICAgICAgICAgICAgc3RvcmVxIHQxLCBbdDNdCiAgICAgICAgICAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig2LCB0MSkKLSAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0KKyAgICAgICAgICAgIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwg
dDIpCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8g
bm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRp
b25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3Jv
IHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVj
dHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3Jh
dGNoKQogICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEw
MTIsNyArMTA0Nyw4IEBAIG1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwK
ICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxs
LCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2Vs
bF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJv
dG9DZWxsLCBzY3JhdGNoMikKKyAgICBtb3ZlIHNjcmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgs
IHNjcmF0Y2gKICAgICBicW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0s
IFZhbHVlTnVsbCwgLmxvb3AKQEAgLTEwMzksOCArMTA3NSw4IEBAIF9sbGludF9vcF9nZXRfYnlf
dmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIs
IHQzLCB0MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTEyNSw3ICsx
MTYxLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5UG5hbWVTbG93KQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwgdDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykK
ICAgICBicG5lcSB0MiwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDFdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykK
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwpAQCAtMTE2Nyw4ICsxMjAz
LDggQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQor
ICAgIG1vdmUgdDEsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0
MCwgdDMsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTEyNzcsOCArMTMxMyw4IEBAIG1hY3JvIGVxdWFs
TnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
ICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1l
ZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFu
ZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAu
dGFyZ2V0KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNl
bGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNo
KDMpCiAKIC50YXJnZXQ6CkBAIC0xNDEwLDggKzE0NDYsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2No
YXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQx
LCB0YWdNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hD
aGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAg
YnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAtMTQ1NSw5ICsxNDkwLDkgQEAgbWFjcm8gYXJy
YXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5lZ3AgdDMKICAgICAgICAgbG9hZHEgVGhpc0Fy
Z3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmRvbmUKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJv
ZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0KKyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDMKKyAgICAgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRFt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTUyMCw4
ICsxNTU1LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAg
ICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3Q6CkBAIC0xNTM2LDggKzE1NzAsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0
aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJ
c0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAg
IHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE1NjcsNyArMTYw
MCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0s
IHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc1LDcg
KzE2MDgsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGws
IC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwg
dDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBu
YW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3AKQEAgLTE4MDQsOCArMTgzNyw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Nj
b3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFj
cm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsMTMgKzI1NSwxNCBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgp
CiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5k
ZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQotICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVj
dHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFu
ZEluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHBy
b2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAg
ICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAogICAgIGlmIFZBTFVF
X1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0
U2VlblN0cnVjdHVyZVtwcm9maWxlXQorICAgICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHNjcmF0Y2gKKyAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6
bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Byb2ZpbGVdCiAgICAgZW5kCi0gICAgbG9hZGIgU3RydWN0
dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAgICBsb2FkYiBK
U0NlbGw6Om1faW5kZXhpbmdUeXBlW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCiBtYWNybyBj
aGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQpAQCAtNDA5LDggKzQxMCw4IEBAIG1h
Y3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3QKICAgICAgICAgc3RvcmVwIHNj
cmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxbYWxsb2NhdG9yXQogICAgIAogICAgICAgICAj
IEluaXRpYWxpemUgdGhlIG9iamVjdC4KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxs
OjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbcmVzdWx0XQorICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhyZXN1bHQs
IHN0cnVjdHVyZSwgc2NyYXRjaDEpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04
NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKSAKICAgICB7IAotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcmd1bWVudHNUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVt
QXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFyZ3VtZW50cywgbV9udW1Bcmd1
bWVudHMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBpc0Z1bmN0aW9uRXhlY3V0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7Cisg
ICAgICAgIHJldHVybiB0eXBlKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKICAgICB9CiAK
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1Q
YXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0Owog
CkBAIC02NjksNyArNjY5LDcgQEAgaW5saW5lIGJvb2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2
YWx1ZQogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+dHlw
ZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBQ
cm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02ODMsNyArNjgzLDcgQEAgaW5saW5lIHZvaWQgRXhl
Y3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBpbmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxl
Ojp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVU
eXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxlKj4odGhpcyktPnVubGlu
a0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5p
dGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJX
cml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3Bw
CShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wgSlNBcnJheTo6
c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7
Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICBpZiAoIW5l
d0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDIyLDcgKzQyMiw3IEBAIGJv
b2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAgIGVuc3Vy
ZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBB
cnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0
aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1
YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICB9IGVsc2UgewpAQCAt
NDQ0LDcgKzQ0NCw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywK
IAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgIApAQCAtNTM5LDcgKzUzOSw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNT
dGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBz
dG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJy
YXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewogICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNp
ZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICAvLyBGYWxsIHRocm91Z2guCkBAIC02NzcsNyAr
Njc3LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZQogICAgIAog
ICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4g
YWJub3JtYWwgc3RhdGUsCiAgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJh
eVByb3RvdHlwZS4KLSAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3IgfHwgaW5TcGFyc2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNl
U2xvd1B1dChpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghb2xkTGVuZ3RoKQpAQCAtNzUxLDcgKzc1MSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluZ1QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjb3VudCA+IDApOwogICAg
IAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIApAQCAtODQ5LDcgKzg0OSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlm
dENvdW50V2l0aEFycmF5U3RvcmEKIAogICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBob2xl
cyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3JtYWwgc3RhdGUsCiAgICAgLy8gdXNlIHRoZSBn
ZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3RvdHlwZS4KLSAgICBpZiAobGVuZ3RoICE9IHN0
b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgc3RvcmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwg
c2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChs
ZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBzdG9yYWdlLT5pblNwYXJz
ZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgYm9vbCBtb3ZlRnJvbnQgPSAhc3RhcnRJbmRleCB8fCBzdGFydElu
ZGV4IDwgbGVuZ3RoIC8gMjsKQEAgLTg4Niw3ICs4ODYsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hp
ZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFu
eUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNvdW50KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICAgLy8gV2UgY291bGQgaGFuZGxlIHRo
aXMuIEJ1dCBpdCBzaG91bGRuJ3QgZXZlciBjb21lIHVwLCBzbyB3ZSB3b24ndC4KQEAgLTk5NSwy
MCArOTk1LDIwIEBAIHN0YXRpYyBpbnQgY29tcGFyZUJ5U3RyaW5nUGFpckZvclFTb3J0KGMKICAg
ICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+c2Vjb25kLCB2Yi0+c2Vjb25kKTsKIH0KIAot
dGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlw
ZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUs
IGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEludDMyIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUgfHwgaW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aENvbnRpZ3VvdXMgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aEFycmF5U3RvcmFnZSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aEludDMyIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSB8fCBhcnJh
eUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1b3VzIHx8IGFycmF5SW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgCiAgICAgdW5zaWduZWQgbGVuZ3RoTm90
SW5jbHVkaW5nVW5kZWZpbmVkOwogICAgIHVuc2lnbmVkIG5ld1JlbGV2YW50TGVuZ3RoOwotICAg
IGNvbXBhY3RGb3JTb3J0aW5nPGluZGV4aW5nVHlwZT4oCisgICAgY29tcGFjdEZvclNvcnRpbmc8
YXJyYXlJbmRleGluZ1R5cGU+KAogICAgICAgICBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQs
CiAgICAgICAgIG5ld1JlbGV2YW50TGVuZ3RoKTsKICAgICAKLSAgICBDb250aWd1b3VzSlNWYWx1
ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KCk7CisgICAgQ29udGlndW91c0pT
VmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAgICAgCi0g
ICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CisgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0
KCkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTAxNyw3ICsxMDE3LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJp
Y1ZlY3RvcihFeGVjU3RhdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYm9vbCBhbGxWYWx1
ZXNBcmVOdW1iZXJzID0gdHJ1ZTsKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3
aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAg
IGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBicmVhazsKQEAgLTEwMzksNyArMTAzOSw3
IEBAIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAvLyBhbHNv
IGRvbid0IHJlcXVpcmUgbWVyZ2Vzb3J0J3Mgc3RhYmlsaXR5LCBzaW5jZSB0aGVyZSdzIG5vIHVz
ZXIgdmlzaWJsZQogICAgIC8vIHNpZGUtZWZmZWN0IGZyb20gc3dhcHBpbmcgdGhlIG9yZGVyIG9m
IGVxdWFsIHByaW1pdGl2ZSB2YWx1ZXMuCiAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgdm9pZCos
IGNvbnN0IHZvaWQqKTsKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAo
YXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgICAgICBj
b21wYXJlID0gY29tcGFyZU51bWJlcnNGb3JRU29ydFdpdGhJbnQzMjsKICAgICAgICAgYnJlYWs7
CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljKEV4ZWNTdGF0
ZSogZXhlCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKIAotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKQEAgLTExMTUsNyArMTExNSw3IEBAIHRlbXBsYXRlIDw+IHN0cnVjdCBDb250aWd1b3VzVHlw
ZUFjY2Vzc28KIH07CiAKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdHlw
ZW5hbWUgU3RvcmFnZVR5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5
cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgogdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGlndW91c0RhdGE8U3RvcmFnZVR5cGU+IGRhdGEsIHVu
c2lnbmVkIHJlbGV2YW50TGVuZ3RoKQogewogICAgIGlmICghcmVsZXZhbnRMZW5ndGgpCkBAIC0x
MTM5LDExICsxMTM5LDExIEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVj
U3QKICAgICBib29sIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IHRydWU7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlbGV2YW50TGVuZ3RoOyBpKyspIHsKLSAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8aW5kZXhpbmdUeXBlPjo6Z2V0QXNWYWx1
ZShkYXRhLCBpKTsKLSAgICAgICAgQVNTRVJUKGluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQz
MiB8fCB2YWx1ZS5pc0ludDMyKCkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91
c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7Cisg
ICAgICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1
ZS5pc0ludDMyKCkpOwogICAgICAgICBBU1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAg
ICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2YWx1ZTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSAh
PSBBcnJheVdpdGhEb3VibGUgJiYgaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQorICAg
ICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGFycmF5SW5k
ZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQogICAgICAgICAgICAgaXNTb3J0aW5nUHJpbWl0
aXZlVmFsdWVzID0gaXNTb3J0aW5nUHJpbWl0aXZlVmFsdWVzICYmIHZhbHVlLmlzUHJpbWl0aXZl
KCk7CiAgICAgfQogICAgICAgICAKQEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSlNBcnJheTo6
c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICAKICAgICAvLyBJZiB0aGUgdG9TdHJpbmcg
ZnVuY3Rpb24gY2hhbmdlZCB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSBvciB2ZWN0b3Igc3RvcmFn
ZSwKICAgICAvLyBpbmNyZWFzZSB0aGUgbGVuZ3RoIHRvIGhhbmRsZSB0aGUgb3JpZ25hbCBudW1i
ZXIgb2YgYWN0dWFsIHZhbHVlcy4KLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3
aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAg
IGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgIGNhc2UgQXJyYXlXaXRoQ29udGlndW91czoKQEAg
LTExODQsNyArMTE4NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVj
U3QKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZToKICAgICAgICAgaWYgKGFycmF5U3Rv
cmFnZSgpLT52ZWN0b3JMZW5ndGgoKSA8IHJlbGV2YW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBp
bmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCByZWxldmFudExlbmd0aCk7Ci0gICAgICAg
ICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVm
ZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVjdG9yKCkpOworICAgICAgICAgICAgQ29u
dGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVmZXJl
bmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVjdG9yKCkpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkgPCByZWxldmFudExlbmd0aCkKICAgICAgICAg
ICAgIGFycmF5U3RvcmFnZSgpLT5zZXRMZW5ndGgocmVsZXZhbnRMZW5ndGgpOwpAQCAtMTE5NSw3
ICsxMTk1LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAg
IH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVsZXZhbnRMZW5ndGg7IGkrKykKLSAg
ICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRleGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUo
dm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CisgICAgICAgIENvbnRpZ3VvdXNU
eXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRh
dGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CiAgICAgCiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cG9w
VGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiB9CkBAIC0xMjA0LDcgKzEyMDQsNyBAQCB2b2lkIEpT
QXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRl
eGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNz
OgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOgogICAgICAgICByZXR1cm47CkBAIC0xMzM2
LDExICsxMzM2LDExIEBAIHN0cnVjdCBBVkxUcmVlQWJzdHJhY3RvckZvckFycmF5Q29tcGFyZSAK
ICAgICBzdGF0aWMgaGFuZGxlIG51bGwoKSB7IHJldHVybiAweDdGRkZGRkZGOyB9CiB9OwogCi10
ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBl
IGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBD
YWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgp
KTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlwZSgpKTsKICAg
ICAKICAgICAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBj
b21wYXJlIGZ1bmN0aW9uIG9yIGluIHRvTnVtYmVyLgogICAgICAgICAKQEAgLTEzNTAsNyArMTM1
MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAo
bV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSByZWxldmFudExlbmd0aDxpbmRleGluZ1R5
cGU+KCk7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFy
cmF5SW5kZXhpbmdUeXBlPigpOwogICAgIHVuc2lnbmVkIG5vZGVDb3VudCA9IHVzZWRWZWN0b3JM
ZW5ndGg7CiAgICAgICAgIAogICAgIGlmICghbm9kZUNvdW50KQpAQCAtMTQxNywxNCArMTQxNywx
NCBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZWxlbWVudHNUb0V4
dHJhY3RUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52
ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkg
PT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlX
aXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtp
XSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0ZXJdLnZhbHVlLmFzTnVtYmVyKCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5zZXQodm0s
IHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0ZXJdLnZhbHVlKTsKICAgICAgICAg
KytpdGVyOwogICAgIH0KICAgICAvLyBQdXQgdW5kZWZpbmVkIHZhbHVlcyBiYWNrIGluLgotICAg
IHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdp
dGhEb3VibGU6CiAgICAgICAgIEFTU0VSVChlbGVtZW50c1RvRXh0cmFjdFRocmVzaG9sZCA9PSB1
bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZCk7CkBAIC0xNDQwLDEzICsxNDQwLDEzIEBAIHZvaWQg
SlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICAvLyBFbnN1cmUgdGhhdCB1
bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHplcm9lZCBvdXQuCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQ7IGkgPCBjbGVhckVsZW1lbnRzVGhy
ZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVu
Z3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5
V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJs
ZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFO
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhpbmdEYXRhKClbaV0uY2xl
YXIoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IG5ld1VzZWRW
ZWN0b3JMZW5ndGg7CiB9CiAKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIHZvaWQgSlNBcnJheTo6c29y
dChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdN
b2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4Niw3ICsx
NDg2LDcgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlzdChFeGVjU3RhdGUqIGV4ZQogICAgIHVu
c2lnbmVkIHZlY3RvckVuZDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvcjsKICAg
ICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0Fy
Z3VtZW50cyhFeGVjU3RhdGUqCiAgICAgdW5zaWduZWQgdmVjdG9yRW5kOwogICAgIAogICAgIEFT
U0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkpOwotICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE2MDMsNDAgKzE2
MDMsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAg
ICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGdldChleGVjLCBpKSk7CiB9CiAKLXRlbXBsYXRl
PEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJ
bmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkJiBu
dW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZhbnRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFp
blNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09
IGluZGV4aW5nVHlwZSgpKTsKIAotICAgIHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxl
dmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7CisgICAgdW5zaWduZWQgbXlSZWxldmFudExlbmd0
aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhpbmdUeXBlPigpOwogICAgIAogICAgIG51bURl
ZmluZWQgPSAwOwogICAgIHVuc2lnbmVkIG51bVVuZGVmaW5lZCA9IDA7CiAgICAgICAgIAogICAg
IGZvciAoOyBudW1EZWZpbmVkIDwgbXlSZWxldmFudExlbmd0aDsgKytudW1EZWZpbmVkKSB7CiAg
ICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgeworICAgICAgICBp
ZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKICAgICAgICAgICAgIEpT
VmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtudW1EZWZpbmVkXS5nZXQo
KTsKICAgICAgICAgICAgIGlmICghdikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAg
ICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAg
ICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZF07
CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdE
YXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkXS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2
ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW251bURlZmluZWRdLmdldCgpOwog
ICAgICAgICBpZiAoIXYgfHwgdi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbXlS
ZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQz
MikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsK
ICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtp
XS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5z
aWduZWQKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtudW1EZWZp
bmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkg
eworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAg
ICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07
CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MTY1MywyMyArMTY1MywyMyBAQCB2b2lkIEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2ln
bmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW251bURlZmlu
ZWQrK10gPSB2OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgSlNW
YWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtpXS5nZXQoKTsKKyAgICAgICAg
SlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmdldCgpOwog
ICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYgKHYuaXNVbmRlZmluZWQoKSkKICAgICAg
ICAgICAgICAgICArK251bVVuZGVmaW5lZDsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW251bURlZmluZWQr
K10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAgICAgICAgICAgICAgICBpbmRleGluZ0Rh
dGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgICAgICAKICAgICBu
ZXdSZWxldmFudExlbmd0aCA9IG51bURlZmluZWQgKyBudW1VbmRlZmluZWQ7CiAgICAgCi0gICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3Jh
Z2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAgICBSRUxFQVNFX0FTU0VSVCghYXJyYXlTdG9y
YWdlKCktPm1fc3BhcnNlTWFwKTsKICAgICAKLSAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgewor
ICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMy
OgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChudW1E
ZWZpbmVkID09IG5ld1JlbGV2YW50TGVuZ3RoKTsKQEAgLTE2NzgsMTkgKzE2NzgsMTkgQEAgdm9p
ZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBuZXdSZWxldmFudExlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgo
KSk7Ci0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW2ldLnNldFVuZGVm
aW5lZCgpOworICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ld
LnNldFVuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBuZXdSZWxldmFudExlbmd0aDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7
ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7
Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBp
ZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgbV9i
dXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbaV0uY2xlYXIoKTsKKyAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5jbGVhcigpOwogICAg
IH0KIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKSkKKyAgICBpZiAoaGFz
QXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCkt
Pm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdSZWxldmFudExlbmd0aDsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitDT01QSUxFX0FTU0VSVChz
aXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0X3QpLCBqc2NlbGxfaXNfZWlnaHRfYnl0ZXMp
OwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEpTQ2VsbCk7CiAKIHZv
aWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAog
I2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNp
bmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAt
OTIsOSArOTQsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KikgY29uc3Q7CiAgICAgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNU
eXBlIHR5cGUoKSBjb25zdDsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdDsKICAgICB2b2lkIHNldFN0cnVjdHVy
ZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0
dXJlLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlE
ID0gMDsgfQogCiAgICAgY29uc3QgY2hhciogY2xhc3NOYW1lKCk7CiAKQEAgLTEzNSwyMCArMTM5
LDI2IEBAIHB1YmxpYzoKIAogICAgIEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZz
ZXQoKQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKTsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlSUQpOwogICAgIH0K
IAotICAgIHZvaWQqIHN0cnVjdHVyZUFkZHJlc3MoKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlw
ZUluZm9GbGFnc09mZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlOwor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9mbGFncyk7CiAgICAgfQot
ICAgICAgICAKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFs
aWRhdGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsg
fQotI2VuZGlmCi0gICAgICAgIAorCisgICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVP
ZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1f
dHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1faW5kZXhp
bmdUeXBlKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRB
cnJheVN0b3JhZ2VUeXBlID0gTm90VHlwZWRBcnJheTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDgg
KzE4MCwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9zdHJ1Y3R1cmU7CisKKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4
aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZv
OjpJbmxpbmVUeXBlRmxhZ3MgbV9mbGFnczsKKyAgICB1aW50OF90IG1fdW51c2VkOwogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDggKzQyLDExIEBAIGlubGluZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vh
cmx5Q2VsbFQKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CiAKLWlubGlu
ZSBKU0NlbGw6OkpTQ2VsbChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogbV9z
dHJ1Y3R1cmUodm0sIHRoaXMsIHN0cnVjdHVyZSkKK2lubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogbV9zdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUtPmlk
KCkpCisgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQorICAg
ICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpCisgICAgLCBtX2ZsYWdzKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkKIHsKICAgICBBU1NFUlQoIWlz
Q29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkBAIC01Niw3ICs1OSw3IEBAIGlubGluZSB2b2lkIEpT
Q2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsK
ICNlbmRpZgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJl
SUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxsVGFnKQpAQCAtNjQsMjMgKzY3LDQz
IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKICAgICBBU1NFUlQodm0uaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAg
ICAgdm0uc2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCk7Ci0gICAgaWYgKHN0cnVjdHVyZSkK
KyAgICBpZiAoc3RydWN0dXJlKSB7CisjZW5kaWYKKyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0
cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpOworICAgICAgICBtX3R5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
OworICAgICAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFn
cygpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHZtKTsKICNlbmRpZgotICAgICAgICBtX3N0cnVjdHVyZS5zZXRFYXJseVZhbHVlKHZt
LCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25z
IHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwg
IXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlSUQgfHwgIXZt
LnN0cnVjdHVyZVN0cnVjdHVyZSk7Cit9CisKK2lubGluZSBKU1R5cGUgSlNDZWxsOjp0eXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitpbmxpbmUgSW5kZXhpbmdUeXBlIEpT
Q2VsbDo6aW5kZXhpbmdUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmRleGluZ1R5cGU7
CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgcmV0dXJuIEhlYXA6OmhlYXAodGhpcykt
PnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lk
IEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxsKTsKIAotICAgIHZpc2l0b3Iu
YXBwZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7CisgICAgLy8gRklYTUU6IEl0J3Mgc2lsbHkgYW5k
IHNvbWV3aGF0IGRhbmdlcm91cyB0byBoYXZlIHRvIGRvIHRoaXMgdG8gc2F0aXNmeSBTbG90Vmlz
aXRvci4KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOworICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZzdHJ1Y3R1cmUpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpAQCAtMTE2LDM3ICsxMzksNDEgQEAgaW5saW5lIGJvb2wgaXNaYXBw
ZWQoY29uc3QgSlNDZWxsKiBjZWxsKQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzT2JqZWN0KCk7CisgICAgcmV0dXJu
IFR5cGVJbmZvOjppc09iamVjdChtX3R5cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6Omlz
U3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpID09IFN0cmluZ1R5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQog
CiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEdldHRlclNldHRlclR5cGU7Cisg
ICAgcmV0dXJuIG1fdHlwZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBK
U0NlbGw6OmlzUHJveHkoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gUHJveHlUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gUHJveHlUeXBl
OwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3Jh
cHBlclR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOwogfQog
CiBpbmxpbmUgdm9pZCBKU0NlbGw6OnNldFN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbigpID09IHRoaXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4oKSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9z
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKLSAgICBBU1NFUlQoIW1fc3RydWN0dXJlCi0gICAgICAg
IHx8IG1fc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRl
ZCgpCi0gICAgICAgIHx8IG1fc3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZSk7Ci0gICAgbV9z
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpID09IHRoaXMtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSk7CisgICAgQVNT
RVJUKCF0aGlzLT5zdHJ1Y3R1cmUoKQorICAgICAgICB8fCB0aGlzLT5zdHJ1Y3R1cmUoKS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQorICAgICAgICB8fCBIZWFw
OjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZS0+aWQoKSkgPT0g
c3RydWN0dXJlKTsKKyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1cmUpOwor
ICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgbV9mbGFncyA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyAgICBtX3R5cGUgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKTsKIH0KIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1l
dGhvZFRhYmxlRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdApAQCAtMTU2LDEwICsxODMsMTEgQEAgaW5s
aW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxpbmUgY29uc3QgTWV0
aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAogewotICAgIGlmIChTdHJ1Y3R1
cmUqIHJvb3RTdHJ1Y3R1cmUgPSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkpCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoU3RydWN0dXJlKiBy
b290U3RydWN0dXJlID0gc3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQocm9vdFN0cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKLSAg
ICByZXR1cm4gJmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKKyAgICByZXR1cm4gJnN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6Omlu
aGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKQEAgLTE3MywxMCArMjAxLDExIEBA
IGlubGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3MKIC8vIGNhc2UgYnkgY2hl
Y2tpbmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4K
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkpIHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBs
KCktPmhhc0hhc2goKQotICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgbmFtZSkpCi0gICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQo
ZXhlYy0+dm0oKSwgbmFtZSk7CisgICAgICAgICAgICA/IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPnZt
KCksIElkZW50aWZpZXIoZXhlYywgbmFtZSkpCisgICAgICAgICAgICA6IHN0cnVjdHVyZS0+Z2V0
KGV4ZWMtPnZtKCksIG5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9m
ZnNldCktPmdldCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkocmV2aXNpb24gMTU4MzM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDcgQEAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlND
ZWxsOjpjbGFzc0luZgogewogICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRl
c3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygp
OwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZh
bGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fc3RydWN0dXJl
LT5jbGFzc0luZm8oKTsKLSNlbmRpZgorICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZv
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCAr
NTcsOSBAQCBzdGF0aWMgdW5zaWduZWQgbGFzdEFycmF5U2l6ZSA9IDA7CiAKIEpTQ2VsbCogZ2V0
Q2FsbGFibGVPYmplY3RTbG93KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOwotICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxsLT50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpCiAgICAgICAgIHJldHVybiBjZWxsOwotICAgIGlmIChzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKKyAgICBpZiAo
Y2VsbC0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5j
dGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAgcmV0dXJuIDA7CiB9CkBA
IC0yNDgsMTEgKzI0NywxMiBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsCiAgICAgCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKTsK
ICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAg
IGlmIChidXR0ZXJmbHkpCi0gICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0
b3IsIGJ1dHRlcmZseSwgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKSk7
CisgICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwg
c3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOwogCi0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemUoKTsKKyAgICBzaXplX3Qgc3RvcmFn
ZVNpemUgPSBzdHJ1Y3R1cmUtPmlubGluZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVl
cyh0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKIAogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4CiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCiAgICAgICAgIHJl
dHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgc2xvdCk7CiAgICAgCi0gICAg
c3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBz
d2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktf
SU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICBicmVhazsKQEAgLTQxNiw3ICs0MTYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3dp
dGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKQEAgLTU2MCw3ICs1NjAsNyBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAKIHZvaWQgSlNPYmpl
Y3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZShWTSYgdm0pCiB7Ci0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVT
OgpAQCAtNTk1LDEzICs1OTUsMTQgQEAgdm9pZCBKU09iamVjdDo6bm90aWZ5UHJlc2VuY2VPZklu
ZGV4ZWRBYwogQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdl
KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUpCiB7CiAgICAgQVNT
RVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUg
PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhl
ZFByb3BlcnRpZXMob2xkVHlwZSkpOwotICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm5lZWRzU2xv
d1B1dEluZGV4aW5nKCkpOworICAgIEFTU0VSVCghc3RydWN0dXJlLT5uZWVkc1Nsb3dQdXRJbmRl
eGluZygpKTsKICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoLCBCQVNFX1ZFQ1RPUl9MRU4pOwog
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVPckdyb3dBcnJh
eVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseSwgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCisgICAgICAgIG1fYnV0dGVy
Zmx5LCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCks
IGZhbHNlLCAwLAogICAgICAgICBlbGVtZW50U2l6ZSAqIHZlY3Rvckxlbmd0aCk7CiAgICAgbmV3
QnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNl
dFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOwpAQCAtNjQ5LDEwICs2NTAsMTEgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogQXJyYXlTdG9yYWdlKiBKU09iamVj
dDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEluZGV4
aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgSW5kZXhpbmdUeXBlIG9s
ZFR5cGUgPSBpbmRleGluZ1R5cGUoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9sZFR5cGUsICFoYXNJ
bmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkg
PSBCdXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIG1fYnV0dGVyZmx5
LCB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwKKyAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIEFycmF5U3Rv
cmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0
ZXJmbHkpOwogCkBAIC02NjIsNyArNjY0LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3Jl
YXRlQXJyYXlTdG9yYQogICAgIHJlc3VsdC0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKICAgICByZXN1
bHQtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSAwOwogICAgIHJlc3VsdC0+bV9pbmRleEJpYXMgPSAw
OwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9y
YWdlVHJhbnNpdGlvbigpKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+c3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJm
bHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtNjc0LDE0ICs2NzYsMTQgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlSW5p
dGlhbEFycgogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0ludDMyKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkp
KTsKICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVJbnQzMikpOwogICAgIHJldHVybiBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKCk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpj
b252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lk
ZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRl
ZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtpXSA9IFFOYU47CkBAIC02OTIsMTYgKzY5NCwxNyBAQCBDb250aWd1b3VzRG91
YmxlcyBKU09iamVjdDo6Y29udmVydFVuZGVjCiAKIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVj
dDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhh
c1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFz
VW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGln
dW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCiBBcnJh
eVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0
Q29weWluZ0VsZW1lbnRzKFZNJiB2bSwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogeworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgdW5zaWduZWQgcHVi
bGljTGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAgIHVuc2lnbmVkIHBy
b3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAgICB1
bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpOworICAg
IHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlLT5vdXRPZkxpbmVTaXpl
KCk7CiAgICAgCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoCiAgICAgICAgIHZtLCB0aGlzLCAwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0
cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmVlZGVkTGVuZ3RoKSk7CkBAIC03MjQsNyArNzI3
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9u
UHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsK
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY29uc3Ry
dWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVk
TGVuZ3RoKTsKICAgICAvLyBObyBuZWVkIHRvIGNvcHkgZWxlbWVudHMuCkBAIC03NDYsNyArNzQ5
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZAogCiBDb250aWd1
b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Eb3VibGUoVk0mIHZtKQogewotICAg
IEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NF
UlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtp
XTsKQEAgLTc2Niw3ICs3NjksNyBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVy
dEludDMyCiAKIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Db250
aWd1b3VzKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAg
CiAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRl
cmZseS0+Y29udGlndW91cygpOwpAQCAtNzc0LDcgKzc3Nyw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVl
cyBKU09iamVjdDo6Y29udmVydEludDMKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dEludDMyVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNp
dGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdU
eXBlKCkpKTsKICAgICAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQXJyYXlT
dG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91
dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKQEAgLTgwNCw3ICs4MDcsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiB0ZW1wbGF0ZTxKU09iamVj
dDo6RG91YmxlVG9Db250aWd1b3VzTW9kZSBtb2RlPgogQ29udGlndW91c0pTVmFsdWVzIEpTT2Jq
ZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNT
RVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQo
aGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIGRvdWJsZSogY3Vy
cmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwpAQCAtODQ0LDcgKzg0
Nyw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6cmFnZUNvbnZlcnQKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblBy
b3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5
cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENv
bnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0
aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBp
LS07KSB7CkBAIC04NzMsNyArODc2LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dERvdWJsZVRvQQogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNp
Z25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAg
IEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAg
IEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlT
dG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91
dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTk1Miw3ICs5NTUsNyBA
QCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmVuc3VyZUludDMyCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMoKTsKQEAgLTk3Niw3ICs5NzksNyBA
QCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlRG91YmxlCiB7CiAgICAgQVNTRVJU
KGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAg
ICAgICAgICAgIHJldHVybiBDb250aWd1b3VzRG91YmxlcygpOwpAQCAtMTAwMiw3ICsxMDA1LDcg
QEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1cmVDb250aQogewogICAgIEFTU0VS
VChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hv
dWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CkBAIC0xMDQyLDcgKzEwNDUs
NyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhCiB7CiAgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdT
aG91bGRCZVNwYXJzZSgpKSkKICAgICAgICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VF
eGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0pOwpAQCAtMTA3Niw3ICsxMDc5
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogCiBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25h
cnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwg
MCwgMCk7CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNl
SW5kZXhNYXAodm0pOwpAQCAtMTEwNyw3ICsxMTEwLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVj
dDo6ZW5zdXJlQXJyYXlTdG9yYQogCiB2b2lkIEpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJh
eVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9y
YWdlKHZtLCBBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOwogICAgICAgICBicmVhazsKQEAg
LTExNTQsMTAgKzExNTcsMTAgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwg
SlNWYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmICghaGFzSW5kZXhlZFBy
b3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoIWhhc0luZGV4
ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGlmIChzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAg
aWYgKHNob3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgc3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKHZtKTsKQEAgLTEyMDYsMTAgKzEy
MDksMTEgQEAgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcgogICAgIGlm
IChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KQogICAgICAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6YXR0cmlidXRlQ2hhbmdlVHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIFJl
YWRPbmx5KQotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKKyAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygp
OwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJvcGVy
dHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CisgICAgc3RydWN0
dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCiBib29sIEpTT2JqZWN0OjpoYXNQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBA
IC0xMjcwLDcgKzEyNzQsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
SlNDCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCiAgICAgICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICBj
YXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTQ1NCw3ICsxNDU4LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iagogICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRl
bnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2ll
bnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKICAgICAv
LyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBmb3Ig
UHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0xNjA0LDE5ICsxNjA4LDIwIEBAIHZv
aWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGUKIAogYm9vbCBKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoIWlz
VmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKKyAg
ICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dERpcmVjdFVuZGVmaW5lZChv
ZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CiAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7CkBAIC0xODQ1LDcgKzE4NTAs
NyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CisgICAgQVNTRVJU
KChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsK
ICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgCiAgICAgLy8gRm9y
IHVzIHRvIGdldCBoZXJlLCB0aGUgaW5kZXggaXMgZWl0aGVyIGdyZWF0ZXIgdGhhbiB0aGUgcHVi
bGljIGxlbmd0aCwgb3IgZ3JlYXRlciB0aGFuCkBAIC0xOTc0LDcgKzE5NzksNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgLy8gaSBzaG91bGQgYmUgYSB2
YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9yLgog
ICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4
aW5nU2hvdWxkQmVTcGFyc2UoKSkgewogICAgICAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0yMDQyLDcgKzIwNDcsNyBAQCBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICAKICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFycmF5IGluZGV4IHRoYXQgaXMgb3V0
c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCi0gICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdl
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGFycmF5U3RvcmFnZSgpID09IHN0b3JhZ2Up
OwogICAgIEFTU0VSVChpID49IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpIHx8IGF0dHJpYnV0ZXMp
OwogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CkBAIC0yMTI0LDcgKzIxMjksNyBA
QCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgaWYgKGF0dHJp
YnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvcikpCiAgICAgICAgIG5vdGlmeVByZXNlbmNlT2ZJ
bmRleGVkQWNjZXNzb3JzKHZtKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNw
YXJzZSgpIHx8IGF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRl
eEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0yMjQ4LDcgKzIyNTMsNyBA
QCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWCiAgICAgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoOwogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICAKLSAgICBpZiAoaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgeworICAgIGlmICho
YXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgdmVjdG9yTGVu
Z3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgICAgICBsZW5ndGggPSBtX2J1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKQEAgLTIyODcsNyArMjI5Miw3
IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1lbnRzKEJ1dHRlcmYKIAogdW5zaWduZWQg
SlNPYmplY3Q6OmNvdW50RWxlbWVudHMoKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2Ug
QUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzI2LDEwICsyMzMxLDExIEBAIGJvb2wg
SlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdWZWN0
b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgobmV3TGVuZ3RoKTsKIAogICAgIC8vIEZhc3Qg
Y2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJbiB0aGVzZSBjYXNlcyBhIHJlYWxsb2Mg
bWFrZXMgc2Vuc2UuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
KTsKICAgICBpZiAoTElLRUxZKCFpbmRleEJpYXMpKSB7CiAgICAgICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5i
dXR0ZXJmbHkoKS0+Z3Jvd0FycmF5UmlnaHQoCi0gICAgICAgICAgICB2bSwgdGhpcywgc3RydWN0
dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLAorICAgICAgICAg
ICAgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0
cnVlLAogICAgICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksIEFy
cmF5U3RvcmFnZTo6c2l6ZUZvcihuZXdWZWN0b3JMZW5ndGgpKTsKICAgICAgICAgaWYgKCFuZXdC
dXR0ZXJmbHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzQzLDcgKzIzNDksNyBA
QCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgdW5zaWduZWQg
bmV3SW5kZXhCaWFzID0gc3RkOjptaW4oaW5kZXhCaWFzID4+IDEsIE1BWF9TVE9SQUdFX1ZFQ1RP
Ul9MRU5HVEggLSBuZXdWZWN0b3JMZW5ndGgpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5
ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6ZUFycmF5KAogICAgICAgICB2bSwgdGhpcywK
LSAgICAgICAgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIEFycmF5U3Rv
cmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLAorICAgICAgICBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLAog
ICAgICAgICBuZXdJbmRleEJpYXMsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihuZXdWZWN0
b3JMZW5ndGgpKTsKICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjM1Nyw3ICsyMzYzLDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5n
dGgoVk0mIAogdm9pZCBKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyhWTSYgdm0sIHVuc2lnbmVk
IGxlbmd0aCkKIHsKICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZX0lOREVYKTsKLSAgICBB
U1NFUlQoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0lu
dDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkpOworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNJ
bnQzMihpbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNV
bmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICBBU1NFUlQobGVuZ3RoID4gbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAKICAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGgg
PSBzdGQ6Om1pbigKQEAgLTIzNjUsMTEgKzIzNzEsMTIgQEAgdm9pZCBKU09iamVjdDo6ZW5zdXJl
TGVuZ3RoU2xvdyhWTSYgdm0sIAogICAgICAgICBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKTsK
ICAgICB1bnNpZ25lZCBvbGRWZWN0b3JMZW5ndGggPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCk7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRlcmZseS0+
Z3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCisgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1
cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAgb2xkVmVj
dG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwKICAgICAgICAgbmV3VmVjdG9yTGVu
Z3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgaWYgKGhhc0RvdWJsZShzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0RvdWJsZShpbmRleGluZ1R5cGUo
KSkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkVmVjdG9yTGVuZ3RoOyBpIDwgbmV3
VmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpLmRhdGEoKVtpXSA9IFFOYU47CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBp
ZiAodmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlv
blR5cGUpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIDA7CiB9
CkBAIC0xMzIsMTQgKzEzMiwxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxl
bmd0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3Bl
cnRpZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfQogICAgICAgICAKICAgICB1
bnNpZ25lZCBnZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVk
UHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhh
c0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KQEAg
LTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjYW5HZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwOSw3ICsy
MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgZ2V0SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCkuYXNJbnQzMigpKTsKICAgICAgICAgY2Fz
ZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkp
CiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5L
X0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDEsNyArMzAxLDcgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclB1dERpcmVjdCh1bnNpZ25lZCBpKQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAg
ICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxM
X0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CkBA
IC0zNjksNyArMzY5LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICB2b2lkIGluaXRpYWxpemVJ
bmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUgdikKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7
CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb1VuZGVjaWRlZCh2bSwgaSwgdik7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTQxOCw3ICs0MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAg
IGJvb2wgaGFzU3BhcnNlTWFwKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CkBAIC00MzUsNyArNDM1LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGlu
U3BhcnNlSW5kZXhpbmdNb2RlKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CkBAIC00OTEsMzEgKzQ5MSwzNSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBnZXQgZnVu
Y3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgogICAgIEpTVmFsdWUgZ2V0RGly
ZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKICAgICB7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5
TmFtZSk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNh
cGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlu
bGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQg
PyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGdl
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKSBjb25zdAogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBz
dHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Cisg
ICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsK
ICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0KG9mZnNl
dCkgOiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGlyZWN0T2Zm
c2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5
KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNh
cGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIH0KIAogICAgIFByb3BlcnR5
T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsK
LSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9m
ZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpYyk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKQEAgLTY0MSw3ICs2NDUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGlndW91cywgYXJyYXkgc3RvcmFnZSkuCiAgICAgQ29u
dGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlm
IChMSUtFTFkoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0
dXJuIGVuc3VyZUludDMyU2xvdyh2bSk7CkBAIC02NTMsNyArNjU3LDcgQEAgcHVibGljOgogICAg
IC8vIG9yIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNEb3VibGVzIGVuc3VyZURvdWJs
ZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0RvdWJsZShzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNEb3VibGUoaW5kZXhp
bmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVEb3VibGVTbG93KHZt
KTsKQEAgLTY2Myw3ICs2NjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gaW5kZXhpbmcgc2hvdWxkIGJl
IHNwYXJzZSBvciBiZWNhdXNlIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLgogICAgIENvbnRpZ3Vv
dXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAg
ICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAgICAgIAogICAgICAg
ICByZXR1cm4gZW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAtNjc0LDcgKzY3OCw3IEBAIHB1
YmxpYzoKICAgICAvLyBhdHRlbXB0cyB0byBjb252ZXJ0IGVhY2ggZG91YmxlIHRvIGFuIGludDMy
LgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyByYWdlRW5zdXJlQ29udGlndW91cyhWTSYgdm0pCiAg
ICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhpbmRleGluZ1R5
cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIHJhZ2VFbnN1cmVDb250aWd1b3VzU2xvdyh2bSk7
CkBAIC02ODYsNyArNjkwLDcgQEAgcHVibGljOgogICAgIC8vIGFscmVhZHkuCiAgICAgQXJyYXlT
dG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJ
S0VMWShoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAg
ICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICAgICAgCiAg
ICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VTbG93KHZtKTsKQEAgLTczNCw3ICs3Mzgs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3RvcmFnZS4gVGhpcyB3aWxsIGFzc2VydCBvdGhlcndp
c2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2UoKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAg
ICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpOwogICAgICAgICByZXR1
cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgIH0KICAgICAgICAgCkBAIC03NDIs
NyArNzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIG9iamVjdCBpcyBpbiBhIG1vZGUgd2hlcmUg
aXQgaGFzIGFycmF5IHN0b3JhZ2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2VPck51
bGwoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9B
UlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICAKQEAgLTgwOCw3ICs4MTIsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVMZW5ndGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZX0lOREVYKTsKLSAg
ICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8
fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBl
KCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoaW5kZXhpbmdUeXBl
KCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgIGlmIChtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkgPCBsZW5ndGgpCiAgICAgICAgICAg
ICBlbnN1cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwpAQCAtODQ2LDcgKzg1MCw3IEBAIHByb3Rl
Y3RlZDoKIAogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjdXJyZW50SW5kZXhpbmdEYXRhKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKQEAgLTg2Myw3
ICs4NjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZSBnZXRIb2x5SW5kZXhRdWlja2x5KHVu
c2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSk7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5U
MzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5n
ZXQoKTsKQEAgLTkwMyw3ICs5MDcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB1bnNpZ25lZCBjdXJy
ZW50UmVsZXZhbnRMZW5ndGgoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfRE9V
QkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5H
X1RZUEVTOgpAQCAtOTc1LDYgKzk3OSwxMSBAQCBwcml2YXRlOgogICAgIAogcHJvdGVjdGVkOgog
ICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CisKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorcHJp
dmF0ZToKKyAgICB1aW50MzJfdCBtX3BhZGRpbmc7CisjZW5kaWYKIH07CiAKIC8vIEpTTm9uRmlu
YWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3Rv
cmFnZSwKQEAgLTExMDEsMzUgKzExMTAsMzUgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBj
b25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xv
YmFsT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CiB9
CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID49IFZhcmlhYmxlT2JqZWN0
VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKIH0KIAogCiBp
bmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdGF0aWNTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
SlNUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBl
IHR5cGUgPSB0aGlzLT50eXBlKCk7CiAgICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNjb3BlT2JqZWN0
VHlwZSB8fCB0eXBlID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiAKIGlubGluZSBib29s
IEpTT2JqZWN0Ojppc05hbWVTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOworICAgIHJl
dHVybiB0eXBlKCkgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNP
YmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKKyAgICByZXR1
cm4gdHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkudHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOworICAgIHJldHVybiB0eXBl
KCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRT
dHJ1Y3R1cmVBbmRCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVy
Zmx5KiBidXR0ZXJmbHkpCkBAIC0xMTkxLDEwICsxMjAwLDExIEBAIEFMV0FZU19JTkxJTkUgYm9v
bCBKU09iamVjdDo6aW5saW5lR2V0T3cKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAg
IEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmdldChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwogICAgIGlmIChMSUtFTFkoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSkgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0RGlyZWN0KG9mZnNldCk7Ci0g
ICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIHZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkpCisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAg
ZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCB2YWx1ZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBhdHRyaWJ1dGVz
LCB2YWx1ZSwgb2Zmc2V0KTsKQEAgLTEyNzMsMTUgKzEyODMsMTYgQEAgaW5saW5lIGJvb2wgSlNP
YmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkg
fHwgSGVhcDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgQVNTRVJUKHBy
b3BlcnR5TmFtZS5hc0luZGV4KCkgPT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKIAotICAg
IGlmIChzdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0Nl
bGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVz
LCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9m
ZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMg
ZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3Ig
dGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAg
aWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+ZGVzcGVj
aWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAg
IHN0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1
dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzAy
LDMzICsxMzEzLDMzIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgK
IAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSog
bmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0
V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBn
cm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCks
IHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0g
ICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAg
ICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkp
OworICAgICAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2UoKSkK
KyAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZS0+c3VnZ2VzdGVkTmV3T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbik7CisgICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7
Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAgICAg
cHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQgb24g
c2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0aW9u
KQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAgICAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAgc3RydWN0dXJlKCktPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUtPnNl
dENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVudENhcGFj
aXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgaWYgKFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0g
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIGlmIChTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0KSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChjdXJy
ZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAgICAg
ICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0
eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgaWYgKGN1cnJlbnRD
YXBhY2l0eSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAgICAg
ICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFjaXR5
LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIHZhbGlkYXRl
T2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7Ci0gICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3RydWN0dXJl
LCBuZXdCdXR0ZXJmbHkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1ZhbGlkT2Zm
c2V0KG9mZnNldCkpOworICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0
cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZh
bHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMgd2l0
aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAgIC8v
IHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCkBAIC0xMzM5LDcgKzEz
NTAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICB1
bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1
bmN0aW9uOwotICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwg
Y3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3Vy
cmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkg
ewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMg
JiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNjAsNyArMTM3MSw3
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2UgKDIp
IERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAgICAgIHNldFN0cnVjdHVy
ZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlO
YW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRv
IHRoZSBwdXQsIHJldHVybi4KQEAgLTEzNzIsNyArMTM4Myw3IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYg
IWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCB0aGlzLT5z
dHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBv
ZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0KCkpOwogICAgIAogICAgIHZh
bGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNl
dChvZmZzZXQpKTsKQEAgLTE0MzYsMTAgKzE0NDcsMTEgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBB
U1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3Ip
KTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgIGlmIChz
dHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAgICAgIG5ld0J1
dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBh
Y2l0eSgpKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRD
YWxsYWJsZU9iamVjdCh2YWx1ZSkpOwotICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwg
c3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxsR3Jvd091dE9mTGlu
ZVN0b3JhZ2UoKSkKKyAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uo
dm0sIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRO
ZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CisgICAgc2V0U3RydWN0
dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcHV0RGly
ZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24g
MTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENo
aWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtNzcsNiArNzcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1l
QXJyYXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoRXhlY1N0CiBKU09iamVjdCogSlNTY29w
ZTo6b2JqZWN0QXRTY29wZShKU1Njb3BlKiBzY29wZSkKIHsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gc2NvcGU7Ci0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
ID09IFdpdGhTY29wZVR5cGUpCisgICAgaWYgKG9iamVjdC0+dHlwZSgpID09IFdpdGhTY29wZVR5
cGUpCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNXaXRoU2NvcGUqPihvYmplY3QpLT5vYmplY3Qo
KTsKIAogICAgIHJldHVybiBvYmplY3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8pLCBpbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTGVuZ3RoKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTU3RyaW5nLCBtX2xlbmd0
aCk7IH0KQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfTsKIAog
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7CisKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTVmFsdWU7CiAgICAgICAgICAgICAKICAgICAg
ICAgYm9vbCBpc1JvcGUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmlzTnVsbCgpOyB9CkBAIC00
OTcsNyArNDk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFzc0luZm8oKSA9PSBKU1N0cmluZzo6aW5mbygpOyB9
CisgICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxs
KCkgJiYgdi5hc0NlbGwoKS0+dHlwZSgpID09IFN0cmluZ1R5cGU7IH0KIAogICAgIC8vIC0tLSBK
U1ZhbHVlIGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCShyZXZpc2lvbiAxNTgzMzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBKU1R5cGUgewor
ZW51bSBKU1R5cGUgOiB1aW50OF90IHsKICAgICBVbnNwZWNpZmllZFR5cGUsCiAgICAgVW5kZWZp
bmVkVHlwZSwKICAgICBCb29sZWFuVHlwZSwKQEAgLTU1LDYgKzU1LDcgQEAgZW51bSBKU1R5cGUg
ewogICAgIEVycm9ySW5zdGFuY2VUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVU
eXBlLAorICAgIEFyZ3VtZW50c1R5cGUsCiAKICAgICBOYW1lU2NvcGVPYmplY3RUeXBlLAogICAg
IC8vIFZhcmlhYmxlT2JqZWN0VHlwZSBtdXN0IGJlIGxlc3MgdGhhbiBNT1NUIG9mIHRoZSB0eXBl
cyBvZiBpdHMgc3ViY2xhc3NlcyBhbmQgb25seSBpdHMgc3ViY2xhc3Nlcy4KQEAgLTY0LDYgKzY1
LDggQEAgZW51bSBKU1R5cGUgewogICAgIEFjdGl2YXRpb25PYmplY3RUeXBlLAogfTsKIAorQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEpTVHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCBzaXplb2ZfanN0
eXBlX2lzX29uZV9ieXRlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTU4
MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMTA7
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUhhc1JhcmVEYXRhID0gMSA8PCAx
MTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1vcnRhbCA9IDEgPDwg
MTI7CiAKICAgICBjbGFzcyBUeXBlSW5mbyB7CiAgICAgcHVibGljOgpAQCAtNjYsNyArNjcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIEpTVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5cGUpOyB9Ci0gICAgICAgIGJvb2wg
aXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPj0gT2JqZWN0VHlwZTsgfQorICAgICAg
ICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNPYmplY3QodHlwZSgpKTsgfQorICAg
ICAgICBzdGF0aWMgYm9vbCBpc09iamVjdChKU1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA+PSBP
YmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNGaW5hbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IHR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc051bWJlck9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJPYmplY3RUeXBlOyB9CiAgICAgICAg
IGJvb2wgaXNOYW1lKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IE5hbWVJbnN0YW5jZVR5cGU7
IH0KQEAgLTg0LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmcpOyB9CiAgICAgICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVy
dHlTbG90KCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9w
ZXJ0eVNsb3QpOyB9CiAgICAgICAgIGJvb2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7
IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBi
b29sIHN0cnVjdHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0
cnVjdHVyZUlzSW1tb3J0YWwpOyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09m
ZnNldCgpCiAgICAgICAgIHsKQEAgLTk1LDYgKzk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVJbmZvLCBtX3R5cGUpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdHlwZWRlZiB1aW50OF90IElubGluZVR5cGVGbGFnczsKKyAgICAgICAg
SW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFw
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERh
dGEuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TWFwRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyKCk7CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPGludDMyX3Q+IEluZGV4VHJhaXRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw3ICs4OSw3IEBAIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUKICAgICBpZiAoIXYuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCi0g
ICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBl
KCk7CisgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7CiAgICAgaWYgKHR5cGUg
PT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9i
amVjdFR5cGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTU4MzM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtMjAyLDYgKzIwMiw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKICNlbmRpZgogCitwcm90ZWN0ZWQ6Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKIHByaXZhdGU6CiAgICAgUHJvcGVydHlU
YWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgUHJvcGVydHlUYWJsZShW
TSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIDApLCBpbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwpAQCAtODUsNiArODUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJl
Z0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJpbmcpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzAs
NyArNzAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
IAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHVibGljOgogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSwxMyArMTU1LDE0
IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAKIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8s
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAg
IDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVj
dHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAg
LCBtX2luZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpCisgICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZv
KQogICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIGdsb2JhbE9iamVjdCwgV3JpdGVCYXJy
aWVyPEpTR2xvYmFsT2JqZWN0Pjo6TWF5QmVOdWxsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRo
aXMsIHByb3RvdHlwZSkKICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJh
bnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9pbmRl
eGluZ1R5cGUoaW5kZXhpbmdUeXBlKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBh
Y2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwg
bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0xODMsMTIgKzE4NCwxMyBAQCBjb25z
dCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTCiAKIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSkKICAgICA6IEpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbCkKKyAgICAsIG1fc3Ry
dWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAg
ICAsIG1faW5kZXhpbmdUeXBlKDApCisgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwpCiAgICAgLCBtX3Byb3Rv
dHlwZSh2bSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAgICAg
LCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBt
X29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAgLCBtX2luZGV4aW5nVHlwZSgwKQogICAgICwgbV9p
bmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtp
bmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTIwNSwxMiArMjA3
LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKIAogU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgIDogSlNDZWxsKHZtLCB2
bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlw
ZShwcmV2aW91cy0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKQorICAgICwgbV90eXBl
SW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50eXBlKCksIHByZXZpb3VzLT50eXBlSW5mbygpLmZs
YWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURhdGEpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhp
cywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlv
dXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFs
aXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlw
ZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCkudHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5m
bGFncygpICYgflN0cnVjdHVyZUhhc1JhcmVEYXRhKQotICAgICwgbV9pbmRleGluZ1R5cGUocHJl
dmlvdXMtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkKICAgICAsIG1faW5saW5lQ2Fw
YWNpdHkocHJldmlvdXMtPm1faW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5k
KHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCkBAIC0yMjMsNiArMjI2LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZt
LCBjb25zdCBTdHJ1YwogICAgICwgbV9kaWRUcmFuc2l0aW9uKHRydWUpCiAgICAgLCBtX3N0YXRp
Y0Z1bmN0aW9uUmVpZmllZChwcmV2aW91cy0+bV9zdGF0aWNGdW5jdGlvblJlaWZpZWQpCiB7Cisg
ICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwog
ICAgIGlmIChwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpICYmIHBy
ZXZpb3VzLT5yYXJlRGF0YSgpLT5uZWVkc0Nsb25pbmcoKSkKICAgICAgICAgY2xvbmVSYXJlRGF0
YUZyb20odm0sIHByZXZpb3VzKTsKICAgICBlbHNlIGlmIChwcmV2aW91cy0+cHJldmlvdXNJRCgp
KQpAQCAtMjMzLDYgKzIzNywxMyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0
IFN0cnVjCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgdGhpcywgcHJldmlvdXMtPm1f
Z2xvYmFsT2JqZWN0LmdldCgpKTsKIH0KIAorU3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3sKKyAg
ICBpZiAodHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpCisgICAgICAgIHJldHVybjsK
KyAgICBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZGVhbGxvY2F0ZUlEKHRo
aXMsIG1fc3RydWN0dXJlSUQpOworfQorCiB2b2lkIFN0cnVjdHVyZTo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCiB7CiAgICAgc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4oY2VsbCktPlN0cnVjdHVyZTo6
flN0cnVjdHVyZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyosIEluZGV4
aW5nVHlwZSA9IE5vbkFycmF5LCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSA9IDApOwogCisgICAg
flN0cnVjdHVyZSgpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiAgICAgewpAQCAtOTUsNiArOTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwdWJsaWM6
CisgICAgU3RydWN0dXJlSUQgaWQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZUlEOyB9CisK
ICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVydHlTbG90OjpDb250ZXh0ID0gUHV0UHJvcGVy
dHlTbG90OjpVbmtub3duQ29udGV4dCk7CkBAIC0zMDEsNiArMzA1LDE0IEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0lu
Zm87IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgLy8gV2UgbG9hZCBtX3N0cnVjdHVyZUlELCBtX2luZGV4aW5nVHlwZSwgYW5kIG1f
dHlwZUluZm8gaW4gYSBzaW5nbGUKKyAgICAgICAgLy8gNjQtYml0IGluc3RydWN0aW9uLCBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIHByb3Blcmx5IGFsaWduZWQuCisgICAgICAgIEFT
U0VSVChPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3N0cnVjdHVyZUlEKSA9PSA4KTsKKyAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fc3RydWN0dXJlSUQpOwor
ICAgIH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3Byb3RvdHlwZSk7CkBA
IC00NjksNyArNDgxLDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRy
YW5zaXRpb25MZW5ndGhGb3JOb25FdmFsUHV0QnlJZCA9IDUxMjsKIAogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwotICAgICAgICAK
KyAgICAKKyAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIHByb3Blcmx5IGFsaWduZWQgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgJ1N0cnVjdHVyZScKKyAgICAvLyBwYXJ0IG9mIHRoZSBvYmplY3QuCisg
ICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGlu
Z1R5cGU7CisgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKKwogICAgIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1f
cHJvdG90eXBlOwogICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluOwpAQCAtNDkzLDggKzUxMSw2IEBAIHByaXZhdGU6CiAgICAgLy8g
bV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCiAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAKLSAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwotICAgIEluZGV4
aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CiAg
ICAgCiAgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxNTgzMzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
LSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsgfQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNjQsNiArNjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkKICAgICAgICAgewog
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisKKyNpbmNsdWRlIDxs
aW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRh
YmxlKCkKKyAgICA6IG1fZmlyc3RGcmVlT2Zmc2V0KDApCisgICAgLCBtX3RhYmxlKG5ldyBTdHJ1
Y3R1cmVPck9mZnNldFtzX2luaXRpYWxTaXplXSkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9j
YXBhY2l0eShzX2luaXRpYWxTaXplKQoreworICAgIC8vIFdlIHByZS1hbGxvY2F0ZSB0aGUgZmly
c3Qgb2Zmc2V0IHNvIHRoYXQgdGhlIG51bGwgU3RydWN0dXJlCisgICAgLy8gY2FuIHN0aWxsIGJl
IHJlcHJlc2VudGVkIGFzIHRoZSBTdHJ1Y3R1cmVJRCAnMCcuCisgICAgYWxsb2NhdGVJRCgwKTsK
K30KKworU3RydWN0dXJlSURUYWJsZTo6flN0cnVjdHVyZUlEVGFibGUoKQoreworICAgIGRlbGV0
ZSBbXSBtX3RhYmxlOworfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZShzaXplX3Qg
bmV3Q2FwYWNpdHkpCit7CisgICAgLy8gQ3JlYXRlIHRoZSBuZXcgdGFibGUuCisgICAgU3RydWN0
dXJlT3JPZmZzZXQqIG5ld1RhYmxlID0gbmV3IFN0cnVjdHVyZU9yT2Zmc2V0W25ld0NhcGFjaXR5
XTsKKworICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBvbGQgdGFibGUgdG8gdGhlIG5l
dyB0YWJsZS4KKyAgICBtZW1jcHkobmV3VGFibGUsIG1fdGFibGUsIG1fY2FwYWNpdHkgKiBzaXpl
b2YoU3RydWN0dXJlT3JPZmZzZXQpKTsKKworICAgIC8vIFN0b3JlIGZlbmNlIHRvIG1ha2Ugc3Vy
ZSB3ZSd2ZSBjb3BpZWQgZXZlcnl0aGluZyBiZWZvcmUgZG9pbmcgdGhlIHN3YXAuCisgICAgV1RG
OjpzdG9yZVN0b3JlRmVuY2UoKTsKKworICAgIC8vIFN3YXAgdGhlIG9sZCBhbmQgbmV3IHRhYmxl
cy4KKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogb2xkVGFibGUgPSBtX3RhYmxlOworICAgIG1fdGFi
bGUgPSBuZXdUYWJsZTsKKworICAgIC8vIFB1dCB0aGUgb2xkIHRhYmxlIChub3cgbGFiZWxlZCBh
cyBuZXcpIGludG8gdGhlIGxpc3Qgb2Ygb2xkIHRhYmxlcy4KKyAgICBtX29sZFRhYmxlcy5hcHBl
bmQob2xkVGFibGUpOworCisgICAgLy8gVXBkYXRlIHRoZSBjYXBhY2l0eS4KKyAgICBtX2NhcGFj
aXR5ID0gbmV3Q2FwYWNpdHk7Cit9CisKK3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRU
YWJsZXMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29sZFRhYmxlcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgZGVsZXRlIFtdIG1fb2xkVGFibGVzW2ldOworICAgIG1fb2xkVGFi
bGVzLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRl
SUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAo
IW1fZmlyc3RGcmVlT2Zmc2V0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY2FwYWNpdHkg
PD0gVUlOVF9NQVgpOworICAgICAgICBpZiAobV9zaXplID09IG1fY2FwYWNpdHkpCisgICAgICAg
ICAgICByZXNpemUobV9jYXBhY2l0eSAqIDIpOworICAgICAgICBBU1NFUlQobV9zaXplIDwgbV9j
YXBhY2l0eSk7CisKKyAgICAgICAgU3RydWN0dXJlT3JPZmZzZXQgbmV3RW50cnk7CisgICAgICAg
IG5ld0VudHJ5LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKworICAgICAgICBTdHJ1Y3R1cmVJRCBy
ZXN1bHQgPSBtX3NpemU7CisgICAgICAgIG1fdGFibGVbcmVzdWx0XSA9IG5ld0VudHJ5OworICAg
ICAgICBtX3NpemUrKzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBTdHJ1
Y3R1cmVJRCByZXN1bHQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNl
dCA9IG1fdGFibGVbbV9maXJzdEZyZWVPZmZzZXRdLm9mZnNldDsKKyAgICBtX3RhYmxlW3Jlc3Vs
dF0uc3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAg
IHJldHVybiBzdHJ1Y3R1cmU7CisjZW5kaWYKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpk
ZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlE
KQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUkVMRUFTRV9BU1NFUlQobV90YWJsZVtzdHJ1
Y3R1cmVJRF0uc3RydWN0dXJlID09IHN0cnVjdHVyZSk7CisgICAgbV90YWJsZVtzdHJ1Y3R1cmVJ
RF0ub2Zmc2V0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9maXJzdEZyZWVPZmZzZXQgPSBz
dHJ1Y3R1cmVJRDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZSk7CisgICAgVU5V
U0VEX1BBUkFNKHN0cnVjdHVyZUlEKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU3RydWN0dXJlSURUYWJsZV9oCisjZGVmaW5lIFN0cnVjdHVyZUlEVGFibGVf
aAorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJ1Y3R1cmU7CisKKyNpZiBVU0UoSlNWQUxVRTY0
KQordHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJRDsKKyNlbHNlCit0eXBlZGVmIFN0cnVjdHVy
ZSogU3RydWN0dXJlSUQ7CisjZW5kaWYKKworY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7CisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1
cmVJRFRhYmxlKCk7CisgICAgflN0cnVjdHVyZUlEVGFibGUoKTsKKworICAgIHZvaWQqKiBiYXNl
KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxlKTsgfQorCisgICAg
U3RydWN0dXJlKiBnZXQoU3RydWN0dXJlSUQpOworICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVj
dHVyZSosIFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVy
ZSopOworCisgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpOworCitwcml2YXRlOgorICAgIHZvaWQg
cmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSk7CisgICAgCisgICAgdW5pb24gU3RydWN0dXJlT3JP
ZmZzZXQgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJl
SUQgb2Zmc2V0OworICAgIH07CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfaW5pdGlhbFNp
emUgPSAyNTY7CisKKyAgICBWZWN0b3I8U3RydWN0dXJlT3JPZmZzZXQqPiBtX29sZFRhYmxlczsK
KyAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBTdHJ1Y3R1cmVPck9mZnNldCog
bV90YWJsZTsKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX2NhcGFjaXR5OworfTsK
KworaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVyZUlEIHN0
cnVjdHVyZUlEKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIG1fdGFibGVbc3Ry
dWN0dXJlSURdLnN0cnVjdHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZUlEOworI2Vu
ZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3RydWN0dXJlSURUYWJs
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJ
KHJldmlzaW9uIDE1ODMzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw2ICs0ODcsOSBAQCBwdWJsaWM6CiAKICAg
ICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOworCiBwcml2YXRlOgogICAgIFNoYXJlZFN5bWJvbFRhYmxlKFZNJiB2bSkKICAg
ICAgICAgOiBKU0NlbGwodm0sIHZtLnNoYXJlZFN5bWJvbFRhYmxlU3RydWN0dXJlLmdldCgpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCShyZXZp
c2lvbiAxNTgzMzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xB
UkVfSU5GTzsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgog
ICAgIFdlYWtNYXBEYXRhKFZNJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215667</attachid>
            <date>2013-10-31 13:01:29 -0700</date>
            <delta_ts>2013-11-18 09:27:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131031130127.patch</filename>
            <type>text/plain</type>
            <size>323438</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4Mzg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMiBA
QAorMjAxMy0xMC0zMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFB0cldpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FuSnVt
cFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OnN0b3JlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyV2l0
aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRy
ZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpi
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODY6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJheVBy
b2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2Jz
ZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZn
L0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hX
ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3Ry
dWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZv
ck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3Ry
aW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmlu
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVP
YmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVh
bGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0
T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlUHV0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6ZXF1YWxOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNBcnJheVR5
cGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpoYXNDbGFzc0luZm8pOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3RPck90aGVy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAg
ICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
b21waWxlU3R1YldpdGhPU1JFeGl0U3RhY2ttYXApOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGVTdHViV2l0aG91dE9TUkV4aXRTdGFja21hcCk6CisgICAgICAgICogaGVhcC9HQ0Fzc2VydGlv
bnMuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0
dXJlSURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0
YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6fkpTU3RhY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFu
Y2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJ
VENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29y
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6
SklUOjpicmFuY2hTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpicmFuY2hTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXh0X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Rmxv
YXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAg
KEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
R2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNo
SW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNl
dEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9T
cGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6
OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJ
VDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dl
bmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGVhclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0
eXBlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppbmRleGluZ1R5cGUpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0dldHRlclNldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNQcm94eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNB
UElWYWx1ZVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6bWV0aG9kVGFibGUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxhYmxlT2JqZWN0U2xvdyk6
CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGlj
dGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsSW5kZXhlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhv
dXRDb3B5aW5nRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQz
MlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMlNsb3cpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlRG91YmxlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVDb250aWd1b3VzU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVBcnJheVN0b3JhZ2VTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUFycmF5
U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROZXdW
ZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291bnRFbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0VmVjdG9y
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5U3RvcmFnZU9y
TnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJl
bnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNBY3Rp
dmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0U2NvcGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZv
Ojppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9ydGFs
KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlubGluZVR5cGVGbGFncyk6CisgICAgICAgICog
cnVudGltZS9NYXBEYXRhLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b2JqZWN0SW5pdGlhbGl6YXRpb25GaWVs
ZHMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJ
RFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6flN0cnVjdHVyZUlEVGFi
bGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRh
YmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6YmFzZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmdldCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xU
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEuaDoKKwogMjAxMy0xMC0zMSAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJl
YWxseSByZW1vdmUgQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNiArNDA1
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL1N0cmluZ1JlY3Vy
c2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmUuY3BwCiAgICAgcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCiAgICAg
cnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKICAgICBydW50aW1lL1N5bWJvbFRhYmxlLmNw
cAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgy
LDYgKzEwODIsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5l
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmgg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAx
NTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsNiArNjQxLDcgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tl
ci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUu
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hh
aW4uY3BwIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJl
SURUYWJsZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVSYXJlRGF0YS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxTeW1ib2xUYWJsZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxUZXN0UnVubmVyVXRpbHMuY3BwIiAvPg0KQEAgLTEyMzgsNiArMTIzOSw3IEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZS5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCIgLz4NCisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuaCIgLz4N
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVJhcmVEYXRhLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0
YUlubGluZXMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oIiAvPg0KQEAgLTEzMDUsNCArMTMwNyw0IEBACiAgIDxJbXBv
cnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQogICAgIDxJbXBvcnQgUHJvamVjdD0i
JChWQ1RhcmdldHNQYXRoKVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4NCiAg
IDwvSW1wb3J0R3JvdXA+DQotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
KzwvUHJvamVjdD4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJ
KHdvcmtpbmcgY29weSkKQEAgLTczOCw2ICs3MzgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxTeW1ib2xUYWJsZS5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
Pg0KICAgICA8L0NsQ29tcGlsZT4NCkBAIC0yMjM0LDYgKzIyMzcsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5oIj4NCiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiPg0KKyAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIj4NCiAgICAgICA8RmlsdGVy
PnJ1bnRpbWU8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpAQCAtMzA0MSw0ICszMDQ3LDQg
QEAKICAgICAgIDxGaWx0ZXI+aml0PC9GaWx0ZXI+DQogICAgIDwvTUFTTT4NCiAgIDwvSXRlbUdy
b3VwPg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+
DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE1ODM4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTAsNiArNzEwLDggQEAKIAkJMkE0OEQxOTExNzcy
MzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBB
UElDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAv
KiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBN0E1OEVGMTgw
OEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNw
cCAqLzsgfTsKKwkJMkFEMzUzRDkxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMzUz
RDcxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9OworCQkyQUQz
NTNEQTE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMzUzRDgxODE1QzEwQjAwNjFFODE3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlv
blNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
QUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRl
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CkBA
IC0xOTQxLDYgKzE5NDMsOCBAQAogCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdHJpbmdKb2lu
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1
Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcE9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4
MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEZWZlckdDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFE
MzUzRDcxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlE
VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFEODkzMjkxN0UzODY4RjAw
NjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRy
ZWUgPSBTREtST09UOyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURl
ZmluZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURl
ZmluZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjMyLDYgKzM2
MzYsOCBAQAogCQkJCUE3QkRBRUMzMTdGNEVBMTQwMEY2MTQwQyAvKiBBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmggKi8sCiAJCQkJQTdCREFFQzQxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVy
YXRvci5jcHAgKi8sCiAJCQkJQTdCREFFQzUxN0Y0RUExNDAwRjYxNDBDIC8qIEpTQXJyYXlJdGVy
YXRvci5oICovLAorCQkJCTJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRh
YmxlLmNwcCAqLywKKwkJCQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURU
YWJsZS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTQxMTIsNiArNDExOCw3IEBACiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUx
RTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFF
QTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QThBRjM1MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkFEMzUzREExODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QThBRjM3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZp
ZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJh
eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NTE1RUQ4RTQ2MDBGMTY3
QjIgLyogQXJyYXlDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC01NDQ5LDYgKzU0NTYs
NyBAQAogCQkJCTE0N0YzOUQ0MTA3RUMzNzYwMDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDgyQjdFNDBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGOTkzNjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkFEMzUzRDkxODE1QzEwQjAwNjFFODE3IC8qIFN0
cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTVGNkU2OTUwRTVCNUY5NzAw
OTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTg0
RTFBMTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0MxNUY2NUQxN0MxOTlDRTAwNzk0RDQwIC8qIEpTUHJvbWlzZUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDcgQEAgcHVibGljOgogCiAgICAgLy8gRGF0YUxhYmVs
MzI6CiAgICAgLy8KLSAgICAvLyBBIERhdGFMYWJlbFB0ciBpcyB1c2VkIHRvIHJlZmVyIHRvIGEg
bG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIHBvaW50ZXIgdG8gYmUKKyAgICAvLyBB
IERhdGFMYWJlbDMyIGlzIHVzZWQgdG8gcmVmZXIgdG8gYSBsb2NhdGlvbiBpbiB0aGUgY29kZSBj
b250YWluaW5nIGEgMzItYml0IGNvbnN0YW50IHRvIGJlCiAgICAgLy8gcGF0Y2hlZCBhZnRlciB0
aGUgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQuCiAgICAgY2xhc3MgRGF0YUxhYmVsMzIgewogICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0ZUFzc2VtYmxlclR5cGU+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lv
biAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OSw2ICszNTksMTEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2hQdHJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0
YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmln
aHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFi
bGVKdW1wKGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJp
Z2h0VmFsdWUpKTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoanVtcCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5Niw2ICsyMDk2LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBicmFuY2hQdHJXaXRo
UGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMy
JiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0z
MigwKSkKKyAgICB7CisgICAgICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAg
ICAgICBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwg
bGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVCcmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRy
dXN0ZWRJbW1QdHIgcmlnaHQgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0yMTI4LDYgKzIxMzUsMTQgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNo
YWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIG1fbWFr
ZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0
aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAg
ICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVK
dW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkK
ICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwpAQCAtMjE5MSw2ICsy
MjA2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0
aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJy
YW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVs
KQogICAgIHsKQEAgLTIyMDMsNiArMjIxOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBD
b2RlTG9jYXRpb25MYWJlbCgpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9u
TGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOworICAgIH0KKyAgICAKICAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0
aWFsVmFsdWUpCiAgICAgewogICAgICAgICByZWVtaXRJbml0aWFsTW92ZVdpdGhQYXRjaChpbnN0
cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBpbml0aWFsVmFsdWUpOwpAQCAtMjIxMyw2ICsy
MjM1LDExIEBAIHB1YmxpYzoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAg
ICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCwgQWRkcmVzcywgaW50MzJfdCkKKyAg
ICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIH0KKwogcHJvdGVj
dGVkOgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFSTTY0QXNzZW1ibGVyOjpD
b25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTU4MzgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczOSw2ICs3MzksMTEgQEAgcHVibGljOgogICAgICAgICBzdG9y
ZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgc3RvcmU4
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBzdG9yZTgo
c3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKICAgICB2b2lkIHN0
b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAgICAgICBz
dG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpAQCAtNzU2LDYgKzc2MSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAg
ICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorICAgIAogICAgIHZv
aWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpKTsKQEAgLTE2OTEsNiAr
MTcwMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNz
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAgQUxXQVlT
X0lOTElORSBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlh
bFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBsb2FkMzIobGVm
dCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0
Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgfQorICAgIAogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoUHRyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tUHRyIHJpZ2h0ID0gVHJ1
c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVl
OwpAQCAtMTcyMyw2ICsxNzQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNoYWJs
ZUp1bXAocmVzdWx0KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRh
TGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsK
KyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRh
TGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9
IGZhbHNlOworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAgIH0KKwog
ICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewogICAgICAgICBwYWRCZWZv
cmVQYXRjaCgpOwpAQCAtMTc2Niw2ICsxNzkyLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAg
ICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAgc3RhdGlj
IENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC0xNzg5LDExICsxODE2LDIy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgfQog
ICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAgeworICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENvZGVMb2Nh
dGlvbkxhYmVsKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBs
YWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBB
ZGRyZXNzLCB2b2lkKikKICAgICB7CiAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIGludDMyX3Qp
CisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICB9CisKICNp
ZiBVU0UoTUFTTV9QUk9CRSkKICAgICBzdHJ1Y3QgQ1BVU3RhdGUgewogICAgICAgICAjZGVmaW5l
IERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShyZXZpc2lv
biAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMTQgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAg
ICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGlu
aXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcGFkQmVm
b3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGluaXRpYWxS
aWdodFZhbHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAgICBkYXRh
TGFiZWwgPSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9hc3NlbWJs
ZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJlbFB0ciBz
dG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRy
ZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAtMjU5LDYg
KzI2Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFj
ZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0
aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJh
bmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwp
CiAgICAgewpAQCAtMjgxLDYgKzI5MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJl
bC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENv
ZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlu
dCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0gMTsKKyAg
ICAgICAgY29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50IGltbWVk
aWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNvZGVCeXRl
cyArIG1vZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAgICAgICBB
U1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAgICAgICBy
ZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAgIAogICAg
IHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBp
bml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19j
bXBsX2lyX2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMjkyLDYgKzMx
MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxf
aW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7CiAgICAg
fQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNz
IGFkZHJlc3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFh
ZGRyZXNzLm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxf
aW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxW
YWx1ZSwgMCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAg
ICAvLyBGb3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9
IDAsIHZvaWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE1
ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA5LDYgKzYwOSwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBSZWdpc3RlcklEIGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjplYXgpCisg
ICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYgKGFkZHJl
c3MuYmFzZSAhPSBYODZSZWdpc3RlcnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdp
c3RlcnM6OmVieDsKKworICAgICAgICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVy
czo6ZWN4KTsKKyAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0KKwogICAg
IHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAj
aWYgQ1BVKFg4NikKQEAgLTYyOCw2ICs2NDAsMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAgICAgLy8g
T24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJlZ2lzdGVy
czsKKyAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lzdGVycyEK
KyAgICAgICAgaWYgKHNyYyA+PSA0KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVtcG9yYXJ5
IHJlZ2lzdGVyLgorICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2VkUmVnaXN0
ZXIoYWRkcmVzcyk7CisKKyAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFyeSByZWdp
c3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiX3JtKHNy
YywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9pZCBzdG9y
ZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYgQ1BVKFg4
NikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE5LDYgKzExOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hS
ZWdpc3Rlcik7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2
b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mp
LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lz
dGVyKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9p
ZCogYWRkcmVzcykKICAgICB7CkBAIC01OTIsNiArNTk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKICAgICB9CiAKKyAgICBEYXRhTGFiZWxQdHIgbW92
ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW5pdGlhbFZhbHVlLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zx
X2k2NHIoaW5pdGlhbFZhbHVlLm1fdmFsdWUsIGRlc3QpOworICAgICAgICByZXR1cm4gRGF0YUxh
YmVsUHRyKHRoaXMpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFM
YWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIoMCkp
CiAgICAgewogICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZh
bHVlLCBzY3JhdGNoUmVnaXN0ZXIpOwpAQCAtNjA0LDYgKzYxNywxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0K
IAorICAgIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFs
UmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBh
dGNoKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxfaW1fZm9yY2UzMihpbml0aWFsUmlnaHRW
YWx1ZS5tX3ZhbHVlLCBsZWZ0Lm9mZnNldCwgbGVmdC5iYXNlKTsKKyAgICAgICAgZGF0YUxhYmVs
ID0gRGF0YUxhYmVsMzIodGhpcyk7CisgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpD
Qyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQ
dHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRj
aChpbml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC02NDQsNiArNjY1LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkg
eyByZXR1cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBz
dGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9m
QnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFi
ZWwpCiAgICAgewpAQCAtNjU1LDE2ICs2NzcsMzYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQogICAgIAorICAgIHN0YXRp
YyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENv
ZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJl
eEJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0
ZXMgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFT
U0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJl
dHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAg
c3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAg
ICB9CisKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFi
ZWwpOworICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRU
b1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlv
blN0YXJ0LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZB
c3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRh
YmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBz
Y3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBs
YWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgQWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAg
ICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihp
bnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0
SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlh
bFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Mo
bGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0
Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIg
bGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAg
IHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQs
IENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKQEAgLTE3NSw2ICsxODAsMTEg
QEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50
VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywg
dmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0K
KwogcHJpdmF0ZToKICNpZiBFTkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICB2b2lk
KiBtX3N0YXJ0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcs
MTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9N
T1ZfRWJHYiwgc3JjLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAg
dm9pZCBtb3ZiX3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2Up
CisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywg
YmFzZSwgb2Zmc2V0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQg
c3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3
NiwyNSBAQCB2b2lkIGR1bXBBcnJheU1vZGVzKFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQg
QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYsIENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0
cnVjdHVyZSkKKyAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1
cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVy
ZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCk7CisgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0
cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1G
aXJzdFJ1blBydW5pbmcKICAgICAgICAgJiYgaGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVk
QXJyYXlNb2RlcykpIHsKLSAgICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVG
cm9tU3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJy
YXlNb2RlcyA9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAg
ICAgICBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAg
ICBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3Ry
dWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8oKTsKKyAgICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybygpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpOwotICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+
aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAg
aWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVj
dHVyZSkKKyAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1
Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpKQogICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlcyA9IGZhbHNlOwotICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CiB9CiAKIENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRl
c2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5
UHJvZmlsZS5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBj
bGFzcyBBcnJheVByb2ZpbGUgewogcHVibGljOgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAg
IDogbV9ieXRlY29kZU9mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
Ci0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5T
dHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAg
ICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRB
Y2Nlc3NlcyhmYWxzZSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJy
YXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQor
ICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVU
b0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBt
X21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBA
IHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZM
YXN0U2VlblN0cnVjdHVyZSgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAg
U3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9s
YXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2Rl
cygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NP
Zk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29s
KiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsgcmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAg
CiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0
U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lk
IGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29k
ZUJsb2NrKik7CkBAIC0xODgsNyArMTg4LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0
dXJlKiBwb2x5bW9ycGhpY1N0cnVjdHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVy
ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1f
Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgU3RydWN0dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAg
IFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVU
b0hvbGU7IC8vIFRoaXMgZmxhZyBtYXkgYmVjb21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3Ro
ZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUgZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2Vz
cywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGluZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2
ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhpbmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5
U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBu
YW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRl
cmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRl
eCkuZGF0YSgpOwogICAgIH0KIAorICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hl
YXA7IH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9i
YWxPYmplY3QuZ2V0KCk7IH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3Io
Q29kZU9yaWdpbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8
IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwg
fCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0
NSw3ICs1NDUsNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpT
dHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEhlYXAuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSkgXAog
ICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X3ZlY3RvcikgXAotICAgIG1hY3JvKEpTQ2VsbF9z
dHJ1Y3R1cmUpIFwKKyAgICBtYWNybyhKU0NlbGxfc3RydWN0dXJlSUQpIFwKICAgICBtYWNybyhK
U0Z1bmN0aW9uX2V4ZWN1dGFibGUpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlQ2hhaW4p
IFwKICAgICBtYWNybyhKU09iamVjdF9idXR0ZXJmbHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
CShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDIzICsxMjIsMTQg
QEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7
CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRl
eGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5j
aFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVy
ZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBz
dHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAg
ICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNv
LiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4K
LSAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBt
X3N0cnVjdHVyZUdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNo
ZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVk
IHRvIGdldC4KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNw
ZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAv
LyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9u
IGJlaW5nIHJlZXhlY3V0ZWQuCiAgICAgICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJy
YXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQu
bG9hZDgoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0Nl
bGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAg
bV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1
bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICB2ZXJzaW9ucyBvZiB0aG9zZSBu
b2RlcyB0aGF0IGJhY2t3YXJkLWV4aXQgaW5zdGVhZCwgYnV0IEknbSBub3QgY29udmluY2VkCiAg
ICAgLy8gICBvZiB0aGUgc291bmRuZXNzLgogICAgIC8vCi0gICAgLy8gLSBTb21lIG5vZGVzIGxp
ZSwgYW5kIGNsYWltIHRoYXQgdGhleSBkbyBub3QgcmVhZCB0aGUgSlNDZWxsX3N0cnVjdHVyZS4K
KyAgICAvLyAtIFNvbWUgbm9kZXMgbGllLCBhbmQgY2xhaW0gdGhhdCB0aGV5IGRvIG5vdCByZWFk
IHRoZSBKU0NlbGxfc3RydWN0dXJlSUQuCiAgICAgLy8gICBUaGVzZSBhcmUgbm9kZXMgdGhhdCB1
c2UgdGhlIHN0cnVjdHVyZSBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGRlcGVuZCBvbgogICAgIC8v
ICAgdGhpbmdzIHRoYXQgY2hhbmdlIHVuZGVyIHN0cnVjdHVyZSB0cmFuc2l0aW9ucy4KICAgICAv
LwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgLy8gICBzbWFsbCBoYWNraW5nLgogICAgIAogICAgIGlmIChlZGdlc1VzZVN0cnVj
dHVyZShncmFwaCwgbm9kZSkpCi0gICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAg
ICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgQ2hlY2tBcnJheToKICAg
ICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAgICAgY2FzZSBJbnN0YW5jZU9mOgotICAgICAgICBy
ZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CkBA
IC00MTcsNyArNDE3LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIFBoYW50b21QdXRT
dHJ1Y3R1cmU6Ci0gICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICB3cml0
ZShKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNh
c2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC00MzksOSArNDM5LDkgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAKICAgICBjYXNlIEFycmF5
aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKLSAgICAgICAgcmVhZChKU0NlbGxf
c3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICBy
ZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7Ci0gICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmUp
OworICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICB3cml0ZShKU09i
amVjdF9idXR0ZXJmbHkpOwogICAgICAgICByZWFkKEdDU3RhdGUpOwogICAgICAgICB3cml0ZShH
Q1N0YXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0MywyOSBAQCBwdWJsaWM6CiAg
ICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1B0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5j
aFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVy
ZSogd2Vha1N0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVt
cCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVy
ZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIo
Y29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoU3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hQdHIo
Y29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwog
ICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGls
ZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAg
ICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFj
aGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9u
IDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOCArMTM1LDggQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIo
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNj
cmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoMSwgYXJyYXlQ
cm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
UHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQo
KSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwog
ICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
MSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwg
c2NyYXRjaDIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjgsOSArMTI4LDkgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQu
bV9qc1ZhbHVlU291cmNlLmdwcigpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
UHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVl
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0
Y2gxKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbTMyKDEpLCBzY3JhdGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2Ny
YXRjaDEsIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBB
c3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFy
cmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVOb25QZQogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAg
ICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGls
ZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVj
dHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5tb3ZlKGlu
dmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0UGF5bG9hZEdQ
Uik7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAg
ICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJv
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSwgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7CiAgICAKICAgICAgICAgR1BSUmVnIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CkBAIC0xMTYxLDE4
ICsxMTYxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7
CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgCkBAIC0xMTg0LDcgKzExODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0RXF1YWxpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTEyMzgsMTAgKzEyMzgsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
CkBAIC0xMjY2LDEwICsxMjY2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RUb09iamUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQ
UiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
QEAgLTEzNDUsMTAgKzEzNDUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBI
b2xlT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMTM3MiwxMCArMTM3MiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdH
UFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVj
dHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwKQEAgLTE2MjAsMTAgKzE2MjAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0zMTMwLDcgKzMx
MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1p
dGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGFscmVhZHlQcmltaXRpdmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShv
cDFUYWdHUFIsIHJlc3VsdFRhZ0dQUik7CkBAIC0zMTYzLDcgKzMxNjMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgb3AxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0
LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
ICAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIs
IHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTM1
MzAsNyArMzUzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGhpc1ZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRl
bXBHUFIpOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAg
LTM4MzIsMTIgKzM4MzIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlLmdwcigpKSwgMCwKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAog
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNl
LmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgICAg
ICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKKyAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICAKQEAgLTM4NjgsNyAr
Mzg2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09L
ID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihu
b2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9q
aXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3Ax
LmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUt
PnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNP
Sy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtMzg5Nyw3ICszODk3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQ
Uiwgbm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFy
cmllckZvckdlbmVyaWNBY2Nlc3MpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5z
dG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRh
dGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQwNzcsNyArNDA3Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVy
ZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkp
OwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
LCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQxMDYsNyArNDEwNiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5
bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtNDE1MCw3ICs0MTUwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1
bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00
MjA0LDcgKzQyMDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAKICAgICAgICAgaWYg
KCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwgbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgdGVtcEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHRlbXBHUFIpOwog
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gbV9qaXQuYnJhbmNoOChK
SVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVj
dHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwog
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAg
ICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2Fk
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSwxMiArMjY5LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBH
UFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAg
ICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8s
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywg
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/
IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAg
bm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI4Myw2ICsyODYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQ
UlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0Lmdw
cigpOwogICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9i
YWxPYmplY3RHUFIpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQ
Uiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQgPyBKSVRD
b21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0
R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CiAgICAgfQpAQCAtMzMzLDE2
ICszMzcsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAg
IH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChv
cGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hU
ZXN0OChKSVRDb21waWxlcjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwor
ICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpLCAKKyAgICAgICAgICAgIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogCiAgICAg
ICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iob3BlcmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3Jh
dGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxP
YmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEds
b2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6
IHRha2VuKTsKICAgICB9CkBAIC0xNTE2LDQxICsxNTI0LDM2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUo
dGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0K
LSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBu
b2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9k
ZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAg
IApAQCAtMTU3MywzNyArMTU3NiwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0VG9PYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3Ay
R1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52
YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRW
YWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCk7CiAKLSAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQp
IHsKLSAgICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNl
IHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0gICAgICAgIC8v
IERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFy
b3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3Ry
dWN0dXJlKHRoaXMpOwotICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7Ci0g
ICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0KICAgICBpZiAo
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiks
IGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAg
ICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjE1LDIxICsxNjA3LDIwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0
aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENo
aWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAg
c3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQ
UiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQ
UiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAg
fQogICAgIApAQCAtMTY3NiwzNyArMTY2NywyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGVlcEhvbGVPYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJS
ZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gSW52YWxpZEdQUlJlZzsKICAgICAKLSAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQgPQorICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRWYWxpZCA9IAogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3Rp
bGxWYWxpZCgpOwogCi0gICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZh
bGlkKSB7Ci0gICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxs
IHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgotICAgICAg
ICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGlu
ZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgotICAgICAgICBHUFJUZW1wb3JhcnkgcmVh
bFN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUp
OwotICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQotCiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAKQEAgLTE3MTgsMjEgKzE2OTgsMjAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3
aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmICht
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAg
ICAgfQogICAgIApAQCAtMTg0OSw2ICsxODI4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdE9yT3RoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52
YWxpZEdQUlJlZzsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcgc2NyYXRj
aEdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpOwpAQCAtMTg1NywzMiArMTgzOCwzNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1
bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0
ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9u
IHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVy
ZSk7CisgICAgICAgIHNjcmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBzdHJ1Y3R1
cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdw
cigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJy
YW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0KICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVV
c2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BS
LCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAg
LTIwMDEsMzEgKzE5ODQsNDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3Ro
ZXJCcgogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVVc2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAg
R1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIo
KTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHN0
cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CisKKyAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
YWxTdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJl
KTsKKyAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgIH0KICAgICAK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21w
aWxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpaZXJv
LCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZSh2YWx1ZUdQ
Uiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgp
KSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+Y29kZU9yaWdpbikpKSk7CiAK
ICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKQEAgLTM0
NDYsNyArMzQzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0g
bV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2
ZSA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5t
b3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKQEAgLTM0NzMsMTAgKzM0NjksMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93
UGF0aDIgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BS
LCByZXN1bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM2OTUsNyArMzY5MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7CiAgICAg
ICAgICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKLSAgICAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1tUHRyKHN0
cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMp
OworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gy
R1BSLCBzbG93Q2FzZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMy
KHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXpl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNl
dE9mVmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4MzMsMTEgKzM4MjksOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVz
dDY0KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1ZUdQUiwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlz
VmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1
c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFs
dWVHUFIsIHRlbXBHUFIpOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKQEAg
LTQxMjIsMjQgKzQxMTYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0
cnVjdHVyZSgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAg
ICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUtPnN0cnVjdHVyZVNl
dCgpLnNpemUoKSAtIDE7ICsraSkKLSAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5i
cmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5z
dHJ1Y3R1cmVTZXQoKVtpXSkpOworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoSklUQ29tcGlsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1
Y3R1cmVTZXQoKVtpXSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlLmdwcigpKSwgMCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAot
ICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIo
KSwgbm9kZS0+c3RydWN0dXJlU2V0KCkubGFzdCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoV2Vha1N0cnVjdHVyZSgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTQxNjAs
NyArNDE1MCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBt
X2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhv
cDEuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUt
PnN0cnVjdHVyZSgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAg
bV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBpc09LLmxpbmsoJm1faml0KTsKICNlbHNlCkBA
IC00MTgyLDcgKzQxNzUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0LmppdENvZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVj
dHVyZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBu
b2RlKTsKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBz
Y3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAgICAgCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJ
RVJfUFJPRklMSU5HKQpAQCAtNDE5MCw3ICs0MTg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgbm9kZS0+
c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmllckZvckdl
bmVyaWNBY2Nlc3MpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0
YSgpLm5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwgYmFzZUdQUiwgc2NyYXRjaEdQUik7IAogICAgICAg
ICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM1MSw4ICs0
MzQ2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUg
dGhhdCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4
KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC00MzgwLDggKzQzNzcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9u
WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVy
bywgCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKIApAQCAtNDQyOCw4ICs0NDI3LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxl
cjo6Tm9uWmVybywgdmFsdWUuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAg
ICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdw
cigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAg
bV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJ
VENvbXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1
ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAK
QEAgLTQ0NjgsOCArNDQ2OSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICBjYXNlIFR5cGVPZjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwotICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7CkBAIC00NDgz
LDggKzQ0ODIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7
Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4
KAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAg
ICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKSks
IHJlc3VsdEdQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MCw5ICs3
NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgY2Fz
ZSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgICAgICBt
X2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICBtX2ppdC5s
b2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZEluZGV4aW5n
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIDAsCiAgICAgICAgICAg
ICBqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgp
KSk7CkBAIC03NzEsOCArNzY5LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXko
Tm9kZSogbm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpBcmd1bWVu
dHM6Ci0gICAgICAgIGV4cGVjdGVkQ2xhc3NJbmZvID0gQXJndW1lbnRzOjppbmZvKCk7Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNo
OCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihBcmd1bWVudHNUeXBlKSkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwor
ICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKICAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8g
PSBjbGFzc0luZm9Gb3JUeXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwog
ICAgICAgICBicmVhazsKQEAgLTc4MSw4ICs3ODUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FycmF5KE5vZGUqIG5vCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRDbGFzc0luZm8p
OwogICAgIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIG1faml0LmxvYWRQdHIo
Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCB0ZW1wLmdwcigpKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7
CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZVJlZywgdGVtcC5ncHIoKSwgdGVtcDIuZ3ByKCkp
OwogICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLAogICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBA
IC04MTIsMTYgKzgxNiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBu
b2RlCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIAogICAgIGlm
IChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2pp
dC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgbm9kZS0+c3RydWN0
dXJlKCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOCgKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRl
bXBHUFIpOwogICAgICAgICAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53
YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CkBAIC0x
MzUwLDI0ICsxMzUxLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amUKICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYg
flNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAg
ICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNo
aWxkMigpLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIg
PSBzdHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShvcDFHUFIsIHN0cnVjdHVyZUdQUiwgdGVt
cC5ncHIoKSk7CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAg
ICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiks
IG5vZGUtPmNoaWxkMSgpLApAQCAtMTM4Miw3ICsxMzg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OworICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShvcDJHUFIsIHN0cnVjdHVyZUdQUiwgdGVtcC5n
cHIoKSk7CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlw
ZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAg
ICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLApAQCAtMjc5MiwxOCArMjc5NCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QnlWYWxGb3JGCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFs
dWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1
ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcsIEdQUlJlZyBzY3Jh
dGNoMlJlZykKIHsKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QuCi0g
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b3R5cGVSZWcsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHNj
cmF0Y2hSZWcpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCks
IDAsIG1faml0LmJyYW5jaElmQ2VsbE5vdE9iamVjdChwcm90b3R5cGVSZWcpKTsKICAgICAKICAg
ICAvLyBJbml0aWFsaXplIHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFsdWUgYmVpbmcgY2hlY2tlZC4K
ICAgICBtX2ppdC5tb3ZlKHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsKICAgICAKICAgICAvLyBXYWxr
IHVwIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNoUmVnKSwgY29t
cGFyaW5nIHRvIHByb3RvdHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbG9vcCgm
bV9qaXQpOwotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aFJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOworICAgIGVtaXRM
b2FkU3RydWN0dXJlKHNjcmF0Y2hSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVnKTsKQEAgLTI4NDIsOSAr
Mjg0MywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBwcm90b3R5cGVSZWcgPSBw
cm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAg
IAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdw
cigpOwpAQCAtMjg2MSw3ICsyODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
c3RhbmNlT2YoTgogICAgICAgICAKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKICAgICAg
ICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBw
cm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgICAgICBjb21waWxlSW5zdGFuY2VPZkZvck9i
amVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJl
Zyk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKIApAQCAtMjg3NywxMiAr
Mjg4MCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAg
ICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDIodGhpcyk7CiAgICAgCiAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CiAg
ICAgR1BSUmVnIHByb3RvdHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICBHUFJSZWcgc2Ny
YXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRj
aDIuZ3ByKCk7CiAgICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFs
dWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZyk7CisgICAgY29tcGlsZUluc3RhbmNlT2ZG
b3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRj
aDJSZWcpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqc1ZhbHVlUmVzdWx0KHNjcmF0Y2hS
ZWcsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwpAQCAtNDU5OCwxMSArNDYwMywxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
U3RyaW5nID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOworICAgICAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUobm9kZS0+Y2hpbGQxKCksIAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU1dyYXBwZXJPYmplY3Q6OmludGVybmFsVmFsdWVDZWxsT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKQEAgLTQ2MjcsMTAgKzQ2MzQsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lOwogICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAg
ICAgICAgICAgICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5l
ZWRDYWxsLmxpbmsoJm1faml0KTsKQEAgLTQ4MzAsMTAgKzQ4MzcsMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
ZXJhbmQodGhpcywgZWRnZSk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciks
IGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdChFZGdlIGVkZ2UpCkBAIC00ODQyLDE0ICs0ODQ5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7
Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICBHUFJSZWcgZ3ByID0gb3Bl
cmFuZC5ncHIoKTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwot
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY0ZpbmFsT2Jq
ZWN0LCBtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGdwciwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwogfQogCkBAIC00ODY2LDEwICs0ODcw
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwog
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNw
ZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJl
Z3MoZ3ByKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAg
ICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00
ODg5LDEwICs0ODkzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9y
T3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0KICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdz
KHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBl
ZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7
CiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpA
QCAtNDkxMiwxMCArNDkxNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmpl
Y3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBH
UFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigK
KyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJp
bmcsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExv
YWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpCkBAIC00
OTY4LDcgKzQ5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRn
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2Us
IEdQUlJlZyBncHIpCiB7Ci0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVk
Z2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkp
OworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDk5
NSwxNSArNDk5OSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0
CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0cmluZ09i
amVjdCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAg
Ci0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICBKSVRDb21waWxlcjo6RXF1
YWwsIHN0cnVjdHVyZUdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKKyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAKLSAgICBzcGVj
dWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAKICAgICBpc1N0cmlu
Zy5saW5rKCZtX2ppdCk7CiAgICAgCkBAIC01MjY4LDEwICs1MjY5LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICNlbmRpZgogICAgICAgICAKICAgICAgICAg
YWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9q
aXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdz
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
UmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAg
IGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3Ry
aW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CkBAIC01NTY4LDEw
ICs1NTY5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNl
bmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgCiAg
ICAgICAgIGVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTcyMiw3ICs3MjIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSosIGJvb2wg
aW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVTdHJpY3RFcShOb2RlKiwg
Ym9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZv
ck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJS
ZWcgc2NyYXRjaEFuZFJlc3VsdFJlZyk7CisgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZkZvck9i
amVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcg
c2NyYXRjaEFuZFJlc3VsdFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKTsKICAgICB2b2lkIGNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICAKICAgICBwdHJkaWZmX3QgY2FsbGVlRnJhbWVPZmZz
ZXQoaW50IG51bUFyZ3MpCkBAIC0yMDU2LDYgKzIwNTYsOTQgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAgIH0KKworICAgIHZvaWQgZW1pdExvYWRTdHJ1
Y3R1cmUoR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBkZXN0R1BSLCBHUFJSZWcgc2NyYXRjaEdQUikK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRl
c3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKG1faml0LnZtKCktPmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoR1BSLCBkZXN0R1BSLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIGRlc3RHUFIpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNj
cmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOworI2VuZGlm
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoQ0NhbGxIZWxwZXJz
JiBqaXQsIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgZGVzdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVz
dEdQUik7CisgICAgICAgIGppdC5sb2FkUHRyKGppdC52bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFi
bGUoKS5iYXNlKCksIHNjcmF0Y2hHUFIpOworICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHNjcmF0Y2hHUFIsIGRlc3RHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1l
c0VpZ2h0KSwgZGVzdEdQUik7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaEdQ
Uik7CisgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3RHUFIpOworI2VuZGlmCisgICAgfQor
CisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmUoVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQ
UlJlZyBkZXN0R1BSKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjb25zdCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0
cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoc3Ry
dWN0dXJlUHRyLT5pZCgpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICBtX2ppdC5zdG9yZVB0cihz
dHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BS
LCBHUFJSZWcpCisgICAgeworICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8o
bV9qaXQsIHN0cnVjdHVyZSwgZGVzdEdQUik7CisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIGRlc3RHUFIs
IEdQUlJlZyBzY3JhdGNoR1BSKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBt
X2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuc3Rv
cmU2NChzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0R1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNlCisgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUg
aW5mbyBmbGFncyB1c2luZyBhIHNpbmdsZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KKyAg
ICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBt
X2ppdC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIs
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUg
U3RydWN0dXJlSUQKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0dXJlKHN0cnVjdHVyZUdQUiwgZGVz
dEdQUiwgc2NyYXRjaEdQUik7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQ0NhbGxIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1Q
dHIgc3RydWN0dXJlLCBHUFJSZWcgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVy
ZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJl
Lm1fdmFsdWUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVpbnQ2NF90IGJsb2JUb1N0
b3JlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3QqPihyZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihzdHJ1Y3R1cmVQdHIpICsgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7
CisjZWxzZQorICAgICAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUg
dGhlIGNlbGwncyBmaWVsZHMuCisgICAgICAgIGppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9uRmllbGRzKCkpLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhkc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKyAgICAgICAgZW1p
dFN0b3JlU3RydWN0dXJlKGppdCwgc3RydWN0dXJlLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShDQ2FsbEhlbHBlcnMmIGppdCwgVHJ1
c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIEdQUlJlZyBkZXN0R1BSKQorICAgIHsKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgICAgICBjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19j
YXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyAgICAgICAgaml0LnN0
b3JlMzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2Vsc2UKKyAg
ICAgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVz
dEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZShHUFJSZWcgc3RydWN0dXJlR1BSLCBHUFJSZWcgZGVz
dEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2pp
dC5zdG9yZTMyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmVHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGRlc3RHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OworI2VuZGlmCisgICAgfQogICAgIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYSBjZWxsIG9mIGEg
c3BlY2lmaWMgc2l6ZS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gLy8g
U3RydWN0dXJlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KQEAgLTIwNzEsNyArMjE1OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxp
c3RIZWFkKCkpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBTdHJ1Y3R1
cmUuCi0gICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIGVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRj
aEdQUik7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhbiBvYmplY3Qgb2YgYSBzcGVj
aWZpYyBzaXplLgpAQCAtMzAxMyw4ICszMTAxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3Bl
Y3VsYXRlU3RyaW5nT2JqZQogICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fY3VycmVu
dEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVj
dHVyZSkpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBOb3RTdHJp
bmdPYmplY3QsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIo
Ci0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlv
biwgVHJ1c3RlZEltbVB0cihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBt
YWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkgXAotICAgIG1hY3Jv
KEpTQ2VsbF9zdHJ1Y3R1cmUsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpIFwKKyAgICBtYWNy
byhKU0NlbGxfc3RydWN0dXJlSUQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAorICAg
IG1hY3JvKEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb1R5cGUsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfaW5kZXhpbmdUeXBlLCBKU0NlbGw6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVyZmx5LCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Njb3BlX25leHQsIEpTU2NvcGU6
Om9mZnNldE9mTmV4dCgpKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdfbGVuZ3RoLCBKU1N0cmluZzo6
b2Zmc2V0T2ZMZW5ndGgoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTExLDEyICsxMTExLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV4
aXRLaW5kID0gQmFkQ2FjaGU7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0g
bV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICBM
VmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+c3RydWN0dXJlU2V0KCku
c2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICBl
eGl0S2luZCwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAotICAgICAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkp
KTsKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVj
dHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtMTEyNiwxNCArMTEyNiwxNCBAQCBwcml2YXRlOgogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXpl
KCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRTdHJ1Y3R1cmUgPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIkNoZWNrU3RydWN0dXJlIG5leHRTdHJ1Y3R1cmUiKSk7CiAg
ICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3Ry
dWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSksCisgICAgICAg
ICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5z
dHJ1Y3R1cmVTZXQoKVtpXSkpLAogICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiwgbmV4dFN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3RydWN0dXJlKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgZXhpdEtp
bmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0
cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7Cisg
ICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25v
ZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CkBAIC0xMTUzLDEwICsxMTUzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNp
Y0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFycmF5
aWZ5VG9TdHJ1Y3R1cmUgdW5leHBlY3RlZCBzdHJ1Y3R1cmUiKSk7CiAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJyYXlpZnlUb1N0cnVj
dHVyZSBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJl
ID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAg
ICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVy
ZSgpKSksCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVj
dHVyZShtX25vZGUtPnN0cnVjdHVyZSgpKSksCiAgICAgICAgICAgICB1bmV4cGVjdGVkU3RydWN0
dXJlLCBjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5l
eHQgPSBtX291dC5hcHBlbmRUbyh1bmV4cGVjdGVkU3RydWN0dXJlLCBjb250aW51YXRpb24pOwpA
QCAtMTE5NywxMCArMTE5Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAg
ICBCYWRJbmRleGluZ1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1f
b3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmUoKSkp
KTsKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBz
LkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmUoKSkp
KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMjEwLDkgKzEyMDks
OSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24u
bm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2dyYXBoLm1fcGxhbiwgY29kZUJs
b2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZTY0KAotICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgp
Lm5ld1N0cnVjdHVyZSksCi0gICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCku
bmV3U3RydWN0dXJlLT5pZCgpKSwKKyAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlUGhhbnRvbVB1dFN0cnVjdHVyZSgpCkBAIC0yMTc0LDggKzIxNzMsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAgICAganNWYWx1ZVZh
bHVlKHZhbHVlKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAg
ICAgIG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHZhbHVl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5j
b25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUt
PmlkKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIx
ODYsMTggKzIxODUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG1hc3F1
ZXJhZGVzQ2FzZSA9CiAgICAgICAgICAgICAgICAgRlRMX05FV19CTE9DSyhtX291dCwgKCJFcXVh
bE51bGxPclVuZGVmaW5lZCBtYXNxdWVyYWRlcyBjYXNlIikpOwogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIodmFsdWUsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1fb3V0LnRlc3ROb25a
ZXJvOCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoc3RydWN0dXJlLCBtX2hlYXBz
LlN0cnVjdHVyZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDgodmFsdWUsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLAogICAgICAgICAg
ICAgICAgIG1hc3F1ZXJhZGVzQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFzcXVlcmFkZXNDYXNlLCBwcmltaXRpdmVDYXNlKTsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1
cmUodmFsdWUpOworICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291
dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+Y29k
ZU9yaWdpbikpLApAQCAtMjk1MSw4ICsyOTUwLDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgaXNP
YmplY3QoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwo
Ci0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1
Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90U3RyaW5nKExWYWx1
ZSBjZWxsKQpAQCAtMjk2Myw4ICsyOTYyLDggQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgaXNTdHJp
bmcoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCi0gICAg
ICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0g
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUt
PmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90T2JqZWN0KExWYWx1ZSBjZWxs
KQpAQCAtMjk3OCw5ICsyOTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcnJheTo6SW50
MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgY2FzZSBBcnJheTo6Q29u
dGlndW91czogewotICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlKSwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9pbmRleGluZ1R5cGUp
OworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4KGNlbGwsIG1f
aGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN3
aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewogICAgICAgICAgICAgY2FzZSBBcnJheTo6
T3JpZ2luYWxBcnJheToKQEAgLTMwMDgsNyArMzAwNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkUHRyKAotICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
KSwKKyAgICAgICAgICAgICAgICBsb2FkU3RydWN0dXJlKGNlbGwpLAogICAgICAgICAgICAgICAg
IG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihjbGFzc0luZm8pKTsKICAgICB9CkBAIC0zMDQxLDggKzMwMzgsOCBAQCBwcml2YXRlOgog
ICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZSh2YWx1ZSks
IGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1fb3V0LmVxdWFs
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkBAIC0zMDcxLDE3ICszMDY4LDE4IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVOb25OdWxsT2JqZWN0KEVkZ2UgZWRn
ZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQu
bG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAgICAgICBGVExfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY09iamVj
dCwgCi0gICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50UHRy
KHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9vdXQuZXF1YWwo
CisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3Ry
dWN0dXJlLT5pZCgpKSkpOwogICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwg
ZWRnZS5ub2RlKCksCiAgICAgICAgICAgICBtX291dC50ZXN0Tm9uWmVybzgoCi0gICAgICAgICAg
ICAgICAgbV9vdXQubG9hZDgoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb0Zs
YWdzKSwKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF90
eXBlSW5mb0ZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0zNjcwLDEyICszNjY4LDI1IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLm1fcGxhbi53ZWFrUmVmZXJlbmNlcy5hZGRM
YXppbHkodGFyZ2V0KTsKICAgICB9Ci0gICAgCisKKyAgICBMVmFsdWUgbG9hZFN0cnVjdHVyZShM
VmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBMVmFsdWUgdGFibGVJbmRleCA9IG1fb3V0Lmxv
YWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICBMVmFsdWUg
dGFibGVCYXNlID0gbV9vdXQuZ2V0KG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuYmFzZSgpKSk7CisgICAgICAgIHJldHVybiBtX291dC5nZXQobV9vdXQuYmFz
ZUluZGV4KHRhYmxlQmFzZSwgdGFibGVJbmRleCwgU2NhbGVFaWdodCkpOworICAgIH0KKwogICAg
IExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBhZGRX
ZWFrUmVmZXJlbmNlKHBvaW50ZXIpOwogICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIo
cG9pbnRlcik7CiAgICAgfQorCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgeworICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0cnVjdHVyZSk7Cisg
ICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKSk7CisgICAgfQog
ICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBiYXNlLCBpbnQgb3BlcmFu
ZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTU4MzgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Myw5ICs5Myw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViV2l0aE9T
UkV4aXRTdGFja20KICAgICAgICAgaWYgKGV4aXQubV9raW5kID09IEJhZENhY2hlIHx8IGV4aXQu
bV9raW5kID09IEJhZEluZGV4aW5nVHlwZSkgewogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAgICAgIGlm
IChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihj
b2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsK
LSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsK
LSAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDEsIGFycmF5UHJvZmls
ZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgaml0Lmxv
YWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAg
aml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBq
aXQubHNoaWZ0MzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAg
ICAgICBqaXQub3IzMihHUFJJbmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRk
cmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpAQCAtMjA3LDkgKzIw
Nyw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViV2l0aG91dE9TUkV4aXRTdGEKICAgICAgICAg
aWYgKGV4aXQubV9raW5kID09IEJhZENhY2hlIHx8IGV4aXQubV9raW5kID09IEJhZEluZGV4aW5n
VHlwZSkgewogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVP
cmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFycmF5
UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+Z2V0QXJyYXlQ
cm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKLSAgICAgICAgICAgICAgICBqaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7Ci0gICAgICAgICAg
ICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86Om5vbkFyZ0dQUjEsIGFycmF5UHJvZmlsZS0+YWRk
cmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ4KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjEsIFN0cnVjdHVyZTo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAgICAgICAgICAgICAg
ICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIw
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBHUFJJbmZvOjpub25BcmdHUFIxKTsKKyAg
ICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6bm9uQXJnR1BSMSwgYXJyYXlQcm9m
aWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgICAgIGpp
dC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBKU0Nl
bGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgICAg
ICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5m
bzo6bm9uQXJnR1BSMik7CiAgICAgICAgICAgICAgICAgaml0LmxzaGlmdDMyKEdQUkluZm86Om5v
bkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjIpOwogICAgICAgICAgICAgICAgIGppdC5vcjMy
KEdQUkluZm86Om5vbkFyZ0dQUjIsIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoYXJy
YXlQcm9maWxlLT5hZGRyZXNzT2ZBcnJheU1vZGVzKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogI2RlZmluZSBBU1NFUlRfR0Nf
T0JKRUNUX0xPT0tTX1ZBTElEKGNlbGwpIGRvIHsgXAogICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwp
O1wKLSAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZh
bGlkYXRlZFN0cnVjdHVyZSgpID09IGNlbGwtPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFs
aWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkpOyBcCisgICAgUkVMRUFT
RV9BU1NFUlQoY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpID09IGNlbGwtPnN0cnVjdHVy
ZSgpLT5zdHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCkpOyBcCiB9IHdoaWxlICgwKQogCiAjZGVmaW5l
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBjbGFzc0luZm8pIGRvIHtcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTU4MzgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NCw2
ICs3NzQsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAKICAg
ICB7CiAgICAgICAgIEdDUEhBU0UoU3RvcEFsbG9jYXRpb24pOworICAgICAgICBtX3N0cnVjdHVy
ZUlEVGFibGUuZmx1c2hPbGRUYWJsZXMoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zdG9wQWxs
b2NhdGluZygpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2
aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJT
dHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVyLmgiCiAjaW5jbHVk
ZSAiV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5o
PgpAQCAtMTg2LDYgKzE4Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Ym9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFsRGVwdGg7IH0KIAor
ICAgICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKKyAgICAgICAgU3RydWN0
dXJlSURUYWJsZSYgc3RydWN0dXJlSURUYWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJs
ZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIENvcGllZEJsb2NrOwpAQCAtMjM2LDcgKzI0MCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyQ29sbGVjdCgpOwogCiAgICAgICAg
IEpTU3RhY2smIHN0YWNrKCk7Ci0gICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRv
cigpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNyZW1lbnRE
ZWZlcnJhbERlcHRoKCk7CiAgICAgICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwpA
QCAtMjU2LDYgKzI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSGVh
cE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9y
IG1fYmxvY2tBbGxvY2F0b3I7CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJ
RFRhYmxlOwogICAgICAgICBNYXJrZWRTcGFjZSBtX29iamVjdFNwYWNlOwogICAgICAgICBDb3Bp
ZWRTcGFjZSBtX3N0b3JhZ2VTcGFjZTsKICAgICAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8
QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMjAgKzIyMywy
MiBAQCBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vCiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2UucHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25vcm1hbERl
c3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7
Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9j
YXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9ub3JtYWxE
ZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNl
QWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQotCiAgICAgbV9ub3Jt
YWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25vcm1hbERl
c3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQorICAgICAg
ICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRv
ci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBy
ZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNw
YWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1faW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5s
YXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4gZnVuY3Rv
ci5yZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0pTU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9KU1N0YWNrLmNwcAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0pTU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4
IEBAIEpTU3RhY2s6OkpTU3RhY2soVk0mIHZtLCBzaXplX3QgY2FwYWNpdHkKIAogSlNTdGFjazo6
fkpTU3RhY2soKQogewotICAgIHZvaWQqIGhpZ2hBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdF9w
dHI8dm9pZCo+KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jlc2VydmF0aW9uLmJhc2UoKSkgKyBtX3Jl
c2VydmF0aW9uLnNpemUoKSk7Ci0gICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1pdChyZWludGVycHJl
dF9jYXN0X3B0cjx2b2lkKj4obV9jb21taXRFbmQpLCByZWludGVycHJldF9jYXN0PGludHB0cl90
PihoaWdoQWRkcmVzcykgLSByZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2NvbW1pdEVuZCkp
OworICAgIHZvaWQqIGhpZ2hBZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8Y2hhcio+KG1fcmVzZXJ2YXRpb24uYmFzZSgpKSArIG1fcmVzZXJ2YXRpb24uc2l6ZSgp
KTsKKyAgICBtX3Jlc2VydmF0aW9uLmRlY29tbWl0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1f
Y29tbWl0RW5kKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaGlnaEFkZHJlc3MpIC0gcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9jb21taXRFbmQpKTsKICAgICBhZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudCgtKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGhpZ2hBZGRyZXNzKSAtIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fY29tbWl0RW5kKSkpOwogICAgIG1fcmVzZXJ2YXRp
b24uZGVhbGxvY2F0ZSgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2LDkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gcGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFs
UmVnaXN0ZXI+KG9wZXJhbmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0
KEdQUlJlZyBzdHJ1Y3R1cmVSZWcpCisgICAgSnVtcCBicmFuY2hJZkNlbGxOb3RPYmplY3QoR1BS
UmVnIGNlbGxSZWcpCiAgICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVz
cyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoT2JqZWN0VHlwZSkpOworICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVz
cyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9i
amVjdFR5cGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIo
R1BSUmVnIHByZXNlcnZlMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZh
bGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNl
cnZlNCA9IEludmFsaWRHUFJSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlz
aW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMCw3ICszMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgZW1pdExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwog
ICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJ
RCB2YWx1ZSk7Ci0gICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0
cnVjdHVyZVJlZyk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0
ZXJJRCBjZWxsUmVnKTsKIAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
ayhKU0NlbGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQgc2Ny
YXRjaCk7CiAgICAgICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCos
IFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
UmVnaXN0ZXJJRCBzY3JhdGNoKTsKQEAgLTMzNSw4ICszMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHVuc2lnbmVkLCBSZWdpc3RlcklE
KSB7IH0KICAgICAgICAgdm9pZCBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKFJlZ2lzdGVySUQpIHsg
fQogI2VuZGlmCi0gICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklE
IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2Zp
bGUqKTsKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRl
eChSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNo
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIEFycmF5UHJvZmlsZSopOworICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsQW5kSW5kZXhpbmdU
eXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICB2b2lkIGVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKEFycmF5UHJvZmls
ZSopOwogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNl
KEFycmF5UHJvZmlsZSopOwogICAgICAgICAKQEAgLTM3Niw2ICszNzYsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBlbnVtIEZpbmFsT2JqZWN0TW9kZSB7IE1heUJlRmlu
YWwsIEtub3duTm90RmluYWwgfTsKIAorICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdp
dGhUeXBlSW5mbyhSZWdpc3RlcklEIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3Rl
cklEIHNjcmF0Y2gpOworICAgICAgICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5m
byhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNj
cmF0Y2gpOworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gSnVtcCBicmFuY2hTdHJ1Y3R1
cmUoUmVsYXRpb25hbENvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVjdHVyZSopOworCiAj
aWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICAgICAgYm9vbCBnZXRPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQoaW50IG9wMSwgaW50IG9wMiwgaW50JiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZp
c2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDggKzc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0
X29iamVjdF9vcl90aGlzKElucwogCiAgICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDAp
OwogICAgIEp1bXAgbm90SlNDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVt
aXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJ
ZkNlbGxOb3RPYmplY3QocmVnVDApOwogCiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihyZWdUMik7CiAgICAgZW1pdEdldENhbGxlckZyYW1lRnJvbUNhbGxGcmFtZUhl
YWRlclB0cihjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC0yNDgsOCArMjQ3LDggQEAgdm9pZCBKSVQ6
OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0g
b3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRMb2Fk
KHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMo
MCksIHJlZ1QwLCByZWdUMSk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
MSk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7Cisg
ICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUt
PmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmso
dGhpcyk7CiAgICAgICAgIH0KICAgICAKQEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZFeGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAg
ICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVD
aGFpbigpKSwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3Bw
CShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5n
VGhpcygwKSwgcmVnVDApOwogICAgICAgICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpT
Q2VsbChyZWdUMCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMCwg
aW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJl
KCkpOworICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QxKTsKKyAgICAgICAgICAgIHN0b3JlMzIocmVnVDEsIGluc3RydWN0
aW9uWzZdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwog
ICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQ
dHIoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2Fz
ZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkp
KTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9m
U2NvcGVDaGFpbigpKSwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1ODM4MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0
b3I6OmZpbmFsaXplKExpbmtCdWZmCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aENoZWNrcyhNYWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewot
ICAgIG1fc3RydWN0dXJlQ2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAor
ICAgIG1fc3RydWN0dXJlQ2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgIG1fc3RydWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihy
ZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICBtX3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMigwKSk7CiAgICAgCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZl
cnRpYmxlTG9hZFB0cigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBh
eWxvYWRHUFIoKSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1f
dmFsdWU7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVy
ZUltbTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2Fk
OwogICAgIEFzc2VtYmxlckxhYmVsIG1fbG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZh
aWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKDEpKSk7CiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRo
dW5rSGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5h
cHBlbmQoYnJhbmNoVGVzdDMyKFplcm8sIGRzdCkpOwpAQCAtNTUxLDcgKzU1MSw3IEBAIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6
Okp1bXAgSklUOjpjaGVja1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAg
IHJldHVybiBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJiBpdGVyLCBpbnQgdlJlZykKQEAgLTU5OSw5ICs1OTksOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dUb0hvCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRl
Y29kZU9mZnNldCArIHJlbGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUg
SklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJl
ZykKK0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3Qo
UmVnaXN0ZXJJRCBjZWxsUmVnKQogewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNz
KHN0cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihPYmplY3RUeXBlKSk7CisgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2Vs
bFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSk7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC02NzIsMTEgKzY3Miwx
MSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlc3VsdCksIHNjcmF0Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJl
c3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsK
IAotICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRy
KHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
LQogICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRl
cgogICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdz
IHN0cnVjdHVyZQorICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUs
IHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC03
MzEsMjYgKzczMSwyNiBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogCi1pbmxpbmUgdm9pZCBKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNl
bGxBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJh
eVByb2ZpbGUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOyAvLyBXZSBoYWQgZm91bmQg
dGhpcyBzY3JhdGNoIHJlZ2lzdGVyIHVzZWZ1bCBoZXJlIGJlZm9yZSwgc28gSSB3aWxsIGtlZXAg
aXQgZm9yIG5vdy4KKyAgICBSZWdpc3RlcklEIGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlOwor
ICAgIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZTsKICAgICAK
LSAgICBSZWdpc3RlcklEIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAg
ICBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsKLSAg
ICAKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBzdG9yZVB0cihzdHJ1
Y3R1cmUsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAg
aWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7
CisgICAgICAgIHN0b3JlMzIoc2NyYXRjaCwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkpOworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlLCBT
dHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAgICBsb2Fk
OChBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5
cGUpOwogfQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRl
Y29kZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklE
IHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRB
cnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxs
QW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiB7CiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0
T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVXaXRoQ2VsbChjZWxsQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+
Z2V0T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1
cmVBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gsIDApOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgc2NyYXRjaCwgMCk7CiAjZW5kaWYKIH0KIApAQCAtMTI0
NCw2ICsxMjQ0LDUzIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW0K
IAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6
OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwg
UmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEKQoreworICAgIGNvbnN0IFN0cnVjdHVyZSogc3Ry
dWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFs
dWUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdWludDY0X3QgYmxvYlRvU3RvcmUgPSAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHN0cnVjdHVyZVB0cikgKyBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpOworICAg
IHN0b3JlNjQoVHJ1c3RlZEltbTY0KGJsb2JUb1N0b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+b2JqZWN0SW5pdGlhbGl6YXRpb25GaWVsZHMo
KSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZz
ZXQoKSkpOworICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
ZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKK30KKworQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVy
SUQgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKK3sKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmUsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIHN0
b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgIC8vIExvYWQgYW5kIHN0b3JlIDMyIGJ5dGVz
IGF0IGEgdGltZS4KKyAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
LCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgc3RvcmUz
MihzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGUgU3RydWN0dXJlSUQKKyAgICBzdG9y
ZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
SklUOjpKdW1wIEpJVDo6YnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0
aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICByZXR1cm4gYnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIFRy
dXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGJyYW5jaFB0
cihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNl
bmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK01hY3JvQXNzZW1ibGVyOjpKdW1wIGJy
YW5jaFN0cnVjdHVyZShNYWNyb0Fzc2VtYmxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRp
b25hbENvbmRpdGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBqaXQuYnJhbmNoMzIoY29u
ZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0
dXJlLT5pZCgpKSk7CisjZWxzZQorICAgIHJldHVybiBqaXQuYnJhbmNoUHRyKGNvbmRpdGlvbiwg
bGVmdEhhbmRTaWRlLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsK
KyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw4ICsyNTYsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2VWYWwpOwogICAgIAogICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAnSW1wbGVt
ZW50c0hhc0luc3RhbmNlJy4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCkBAIC0yNzYsOCArMjc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAg
ICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDMpOwotICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDMpKTsKKyAgICBhZGRTbG93Q2Fz
ZShlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMSkpOwogCiAgICAgLy8gT3B0aW1pc3RpY2Fs
bHkgbG9hZCB0aGUgcmVzdWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRp
YWxseSwgcmVnVDEgc3RpbGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5z
IHZhbHVlLgpAQCAtMjg3LDcgKzI4NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
SW5zdHJ1Y3Rpb24KIAogICAgIC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgY2VsbCBpbiBy
ZWdUMi4gIElmIHRoaXMgaXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNl
LCBjaGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0
aGUgbG9vcCwgaWYgbm90IGdvIGFnYWluLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFu
Y2UgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CiAgICAgYnJhbmNoVGVzdDMyKE5v
blplcm8sIHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkBAIC0zNDMsMTIgKzM0MSwxMiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0g
anVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVn
VDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBt
b3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IGp1bXAoKTsKICAgICAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGlu
ayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBjb21wYXJlMzIoRXF1YWws
IHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMzg3LDggKzM4NSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJl
Z1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgo
RXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihT
dHJpbmdUeXBlKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKICAgICBp
c05vdENlbGwubGluayh0aGlzKTsKQEAgLTQyNyw3ICs0MjQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF90b19wcmltaXRpdmUoSW5zdHJ1Y3RpCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDAp
OwogCiAgICAgSnVtcCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIGlz
SW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTU1NCw5ICs1NTEsOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAKICAgICBKdW1wIGlz
SW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVj
ayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAg
ICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJl
Z1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwog
ICAgIEp1bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7CkBAIC01
ODAsOSArNTc2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKgog
CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxs
IGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVy
ZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBh
ZGRKdW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdhc05vdEltbWVk
aWF0ZSA9IGp1bXAoKTsKQEAgLTYzNiw4ICs2MzEsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
ZXEoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0
ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gdGFn
cyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwotICAgIGdlbmVyaWNDYXNlLmFw
cGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIAogICAgIC8vIFN0cmlu
ZyBjYXNlLgogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCByZWdU
MCwgcmVnVDIpOwpAQCAtNjgwLDggKzY3NSw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEo
SW5zdHJ1Y3Rpb24qIGMKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikp
OyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0YWdzIGVx
dWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5k
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAg
IGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAgICAgLy8gU3RyaW5nIGNh
c2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIHJlZ1QwLCBy
ZWdUMik7CkBAIC03MTEsOCArNzA2LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKElu
c3RydWN0aW9uKgogCiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBib3RoIGFyZSBzdHJp
bmdzLgogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBKdW1wIGZpcnN0Tm90U3RyaW5nID0gYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICBKdW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwg
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMp
OwogICAgIGZpcnN0Tm90U3RyaW5nLmxpbmsodGhpcyk7CiAKQEAgLTc2OSwxMiArNzY0LDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0TG9hZChz
cmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAg
ICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDEpOwogICAgIEp1bXAgd2FzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmUz
MihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC04MDAsMTIgKzc5NSwxMiBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1pdExvYWQoc3JjLCBy
ZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQu
bGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlMzIoTm90
RXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDEpOwpAQCAtODQ0LDEwICs4MzksOCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdExvYWQoYmFzZSwgcmVn
VDEsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJh
c2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBpZiAoVmlydHVhbFJlZ2lz
dGVyKGJhc2UpICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQo
ZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoVmlydHVhbFJlZ2lz
dGVyKGJhc2UpICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5lIHRoZSBjYXNlIHdo
ZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0
IHNlZW0gdG8gYmUgaG90LgpAQCAtOTAwLDcgKzg5Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
eHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKHBheWxvYWRGb3IoYmFzZSksIHJlZ1Qw
KTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBj
YWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3Mo
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkU3RydWN0dXJlKSkpKSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hh
aW4KQEAgLTkxMSw3ICs5MDQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3Ry
dWN0aW9uCiAgICAgTGFiZWwgY2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgY2FsbEhhc1Byb3Bl
cnR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90
b3R5cGVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjYWxs
SGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVn
VDMpKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3RydWN0dXJlKikpLCByZWdU
Myk7CiAgICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNo
ZWNrUHJvdG90eXBlLCB0aGlzKTsKQEAgLTExNjQsOCArMTE1Nyw4IEBAIHZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJl
Z1QzLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2Fz
ZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKICAg
ICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw4ICsx
MjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVmFsKTsKIAogICAgIC8vIENoZWNr
IHRoYXQgYmFzZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNlJy4KLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xNDksOCArMTQ4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUg
aXMgYW4gb2JqZWN0Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDMpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RPYmplY3Qo
cmVnVDMpKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMSkp
OwogICAgIAogICAgIC8vIE9wdGltaXN0aWNhbGx5IGxvYWQgdGhlIHJlc3VsdCB0cnVlLCBhbmQg
c3RhcnQgbG9vcGluZy4KICAgICAvLyBJbml0aWFsbHksIHJlZ1QxIHN0aWxsIGNvbnRhaW5zIHBy
b3RvIGFuZCByZWdUMiBzdGlsbCBjb250YWlucyB2YWx1ZS4KQEAgLTE2MCw3ICsxNTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAKICAgICAvLyBMb2FkIHRo
ZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdCBpbiByZWdUMi4gIElmIHRoaXMgaXMgZXF1YWwgdG8g
cmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAt
IGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0aGUgbG9vcCwgaWYgbm90IGdvIGFnYWluLgot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QzKTsKICAgICBs
b2FkNjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1Qy
KTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7
CiAgICAgZW1pdEp1bXBJZkpTQ2VsbChyZWdUMikubGlua1RvKGxvb3AsIHRoaXMpOwpAQCAtMTg1
LDEyICsxODMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aQog
ICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKICAgICBpc0NlbGwubGluayh0aGlzKTsKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
MSk7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25a
ZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIG5v
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDEs
IHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwg
cmVnVDEsIHJlZ1QwKTsKQEAgLTIzMiw4ICsyMzAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19z
dHJpbmcoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVn
VDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAg
ICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDEpOwotICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7
CisgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKICAgICBlbWl0VGFn
QXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCkBA
IC0yOTQsOCArMjkxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKElu
cwogICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IGluICVlYXguCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZVJlZ2lz
dGVyKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmV0dXJuVmFs
dWVSZWdpc3Rlcik7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJldHVyblZhbHVlUmVnaXN0ZXIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBl
bWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKTsKKyAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1w
SWZDZWxsTm90T2JqZWN0KHJldHVyblZhbHVlUmVnaXN0ZXIpOwogCiAgICAgLy8gR3JhYiB0aGUg
cmV0dXJuIGFkZHJlc3MuCiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0
cihyZWdUMSk7CkBAIC0zMzEsNyArMzI3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0
aXZlKEluc3RydWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAg
ICAgCiAgICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgCisgICAgICAg
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBt
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAg
ICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0zODMsOCArMzgxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
amVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElm
Tm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0g
Y2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7
Ci0gICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsK
ICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIG1hc3F1ZXJh
ZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAtNDA2LDggKzQwNCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbioKICAgICBKdW1wIGlzSW1tZWRp
YXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICAvLyBGaXJzdCwgaGFuZGxl
IEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBz
dHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGVtaXRMb2Fk
U3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7
CkBAIC01MDIsMTAgKzUwMCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1
Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBpZiAo
IW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9i
amVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAgIGlmIChiYXNlICE9
IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1p
dEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVC
bG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3Qo
cmVnVDApKTsKIAogICAgIC8vIFdlIGNvdWxkIGlubGluZSB0aGUgY2FzZSB3aGVyZSB5b3UgaGF2
ZSBhIHZhbGlkIGNhY2hlLCBidXQKICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJl
IGhvdC4KQEAgLTU1OSw3ICs1NTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKElu
c3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAKICAg
ICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
cmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRP
RihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSkpOwogCiAgICAg
Ly8gVGVzdCBiYXNlJ3MgcHJvdG90eXBlIGNoYWluCkBAIC01NzAsNyArNTY2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIExhYmVsIGNoZWNrUHJvdG90
eXBlKHRoaXMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoZW1pdEp1bXBJ
Zk5vdEpTQ2VsbChyZWdUMikpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwg
cmVnVDIsIHJlZ1QxKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihz
aXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBB
ZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0aGlzKTsKQEAgLTc0OCwxMiAr
NzQ0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlz
KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAg
LTc4MCwxMiArNzc2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9u
KiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlz
SW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQu
bGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIs
IHJlZ1QwKTsKQEAgLTg1MSwxMSArODQ3LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMo
SW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgbG9hZFB0cihjYWNoZWRTdHJ1Y3R1cmUsIHJl
Z1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKKyAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2NhbGxlZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTI3LDYg
KzkyNCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW8KICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3Ro
aXMpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1
ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6
c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAg
ICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBw
ZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGppdCwgTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDEsIGFuZCBzdGFydCB0aGUg
cHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5s
b2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgp
KSwgcmVnVDEpOwpAQCAtMTM3LDggKzEzNyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92
YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDEp
OworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMSwgcmVnVDMsIHByb2Zp
bGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QxKTsK
IAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAKICAgICBKdW1wIG5vbkNlbGwgPSBq
dW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAg
SnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVtaXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1Yihz
dHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwpAQCAtMjgyLDggKzI4Miw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5z
dHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMs
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdT
aXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CisgICAgbW92ZShyZWdUMCwgcmVnVDEpOworICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOwog
ICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKICAgICAK
ICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC00NzgsOCArNDc4LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAg
ICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMiwgcmVnVDMs
IG1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CisgICAgICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDIsIHJl
Z1QzLCBtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICB9CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKQEAgLTYzNCw3ICs2MzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUo
SW5zdHJ1Y3RpCiAgICAgZW1pdExvYWRQYXlsb2FkKGl0ZXIsIHJlZ1QxKTsKICAgICAKICAgICAv
LyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9G
KEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2Fk
MzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVn
VDMpOwpAQCAtNzM0LDcgKzczNCw3IEBAIHZvaWQgSklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayhpbnQKIHsKICAgICBlbWl0TG9hZChzY29wZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKHN0cnVjdHVyZVNsb3QsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMikp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRH
ZXRHbG9iYWxQcm9wZXJ0eSh1aW50cHRyX3QqIG9wZXJhbmRTbG90KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE1
ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1NiwxMCBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJp
bmdHZXRCeVZhbFN0dWJHZW5lCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBK
dW1wTGlzdCBmYWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIodm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQo
SlNDOjpicmFuY2hTdHJ1Y3R1cmUoaml0LAorICAgICAgICBOb3RFcXVhbCwgCisgICAgICAgIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICB2bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8g
cmVnVDIsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIg
aW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpq
c1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDIpOwpAQCAtMTExLDggKzExNCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICB6ZXJvRXh0ZW5kMzJUb1B0
cihyZWdUMSwgcmVnVDEpOwogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1Qw
LCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMs
IHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVk
SW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAKICAgICBQYXRjaGFibGVKdW1wIGJh
ZFR5cGU7CkBAIC0yMDksNyArMjEyLDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBi
YXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAg
bm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbCht
X3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKSk7CiAg
ICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yODAsNyArMjg1LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JKRUNU
X09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsK
ICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0z
MigxKSwgcmVnVDMpOwpAQCAtMzIxLDggKzMyNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgog
ICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsK
ICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAgICAg
CiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtNTE4LDggKzUyMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDEpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdU
MSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7
CisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwo
cmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICB9CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKQEAgLTY5OCw3ICs3MDMsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwg
cmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBy
ZWdUMSkpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkK
QEAgLTc2MCw2ICs3NjcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUo
SW5zCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBD
bG9zdXJlVmFyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21T
Y29wZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODI0LDYgKzgzMyw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHIKICAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gR2xvYmFsVmFyIHx8IHJlc29sdmVUeXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRUb1Njb3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODc2
LDcgKzg4Nyw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAg
ICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0
Y2hwb2ludChtX2NvZGVCbG9jaykpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJh
bmNoUHRyKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3Ry
dWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHN0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0
aGlzKTsKICNlbmRpZgpAQCAtODg1LDcgKzg5Niw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVj
dHVyZVRyYW5zaXRpb25DaGUKICAgICB9CiAgICAgCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9i
amVjdCksIHNjcmF0Y2gpOwotICAgIHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
c2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3Jh
dGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiB2b2lk
IEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFp
bHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkBAIC0xMDI5LDcgKzEwNDAsMTMgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QgogICAgIAogICAgIEp1bXBMaXN0
IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVz
aChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBzY3JhdGNoLCBy
ZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNlbmRpZgog
ICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRj
aCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZv
Rm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZM
ZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTEwOTksOCArMTExNiwxNCBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAjZW5kaWYKICAgICAKICAgICBKdW1w
TGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisg
ICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShiYXNlLCBzY3Jh
dGNoLCByZWdUMik7CisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsKKyNl
bmRpZgogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
c2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xh
c3NJbmZvRm9yVHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZl
clZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKQEAgLTExNTIsNyArMTE3NSw3IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKGJh
c2UsIGVhcmx5U2NyYXRjaCwgbGF0ZVNjcmF0Y2gpOwogICAgIGJhZFR5cGUgPSBwYXRjaGFibGVC
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRy
ZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIApA
QCAtMTIxOCw3ICsxMjQxLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJy
YXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFk
ZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZSwgZWFybHlTY3JhdGNoLCBsYXRlU2NyYXRjaCk7CiAg
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNj
cmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNz
SW5mb0ZvclR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3Zl
T3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pT
SW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw3ICsyMzcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0No
ZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAg
SnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2Ny
YXRjaFJlZywgSlNUeXBlKTsKKyAgICAgICAgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShSZWdpc3Rl
cklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpOworICAgICAg
ICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsKIAog
ICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJh
bWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lz
dGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwpAQCAtMzg4LDEwICsz
ODksMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5M
SU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlw
ZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlIHR5cGUp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZFN0cnVjdHVy
ZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gp
CiAgICAgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwotICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVh
bCwgQWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKHR5cGUpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBkZXN0KTsKKyAgICAgICAgbG9hZFB0cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUo
KS5iYXNlKCksIHNjcmF0Y2gpOyAKKyAgICAgICAgbG9hZFB0cihCYXNlSW5kZXgoc2NyYXRjaCwg
ZGVzdCwgVGltZXNFaWdodCksIGRlc3QpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNj
cmF0Y2gpOworICAgICAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0
SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSB0eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgUmVnaXN0ZXJJRCB0
bywgUmVnaXN0ZXJJRCBmcm9tKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCwxMCBAQAogCiAjaW5jbHVkZSAiQ0Nh
bGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lSW5saW5lcy5oIgorI2luY2x1ZGUgIkRG
R1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCisj
aW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQ
dXRCeUlkTGlzdC5oIgpAQCAtNjYsNyArNjksNyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNl
bGZBY2Nlc3MoQ29kZUJsCiAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1
Y3R1cmUgY2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIu
cmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQo
LShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJl
KTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNr
SW1tVG9DYWxsKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAg
IHJlcGF0Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJl
dHVybkxvY2F0aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvU3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgIGlmIChjb21wYWN0KQpAQCAtOTQsMTAgKzk3LDEwIEBAIHN0YXRpYyB2
b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0
ZSB0aGlzIGNvZGUsIHRoZSBvYmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0
LiBBc3NlcnQKICAgICAgICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICBqaXQuYnJlYWtwb2lu
dCgpOwogICAgICAgICBvay5saW5rKCZqaXQpOwogI2VuZGlmCkBAIC0xMDYsMTAgKzEwOSwxMCBA
QCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgCiAgICAgaml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7
CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCgKLSAgICAgICAgaml0LmJyYW5jaFB0cigKKyAgICAg
ICAgYnJhbmNoU3RydWN0dXJlKGppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAg
ICAgIHN0cnVjdHVyZSkpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9u
Q2hlY2soCkBAIC0xMjgsMTAgKzEzMSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFu
c2l0aW9uQ2hlY2soCiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmVy
JiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CisgICAgaWYgKE1hY3Jv
QXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsK
ICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBh
dGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAot
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJB
dE9mZnNldCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaE9uQWRkcmVzcygKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgLShp
bnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCiAgICAgICAgICAg
ICBDb2RlTG9jYXRpb25MYWJlbCh0YXJnZXQpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcg
KzIwOSwxMCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAg
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAKLSAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAg
ICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgc3RydWN0
dXJlKSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwog
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0yODIs
OCArMjg4LDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAg
ICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAg
ICAgICAKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsgCi0gICAgICAg
IHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0
LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdU
eXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChz
dHViSml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkpOwogICAgICAgICBmYWlsdXJlQ2Fz
ZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3Jh
dGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkp
OwogICAgICAgICAKQEAgLTQ2OSw3ICs0NzQsMTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRC
eUlETGlzdChFeGVjU3RhdAogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQo
dm0sIGNvZGVCbG9jayk7CiAgICAgICAgIAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3
cm9uZ1N0cnVjdCA9IHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0cnVjdCA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0
LAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAorICAgICAgICAgICAgc3RydWN0dXJlKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBz
dHJhdGVneSB3ZSB1c2UgZm9yIHN0dWJzIGlzIGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEpIENh
bGwgREZHIGhlbHBlciB0aGF0IGNhbGxzIHRoZSBnZXR0ZXIuCkBAIC02ODIsMTAgKzY5MCwxMCBA
QCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgICAgIHN0dWJKaXQucHVzaFRv
U2F2ZShzY3JhdGNoR1BSKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRT
dHJ1Y3R1cmUgPSBzdHViSml0LmJyYW5jaFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBi
YWRTdHJ1Y3R1cmUgPSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVy
ZSk7CiAgICAgCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShK
U1ZBTFVFNjQpCkBAIC04MTEsNyArODE5LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0
aW9uU3R1YigKICAgICAgICAgICAgIAogICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBvbGRTdHJ1Y3R1
cmUpKTsKICAgICAKICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9s
ZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5m
bywgc3R1YkppdCwgZmFpbHVyZUNhc2VzLApAQCAtODY5LDcgKzg4MCw3IEBAIHN0YXRpYyB2b2lk
IGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgc2NyYXRjaEdQUjFIYXNTdG9yYWdlID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3R1YkppdCwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBp
ZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQu
c3RvcmU2NCh2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CkBAIC0xMTgyLDEwICsxMTkzLDEw
IEBAIHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJbigKICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVT
Y3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJh
bmNoUHRyKAorICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHVi
Sml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgICAg
IAogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0xMzEwLDEw
ICsxMzIxLDEwIEBAIHZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSogZXhlYywgQ2EKICNl
bmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAgICAgICAgc3R1YkppdC5icmFuY2hQ
dHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxs
ZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVy
czo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAg
ICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAg
IHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTM3OSwxNiArMTM5MCwxNiBAQCB2b2lkIGxpbmtDbG9z
dXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhCiB2b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVm
ZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAg
cmVwYXRjaEJ1ZmZlci5yZWxpbmsoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRp
b25HZXRCeUlkT3B0aW1pemUpOwotICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1
cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNl
dCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlm
IChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0
Y2goKSkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3Rh
cnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCks
CisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2Fu
SnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBv
aW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVs
LCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQ
b2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2go
c3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHVi
SW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7CiAjZWxzZQpAQCAtMTQxMywx
NiArMTQyNCwxNiBAQCB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAg
ICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dE9wdGltaXplOwogICAgIH0KICAgICByZXBhdGNoQnVmZmVyLnJlbGluayhzdHViSW5mby5jYWxs
UmV0dXJuTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0
YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1t
VG9DYWxsKTsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJl
cGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Mo
c3RydWN0dXJlTGFiZWwpLAorICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxh
YmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShp
bnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAoTWFj
cm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkg
eworICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2goCisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0
Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAot
ICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgICAgICAgICAgICAg
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAgICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikp
OworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8
aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVwYXRj
aEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0
T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVj
aWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBF
TkFCTEUoSklUKQogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpJVC5oIgor
I2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgogI2lu
Y2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC02NSwxNCArNjcs
MTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQo
Vk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWls
dXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKCp0aGlzLCBO
b3RFcXVhbCwgCisgICAgICAgICAgICAgICAgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVj
aWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lz
dGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxv
YWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAg
ICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgICAgICBhcHBl
bmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6
OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAg
ICAgICAvLyBXZSBoYXZlIHRvIHJlbG9hZCB0aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1
Y3R1cmUgY2xvYmJlcmVkIGl0LgorICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVu
dCwgZHN0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1
bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2
aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3JzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVj
dWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCkBAIC0xNjgsNyArMTY5LDcgQEAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwKICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgIERG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRMb2FkU3RydWN0dXJlKGppdCwgR1BSSW5mbzo6bm9uQXJn
R1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMiwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgc2xv
d0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpOb3RFcXVhbCwKQEAgLTk4Niw5ICs5ODcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGFycmF5SXRlcmF0CiAgICAgaml0LmxvYWQzMihBZGRyZXNzKFNwZWNpYWxpemVk
VGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9mZnNldE9mTmV4dEluZGV4KCkpLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CiAgICAgCiAgICAgLy8gUHVsbCBvdXQgdGhlIGJ1
dHRlcmZseSBmcm9tIGl0ZXJhdGVkT2JqZWN0Ci0gICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKLSAgICAKLSAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICBqaXQubG9hZDgoQWRkcmVzcyhTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKICAgICBqaXQubG9hZFB0cihBZGRyZXNzKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBTcGVj
aWFsaXplZFRodW5rSklUOjpyZWdUMik7CiAgICAgCiAgICAgaml0LmFuZDMyKFRydXN0ZWRJbW0z
MihJbmRleGluZ1NoYXBlTWFzayksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9pbnRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9pbnRlci5oCShyZXZpc2lvbiAxNTgz
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1VudXNlZFBvaW50ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB1bnVzZWRQb2ludGVyID0gMHgwOwor
I2Vsc2UKIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdW51c2VkUG9pbnRlciA9IDB4ZDFlN2JlZWY7
CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShy
ZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4NiwyNCBAQCBt
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlCiAgICAgICAgIHBheWxvYWQp
CiBlbmQKIAorbWFjcm8gc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJl
LCBzY3JhdGNoKQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtj
ZWxsXQorCisgICAgbG9hZGkgU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVdLCBz
Y3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0K
KworIyAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0
Y2gKKyMgICAgc3RvcmViIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKyMK
KyMgICAgbG9hZGIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nbc3Ry
dWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2Nl
bGxdCisjCisjICAgIGxvYWRiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5
cGVbY2VsbF0KKyMKKyMgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W2NlbGxdCitlbmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKICAgICAjIE5v
dGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVt
ZW50YWwgY29sbGVjdG9yLgogZW5kCkBAIC00MjgsNyArNDQ2LDcgQEAgX2xsaW50X29wX3RvX3Ro
aXM6CiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MAogICAgIGJibmVxIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhp
c1Nsb3cKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKICAgICBicG5lcSB0MCwgdDIs
IC5vcFRvVGhpc1Nsb3cKQEAgLTUwOSw3ICs1MjcsNyBAQCBfbGxpbnRfb3BfZXFfbnVsbDoKICAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRp
YXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVx
TnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAsIHQxCiAgICAgam1wIC5vcEVx
TnVsbE5vdEltbWVkaWF0ZQpAQCAtNTU2LDcgKzU3NCw3IEBAIF9sbGludF9vcF9uZXFfbnVsbDoK
ICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbElt
bWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAu
b3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMSwgdDEKICAgICBqbXAg
Lm9wTmVxTnVsbE5vdEltbWVkaWF0ZQpAQCAtNTgzLDggKzYwMSw4IEBAIG1hY3JvIHN0cmljdEVx
KGVxdWFsaXR5T3BlcmF0aW9uLCBzbG93UGEKICAgICBiaW5lcSB0MiwgdDMsIC5zbG93CiAgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CiAgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJp
bmcKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQzCiAgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5
cGUsIC5ub3RTdHJpbmcKICAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdwogLm5vdFN0cmluZzoKQEAgLTg1NSw3ICs4
NzMsNyBAQCBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBsb2FkaSAxMltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDBdLCB0MAogICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKQEAgLTg3MCw3ICs4ODgsNyBAQCBfbGxpbnRfb3Bf
aW5zdGFuY2VvZjoKICAgICBsb2FkaSAxMltQQ10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0
YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFdLCB0MgogICAgIGJiYiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2Vv
ZlNsb3cKICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQpAQCAtODc4LDcgKzg5Niw3
IEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJv
dG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAogLm9wSW5zdGFuY2VvZkxvb3A6Ci0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
UGF5bG9hZE9mZnNldFt0Ml0sIHQyCiAgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25l
CiAgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCkBAIC05MDUsNyArOTIzLDcgQEAgX2xs
aW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNVbmRlZmluZWRDZWxsOgotICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCkBAIC05NDgsNyArOTY2LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCiAgICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJ
c1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MAogICAgIGNiZXEgU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCiAgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAg
LTEwMTcsNyArMTAzNSw3IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAg
ICAgICB0MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNj
cmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5v
cEdldEJ5SWRTbG93CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQogICAgICAg
ICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCiAgICAg
ICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgpAQCAt
MTA0NSw3ICsxMDYzLDcgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZGkg
OFtQQ10sIHQwCiAgICAgbG9hZHAgMTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QXJyYXlMZW5ndGhTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0
MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdT
aGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3RoU2xvdwpAQCAtMTA4OSw3ICsxMTA3LDcgQEAgbWFj
cm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgICAgIHQwLAogICAgICAgICB0MywK
ICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAg
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwog
ICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHNj
cmF0Y2gsIHQyKQpAQCAtMTExNyw3ICsxMTM1LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxv
YWRpIDEyW1BDXSwgdDIKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CiAgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGkgMjBb
UENdLCB0MQogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKQEAgLTExMzAsNyArMTE0OCw3IEBAIG1h
Y3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICAgICAgICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W3QzXQogICAgICAgICAgICAgbG9hZGkgMjRbUENdLCB0MQogICAgICAg
ICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICAgICAgc3RvcmVwIHQx
LCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRo
VHlwZUluZm8odDAsIHQxLCB0MikKICAgICAgICAgICAgIGRpc3BhdGNoKDkpCiAgICAgICAgIGVu
ZCkKIGVuZApAQCAtMTE0OCw3ICsxMTY2LDcgQEAgbWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mo
b2xkU3RydWN0dXJlLAogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZGkgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxs
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJl
CiAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAg
YWRkcCA0LCBzY3JhdGNoCiAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09m
ZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcApAQCAtMTE3NSw3ICsxMTkzLDcgQEAg
X2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDhb
UENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0
MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgbG9hZHAgMTZb
UENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQogICAgIGxvYWRpIDEyW1BDXSwg
dDMKQEAgLTEyNjEsNyArMTI3OSw3IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1l
U2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQwCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDMKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJwbmVxIHQwLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93
CiAgICAgbG9hZGkgMjRbUENdLCB0MAogICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKQEAgLTEz
MDQsNyArMTMyMiw3IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0MV0sIHQyCiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0
MiwgdDMsIHQwKQogICAgIGxvYWRpIDhbUENdLCB0MApAQCAtMTQxNiw3ICsxNDM0LDcgQEAgbWFj
cm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYQogICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
dDIKICAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTE1NDcsNyArMTU2
NSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVE
YXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAg
IGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhy
b3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAogICAgIGJpbmVxIEpTU3RyaW5nOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKQEAgLTE1
OTEsOSArMTYwOSw5IEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwoKQogICAgICAgICBuZWdp
IHQzCiAgICAgICAgIGJpbmVxIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQz
LCA4XSwgQ2VsbFRhZywgLmRvbmUKICAgICAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKLSAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQwCisgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQwCiAgICAgICAgIGxvYWRwIDI0W1BDXSwgdDEKLSAgICAgICAgc3RvcmVwIHQwLCBBcnJheVBy
b2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDFdCisgICAgICAgIHN0b3JlcCB0MCwgQXJyYXlQ
cm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbdDFdCiAgICAgLmRvbmU6CiAgICAgZW5kCiBl
bmQKQEAgLTE2NTgsNyArMTY3Niw3IEBAIF9sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAg
ICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
CiAgICAgZG9SZXR1cm4oKQogCkBAIC0xNjc0LDcgKzE2OTIsNyBAQCBfbGxpbnRfb3BfdG9fcHJp
bWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UK
IC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KQEAgLTE3MDMsNyArMTcyMSw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogICAgIGxvYWRpIDhbUENdLCB0MwogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1
cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE3MTEsNyArMTcyOSw3IEBAIF9sbGludF9vcF9uZXh0
X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgogICAgIGJpZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNs
b3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0s
IHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBu
YW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3AKQEAgLTE5ODMsNyArMjAwMSw3IEBAIG1hY3JvIGxvYWRXaXRoU3RydWN0
dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwg
dDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhdLCB0MAogICAgIGxvYWRwRnJvbUluc3RydWN0aW9u
KDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgKIGVuZAog
CiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTU4MzgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsxOTMsNDEgQEAgbWFjcm8gdmFsdWVQcm9maWxlKHZh
bHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIGVuZAogZW5kCiAKK21hY3JvIGxvYWRTdHJ1Y3R1cmUo
Y2VsbCwgc3RydWN0dXJlKQorZW5kCisKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChj
ZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0
Y2gKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2Fk
cCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6
Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIFtzY3JhdGNoLCBzdHJ1Y3R1cmUsIDhdLCBz
dHJ1Y3R1cmUKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKGNl
bGwsIHN0cnVjdHVyZSkKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0
cnVjdHVyZQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3ZtW2NlbGxdLCBjZWxsCisgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCisgICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQorZW5kCisKK21hY3JvIHN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2Fk
cSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURbc3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3Jl
cSBzY3JhdGNoLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0KKworIyAgICBsb2FkYiBTdHJ1
Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAgc3RvcmViIHNj
cmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KKyMKKyMgICAgbG9hZGIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nbc3RydWN0dXJlXSwgc2NyYXRjaAor
IyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX2ZsYWdzW2NlbGxdCisjCisjICAgIGxvYWRi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbc3RydWN0dXJlXSwgc2Ny
YXRjaAorIyAgICBzdG9yZWIgc2NyYXRjaCwgSlNDZWxsOjptX3R5cGVbY2VsbF0KKyMKKyMgICAg
bG9hZGkgU3RydWN0dXJlOjptX3N0cnVjdHVyZUlEW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyMgICAg
c3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorZW5kCiAKICMgRW50
cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTMxOCwxMCArMzUzLDEwIEBAIF9s
bGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBs
b2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Ns
b3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBl
LCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVj
dFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQx
LCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBicG5lcSB0MCwgdDIs
IC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNw
YXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNDAyLDExICs0MzcsMTEgQEAgbWFjcm8gZXF1
YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAg
IGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLmltbWVkaWF0
ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJ0Ym56IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxh
Z3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAog
ICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgor
ICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAtNzMz
LDggKzc2OCw3IEBAIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbCh0MSwgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3Qw
XSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cK
ICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKQEAgLTc0NiwyNCAr
NzgwLDIzIEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0
MCkKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDAsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmJi
IEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwodDAsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKICAgICAKICAgICAjIFJlZ2lzdGVyIHN0YXRl
OiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3RhbmNl
b2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgotICAgIGxvYWRx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0MgorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9i
YmVyRmlyc3RBcmcodDIsIHQzKQorICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDNd
LCB0MgogICAgIGJxZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQogICAgIGJ0cXogdDIsIHRh
Z01hc2ssIC5vcEluc3RhbmNlb2ZMb29wCiAKICAgICBtb3ZlIDAsIHQwCiAub3BJbnN0YW5jZW9m
RG9uZToKICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MSwgdDMpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAgICBkaXNwYXRjaCg0KQogCkBA
IC03ODMsMTcgKzgxNiwxNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0
MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJueiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3Qw
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBt
b3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNw
YXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhT
Y3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCi0gICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQzCi0gICAgb3JxIFZhbHVlRmFsc2UsIHQzCi0gICAg
c3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmpl
Y3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtODI2LDggKzg1OSw3IEBAIF9sbGlu
dF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwKQogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJ
c1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAg
ICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQog
ICAgIG9ycSBWYWx1ZUZhbHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAg
ZGlzcGF0Y2goMykKQEAgLTg3OSwxNCArOTExLDE1IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVy
dHlTdG9yYWdlKQogICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQg
d29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKICAgICAjIHdlIHdvdWxkIGhh
dmUgYmVlbiBkb2luZyBhbnl3YXkuCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQot
ICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVDZWxsKHQwLCB0MywgLm9wR2V0QnlJZFNsb3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDUsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MywgdDIsIHQxKQorICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJwbmVxIHQyLCB0MSwgLm9wR2V0QnlJZFNs
b3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAg
ICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKICAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigxLCB0MSkKICAgICAgICAgICAgIGxvYWRxIFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwg
c2NyYXRjaAogICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIFtjZnIsIHQxLCA4XQpAQCAtOTEy
LDcgKzk0NSw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBtb3ZlIHQzLCB0Mgog
ICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdl
dEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRB
cnJheUxlbmd0aFNsb3cKQEAgLTk0OSwxNSArOTgyLDE2IEBAIF9sbGludF9vcF9nZXRfYXJndW1l
bnRzX2xlbmd0aDoKIG1hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMs
IHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisg
ICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5z
dHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIsIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDAsCiAgICAgICAgIHQzLAogICAgICAgICBtYWNy
byAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDUsIHQxKQorICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMs
IHQyKQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAg
ICAgICAgICAgIHdyaXRlQmFycmllcih0MCkKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBb
cHJvcGVydHlTdG9yYWdlLCB0MV0KQEAgLTk4Miw5ICsxMDE2LDEwIEBAIG1hY3JvIHB1dEJ5SWRU
cmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkU3RydWN0dXJlV2l0
aFNjcmF0Y2godDAsIHQyLCB0MykKKyAgICBicG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIHQyKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigzLCB0MikKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDUsIHQxKQogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDAsCkBAIC05
OTUsMTUgKzEwMzAsMTUgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNr
cwogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQogICAgICAgICAgICAgc3RvcmVxIHQxLCBb
dDNdCiAgICAgICAgICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MSkKLSAgICAgICAgICAg
IHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIHN0b3JlU3Ry
dWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwgdDIpCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQog
ICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVy
ZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwg
c2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
ICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KICAgICBs
b2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3JhdGNoKQogICAgIGFzc2VydChtYWNybyAob2spIGJ0
cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEwMTIsNyArMTA0Nyw4IEBAIG1hY3JvIHN0cnVjdHVy
ZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZHEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRTdHJ1
Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJvdG9DZWxsLCBzY3JhdGNoMikKKyAgICBtb3ZlIHNj
cmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
Lm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgsIHNjcmF0Y2gKICAgICBicW5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKQEAgLTEwMzksOCAr
MTA3NSw4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0
MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQpAQCAtMTEyNSw3ICsxMTYxLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5UG5hbWVT
bG93KQogICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwg
dDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKICAgICBicG5lcSB0MiwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDFdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdLCB0MwpAQCAtMTE2Nyw4ICsxMjAzLDggQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNr
LCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wUHV0
QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgogICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQorICAgIG1vdmUgdDEsIHQyCiAgICAgYXJyYXlQcm9m
aWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDMsIC5vcFB1dEJ5VmFsU2xvdykKQEAgLTEy
NzcsOCArMTMxMyw4IEBAIG1hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEK
ICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAg
ICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3Nb
dDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKIC50YXJnZXQ6CkBAIC0xNDEwLDggKzE0
NDYsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJl
RGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAg
ICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQxLCB0YWdNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDAKLSAgICBiYm5lcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwg
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBT
dHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6
bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0
cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAgYnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAt
MTQ1NSw5ICsxNDkwLDkgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgICAgIG5l
Z3AgdDMKICAgICAgICAgbG9hZHEgVGhpc0FyZ3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAog
ICAgICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKLSAgICAgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQot
ICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVt0MV0K
KyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMKKyAgICAgICAgc3Rv
cmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0MV0KICAgICAuZG9u
ZToKICAgICBlbmQKIGVuZApAQCAtMTUyMCw4ICsxNTU1LDcgQEAgX2xsaW50X29wX3JldF9vYmpl
Y3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
T2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6
bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAg
ZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CkBAIC0xNTM2LDggKzE1
NzAsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0
MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJu
ZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNl
CiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAg
ZGlzcGF0Y2goMykKQEAgLTE1NjcsNyArMTYwMCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0
MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAg
ICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qy
XSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjpt
X3ZlY3Rvclt0MF0sIHQwCkBAIC0xNTc1LDcgKzE2MDgsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFt
ZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGwsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAg
ICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBi
dHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTE4MDQsOCArMTgz
Nyw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFu
ZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0
MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
cmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsMTMgKzI1NSwxNCBAQCBtYWNy
byBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBh
cnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQot
ICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0
IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9m
aWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHByb2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2Vs
bCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5k
SW5kZXhpbmdUeXBlIAogICAgIGlmIFZBTFVFX1BST0ZJTEVSCi0gICAgICAgIHN0b3JlcCBzdHJ1
Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVtwcm9maWxlXQorICAgICAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0Y2gKKyAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Byb2ZpbGVd
CiAgICAgZW5kCi0gICAgbG9hZGIgU3RydWN0dXJlOjptX2luZGV4aW5nVHlwZVtzdHJ1Y3R1cmVd
LCBpbmRleGluZ1R5cGUKKyAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhpbmdUeXBlW2NlbGxdLCBp
bmRleGluZ1R5cGUKIGVuZAogCiBtYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0
aW9uKQpAQCAtNDA5LDggKzQxMCw4IEBAIG1hY3JvIGFsbG9jYXRlSlNPYmplY3QoYWxsb2NhdG9y
LCBzdHJ1Y3QKICAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZkZpcnN0RnJlZUNlbGxb
YWxsb2NhdG9yXQogICAgIAogICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KLSAgICAg
ICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCiAgICAgICAg
IHN0b3JlcCAwLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbcmVzdWx0XQorICAgICAgICBzdG9yZVN0
cnVjdHVyZVdpdGhUeXBlSW5mbyhyZXN1bHQsIHN0cnVjdHVyZSwgc2NyYXRjaDEpCiAgICAgZW5k
CiBlbmQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJ
KHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICB7IAotICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcmd1
bWVudHNUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mTnVtQXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEFyZ3VtZW50cywgbV9udW1Bcmd1bWVudHMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Z1bmN0aW9uRXhlY3V0YWJsZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09
IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7CisgICAgICAgIHJldHVybiB0eXBlKCkgPT0gRnVuY3Rp
b25FeGVjdXRhYmxlVHlwZTsKICAgICB9CiAKICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29u
c3QKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
IAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IDA7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJl
SXNJbW1vcnRhbDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9u
dW1QYXJhbWV0ZXJzRm9yQ29uc3RydWN0OwogCkBAIC02NjksNyArNjY5LDcgQEAgaW5saW5lIGJv
b2wgaXNIb3N0RnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZQogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxl
QmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAg
ICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewor
ICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJs
ZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02ODMs
NyArNjgzLDcgQEAgaW5saW5lIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBp
bmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2
YWxFeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhl
Y3V0YWJsZVR5cGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYv
ZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkz
LDcgKzM5Myw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAog
Ym9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5n
dGgsIGJvb2wgdGhyb3dFeGNlcHRpb24pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
cnJheUNsYXNzOgogICAgICAgICBpZiAoIW5ld0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNDIyLDcgKzQyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0
ZSogZXhlYywKICAgICAgICAgICAgIGVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYg
KGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7
KQogICAgICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBR
TmFOOwogICAgICAgICB9IGVsc2UgewpAQCAtNDQ0LDcgKzQ0NCw3IEBAIGJvb2wgSlNBcnJheTo6
c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKIAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0
YXRlKiBleGVjKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIApAQCAtNTM5LDcgKzUzOSw3IEBA
IEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8g
YW4gYXJyYXkgb2YgbGVuZ3RoIDJeMzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dz
IGEgcmFuZ2UgZXJyb3IuCiB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewog
ICAgICAgICBjcmVhdGVJbml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICAv
LyBGYWxsIHRocm91Z2guCkBAIC02NzcsNyArNjc3LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENv
dW50V2l0aEFycmF5U3RvcmFnZQogICAgIAogICAgIC8vIElmIHRoZSBhcnJheSBjb250YWlucyBo
b2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3JtYWwgc3RhdGUsCiAgICAgLy8gdXNlIHRo
ZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3RvdHlwZS4KLSAgICBpZiAob2xkTGVuZ3Ro
ICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgaW5TcGFyc2VJbmRleGluZ01vZGUo
KSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAg
aWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNl
SW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5cGUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghb2xkTGVuZ3RoKQpAQCAtNzUxLDcgKzc1MSw3
IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1QKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChjb3VudCA+IDApOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2Ug
QXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIApAQCAtODQ5LDcgKzg0
OSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEKIAogICAgIC8v
IElmIHRoZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3Jt
YWwgc3RhdGUsCiAgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3Rv
dHlwZS4KLSAgICBpZiAobGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwg
c3RvcmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChsZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvciB8fCBzdG9yYWdlLT5pblNwYXJzZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGlu
ZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBtb3ZlRnJv
bnQgPSAhc3RhcnRJbmRleCB8fCBzdGFydEluZGV4IDwgbGVuZ3RoIC8gMjsKQEAgLTg4Niw3ICs4
ODYsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKIGJvb2wg
SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQogewotICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAg
ICAgICAgLy8gV2UgY291bGQgaGFuZGxlIHRoaXMuIEJ1dCBpdCBzaG91bGRuJ3QgZXZlciBjb21l
IHVwLCBzbyB3ZSB3b24ndC4KQEAgLTk5NSwyMCArOTk1LDIwIEBAIHN0YXRpYyBpbnQgY29tcGFy
ZUJ5U3RyaW5nUGFpckZvclFTb3J0KGMKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+
c2Vjb25kLCB2Yi0+c2Vjb25kKTsKIH0KIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5n
VHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNB
cnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVG
dW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsK
LSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyIHx8IGluZGV4aW5nVHlw
ZSA9PSBBcnJheVdpdGhEb3VibGUgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aENvbnRpZ3Vv
dXMgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CisgICAgQVNTRVJU
KGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyIHx8IGFycmF5SW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aERvdWJsZSB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250
aWd1b3VzIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAg
ICAgCiAgICAgdW5zaWduZWQgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkOwogICAgIHVuc2ln
bmVkIG5ld1JlbGV2YW50TGVuZ3RoOwotICAgIGNvbXBhY3RGb3JTb3J0aW5nPGluZGV4aW5nVHlw
ZT4oCisgICAgY29tcGFjdEZvclNvcnRpbmc8YXJyYXlJbmRleGluZ1R5cGU+KAogICAgICAgICBs
ZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQsCiAgICAgICAgIG5ld1JlbGV2YW50TGVuZ3RoKTsK
ICAgICAKLSAgICBDb250aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxpbmRleGlu
Z1R5cGU+KCk7CisgICAgQ29udGlndW91c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8YXJy
YXlJbmRleGluZ1R5cGU+KCk7CiAgICAgCi0gICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdp
dGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7Cisg
ICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJh
eVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAxNyw3ICsxMDE3LDcg
QEAgdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3RvcihFeGVjU3RhdAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgYm9vbCBhbGxWYWx1ZXNBcmVOdW1iZXJzID0gdHJ1ZTsKLSAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAg
ICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAg
ICBicmVhazsKQEAgLTEwMzksNyArMTAzOSw3IEBAIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNW
ZWN0b3IoRXhlY1N0YXQKICAgICAvLyBhbHNvIGRvbid0IHJlcXVpcmUgbWVyZ2Vzb3J0J3Mgc3Rh
YmlsaXR5LCBzaW5jZSB0aGVyZSdzIG5vIHVzZXIgdmlzaWJsZQogICAgIC8vIHNpZGUtZWZmZWN0
IGZyb20gc3dhcHBpbmcgdGhlIG9yZGVyIG9mIGVxdWFsIHByaW1pdGl2ZSB2YWx1ZXMuCiAgICAg
aW50ICgqY29tcGFyZSkoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKTsKLSAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNl
IEFycmF5V2l0aEludDMyOgogICAgICAgICBjb21wYXJlID0gY29tcGFyZU51bWJlcnNGb3JRU29y
dFdpdGhJbnQzMjsKICAgICAgICAgYnJlYWs7CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCB2b2lkIEpT
QXJyYXk6OnNvcnROdW1lcmljKEV4ZWNTdGF0ZSogZXhlCiB7CiAgICAgQVNTRVJUKCFpblNwYXJz
ZUluZGV4aW5nTW9kZSgpKTsKIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFz
czoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTExMTUsNyArMTExNSw3IEBAIHRlbXBs
YXRlIDw+IHN0cnVjdCBDb250aWd1b3VzVHlwZUFjY2Vzc28KIH07CiAKIAotdGVtcGxhdGU8SW5k
ZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+Cit0ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgogdm9p
ZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGlndW91
c0RhdGE8U3RvcmFnZVR5cGU+IGRhdGEsIHVuc2lnbmVkIHJlbGV2YW50TGVuZ3RoKQogewogICAg
IGlmICghcmVsZXZhbnRMZW5ndGgpCkBAIC0xMTM5LDExICsxMTM5LDExIEBAIHZvaWQgSlNBcnJh
eTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICBib29sIGlzU29ydGluZ1ByaW1pdGl2
ZVZhbHVlcyA9IHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGV2YW50TGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNz
b3I8aW5kZXhpbmdUeXBlPjo6Z2V0QXNWYWx1ZShkYXRhLCBpKTsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1ZS5pc0ludDMyKCkpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlw
ZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7CisgICAgICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlw
ZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1ZS5pc0ludDMyKCkpOwogICAgICAgICBBU1NFUlQo
IXZhbHVlLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2YWx1ZTsK
LSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhEb3VibGUgJiYgaW5kZXhpbmdU
eXBlICE9IEFycmF5V2l0aEludDMyKQorICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgIT0g
QXJyYXlXaXRoRG91YmxlICYmIGFycmF5SW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQog
ICAgICAgICAgICAgaXNTb3J0aW5nUHJpbWl0aXZlVmFsdWVzID0gaXNTb3J0aW5nUHJpbWl0aXZl
VmFsdWVzICYmIHZhbHVlLmlzUHJpbWl0aXZlKCk7CiAgICAgfQogICAgICAgICAKQEAgLTExNzQs
NyArMTE3NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAg
ICAKICAgICAvLyBJZiB0aGUgdG9TdHJpbmcgZnVuY3Rpb24gY2hhbmdlZCB0aGUgbGVuZ3RoIG9m
IHRoZSBhcnJheSBvciB2ZWN0b3Igc3RvcmFnZSwKICAgICAvLyBpbmNyZWFzZSB0aGUgbGVuZ3Ro
IHRvIGhhbmRsZSB0aGUgb3JpZ25hbCBudW1iZXIgb2YgYWN0dWFsIHZhbHVlcy4KLSAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAg
ICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgIGNh
c2UgQXJyYXlXaXRoQ29udGlndW91czoKQEAgLTExODQsNyArMTE4NCw3IEBAIHZvaWQgSlNBcnJh
eTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3Rv
cmFnZToKICAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSA8IHJlbGV2
YW50TGVuZ3RoKSB7CiAgICAgICAgICAgICBpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgp
LCByZWxldmFudExlbmd0aCk7Ci0gICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGlu
ZGV4aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVmZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+
dmVjdG9yKCkpOworICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4
aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVmZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVj
dG9yKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkg
PCByZWxldmFudExlbmd0aCkKICAgICAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5zZXRMZW5ndGgo
cmVsZXZhbnRMZW5ndGgpOwpAQCAtMTE5NSw3ICsxMTk1LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVsZXZhbnRMZW5ndGg7IGkrKykKLSAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3Nvcjxp
bmRleGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5m
aXJzdCk7CisgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+
OjpzZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CiAgICAg
CiAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiB9CkBA
IC0xMjA0LDcgKzEyMDQsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVk
OgogICAgICAgICByZXR1cm47CkBAIC0xMzM2LDExICsxMzM2LDExIEBAIHN0cnVjdCBBVkxUcmVl
QWJzdHJhY3RvckZvckFycmF5Q29tcGFyZSAKICAgICBzdGF0aWMgaGFuZGxlIG51bGwoKSB7IHJl
dHVybiAweDdGRkZGRkZGOyB9CiB9OwogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0Fy
cmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24s
IENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgQVNT
RVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09
IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdU
eXBlID09IGluZGV4aW5nVHlwZSgpKTsKICAgICAKICAgICAvLyBGSVhNRTogVGhpcyBpZ25vcmVz
IGV4Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBjb21wYXJlIGZ1bmN0aW9uIG9yIGluIHRvTnVtYmVy
LgogICAgICAgICAKQEAgLTEzNTAsNyArMTM1MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3Rv
cihFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAobV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSByZWxldmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rv
ckxlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhpbmdUeXBlPigpOwogICAgIHVuc2ln
bmVkIG5vZGVDb3VudCA9IHVzZWRWZWN0b3JMZW5ndGg7CiAgICAgICAgIAogICAgIGlmICghbm9k
ZUNvdW50KQpAQCAtMTQxNywxNCArMTQxNywxNCBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3Io
RXhlY1N0YXRlKiBleGVjCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQ7ICsraSkgewogICAgICAg
ICBBU1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVy
Zmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
Kml0ZXJdLnZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJl
bnRJbmRleGluZ0RhdGEoKVtpXS5zZXQodm0sIHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9k
ZXNbKml0ZXJdLnZhbHVlKTsKICAgICAgICAgKytpdGVyOwogICAgIH0KICAgICAvLyBQdXQgdW5k
ZWZpbmVkIHZhbHVlcyBiYWNrIGluLgotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlX
aXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgIEFTU0VSVChlbGVt
ZW50c1RvRXh0cmFjdFRocmVzaG9sZCA9PSB1bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZCk7CkBA
IC0xNDQwLDEzICsxNDQwLDEzIEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUq
IGV4ZWMKICAgICAvLyBFbnN1cmUgdGhhdCB1bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJl
IHplcm9lZCBvdXQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJl
c2hvbGQ7IGkgPCBjbGVhckVsZW1lbnRzVGhyZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJU
KGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4
aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5j
b250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBj
dXJyZW50SW5kZXhpbmdEYXRhKClbaV0uY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGhh
c0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChoYXNB
cnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9u
dW1WYWx1ZXNJblZlY3RvciA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7CiB9CiAKQEAgLTE0NTQsNyAr
MTQ1NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIHsKICAg
ICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ4Niw3ICsxNDg2LDcgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJn
TGlzdChFeGVjU3RhdGUqIGV4ZQogICAgIHVuc2lnbmVkIHZlY3RvckVuZDsKICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4qIHZlY3RvcjsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xNTQ4LDcgKzE1NDgs
NyBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgdW5zaWdu
ZWQgdmVjdG9yRW5kOwogICAgIAogICAgIEFTU0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkp
OwotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKQEAgLTE2MDMsNDAgKzE2MDMsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGdl
dChleGVjLCBpKSk7CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0
ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OmNv
bXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkJiBudW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZh
bnRMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBB
U1NFUlQoaW5kZXhpbmdUeXBlID09IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAg
QVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlwZSgpKTsKIAotICAgIHVuc2ln
bmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7Cisg
ICAgdW5zaWduZWQgbXlSZWxldmFudExlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhp
bmdUeXBlPigpOwogICAgIAogICAgIG51bURlZmluZWQgPSAwOwogICAgIHVuc2lnbmVkIG51bVVu
ZGVmaW5lZCA9IDA7CiAgICAgICAgIAogICAgIGZvciAoOyBudW1EZWZpbmVkIDwgbXlSZWxldmFu
dExlbmd0aDsgKytudW1EZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9i
dXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBB
cnJheVdpdGhJbnQzMikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlX
aXRoSW50MzIpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzSW50MzIoKVtudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZF07CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAg
ICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVk
XS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdU
eXBlPigpW251bURlZmluZWRdLmdldCgpOwogICAgICAgICBpZiAoIXYgfHwgdi5pc1VuZGVmaW5l
ZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1EZWZpbmVkOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAg
IEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGlu
Z1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0
dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NDUsNyArMTY0NSw3IEBAIHZvaWQgSlNB
cnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQKICAgICAgICAgICAgIG1fYnV0dGVyZmx5
LT5jb250aWd1b3VzSW50MzIoKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
dik7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhp
bmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY1MywyMyArMTY1MywyMyBAQCB2b2lkIEpTQXJy
YXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW251bURlZmluZWQrK10gPSB2OwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5n
VHlwZT4oKVtpXS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5
SW5kZXhpbmdUeXBlPigpW2ldLmdldCgpOwogICAgICAgICBpZiAodikgewogICAgICAgICAgICAg
aWYgKHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICArK251bVVuZGVmaW5lZDsKICAg
ICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9i
dXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8
aW5kZXhpbmdUeXBlPigpW251bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsK
KyAgICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVm
aW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogICAgICAgICAKICAgICBuZXdSZWxldmFudExlbmd0aCA9IG51bURlZmluZWQg
KyBudW1VbmRlZmluZWQ7CiAgICAgCi0gICAgaWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5
cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKICAgICAKLSAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUp
IHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChudW1EZWZpbmVkID09IG5ld1JlbGV2YW50TGVuZ3RoKTsK
QEAgLTE2NzgsMTkgKzE2NzgsMTkgQEAgdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1
bnNpZ25lZAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmlu
ZWQ7IGkgPCBuZXdSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8
IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICBpbmRleGluZ0RhdGE8
aW5kZXhpbmdUeXBlPigpW2ldLnNldFVuZGVmaW5lZCgpOworICAgICAgICAgICAgaW5kZXhpbmdE
YXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLnNldFVuZGVmaW5lZCgpOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdSZWxldmFudExl
bmd0aDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0g
QXJyYXlXaXRoRG91YmxlKQorICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlX
aXRoRG91YmxlKQogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtp
XSA9IFFOYU47CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGlu
Z1R5cGU+KClbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4
aW5nVHlwZT4oKVtpXS5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2Uo
aW5kZXhpbmdUeXBlKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBl
KSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdSZWxl
dmFudExlbmd0aDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0
X3QpLCBqc2NlbGxfaXNfZWlnaHRfYnl0ZXMpOwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEpTQ2VsbCk7CiAKIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAx
NTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5jbHVk
ZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbmRleGlu
Z1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCiAj
aW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAtOTIsOSArOTQsMTEgQEAgcHVibGljOgogICAgIGJv
b2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgYm9vbCBpc0FQSVZhbHVl
V3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBJbmRleGlu
Z1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBj
b25zdDsKICAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQg
Y2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlLmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFy
U3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlEID0gMDsgfQogCiAgICAgY29uc3QgY2hhciogY2xh
c3NOYW1lKCk7CiAKQEAgLTEzNSwyMCArMTM5LDI2IEBAIHB1YmxpYzoKIAogICAgIEpTVmFsdWUg
ZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3Rh
dGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3Ry
dWN0dXJlSURPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0NlbGwsIG1fc3RydWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0Nl
bGwsIG1fc3RydWN0dXJlSUQpOwogICAgIH0KIAotICAgIHZvaWQqIHN0cnVjdHVyZUFkZHJlc3Mo
KQorICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9GbGFnc09mZnNldCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gJm1fc3RydWN0dXJlOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEpTQ2VsbCwgbV9mbGFncyk7CiAgICAgfQotICAgICAgICAKLSNpZiBFTkFCTEUoR0NfVkFMSURB
VElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFsaWRhdGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9z
dHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsgfQotI2VuZGlmCi0gICAgICAgIAorCisgICAgc3Rh
dGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fdHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIHB0
cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0NlbGwsIG1faW5kZXhpbmdUeXBlKTsKKyAgICB9CisKICAgICBzdGF0aWMg
Y29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gTm90VHlwZWRBcnJh
eTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDggKzE4MCwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgCi0g
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisKKyAgICBTdHJ1Y3R1cmVJ
RCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBK
U1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgbV9mbGFnczsKKyAg
ICB1aW50OF90IG1fdW51c2VkOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1l
IEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5s
aW5lcy5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDExIEBAIGlubGlu
ZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFQKICAgICBBU1NFUlQoIWlzQ29tcGls
YXRpb25UaHJlYWQoKSk7CiB9CiAKLWlubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQotICAgIDogbV9zdHJ1Y3R1cmUodm0sIHRoaXMsIHN0cnVjdHVyZSkK
K2lubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
bV9zdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUtPmlkKCkpCisgICAgLCBtX2luZGV4aW5nVHlwZShzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQorICAgICwgbV90eXBlKHN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkpCisgICAgLCBtX2ZsYWdzKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBl
RmxhZ3MoKSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkBAIC01
Niw3ICs1OSw3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgIEFTU0VSVChtX3N0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFy
bHlDZWxsVGFnKQpAQCAtNjQsMjMgKzY3LDQyIEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHYKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICBBU1NFUlQodm0u
aXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAgICAgdm0uc2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xh
c3MoMCk7Ci0gICAgaWYgKHN0cnVjdHVyZSkKKyAgICBpZiAoc3RydWN0dXJlKSB7CisjZW5kaWYK
KyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbV9pbmRl
eGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgICAgICBtX3R5cGUgPSBz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgICAgICBtX2ZsYWdzID0gc3RydWN0dXJl
LT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgICAgICBt
X3N0cnVjdHVyZS5zZXRFYXJseVZhbHVlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIC8vIFZl
cnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4K
LSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAg
QVNTRVJUKG1fc3RydWN0dXJlSUQgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Cit9CisKK2lu
bGluZSBKU1R5cGUgSlNDZWxsOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOwor
fQorCitpbmxpbmUgSW5kZXhpbmdUeXBlIEpTQ2VsbDo6aW5kZXhpbmdUeXBlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbmRleGluZ1R5cGU7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2Vs
bDo6c3RydWN0dXJlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgcmV0dXJuIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1
Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNp
dG9yLCBjZWxsKTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTExNiwzNyArMTM4LDQxIEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0
IEpTQ2VsbCogY2VsbCkKIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBUeXBlSW5m
bzo6aXNPYmplY3QobV90eXBlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBT
dHJpbmdUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5l
IGJvb2wgSlNDZWxsOjppc0dldHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVy
biBtX3R5cGUgPT0gR2V0dGVyU2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjpp
c1Byb3h5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpID09IFByb3h5VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IFByb3h5VHlwZTsKIH0KIAog
aW5saW5lIGJvb2wgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBl
OworICAgIHJldHVybiBtX3R5cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKIH0KIAogaW5saW5l
IHZvaWQgSlNDZWxsOjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKICAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJl
LT5jbGFzc0luZm8oKSk7Ci0gICAgQVNTRVJUKCFtX3N0cnVjdHVyZQotICAgICAgICB8fCBtX3N0
cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAg
ICAgICB8fCBtX3N0cnVjdHVyZS5nZXQoKSA9PSBzdHJ1Y3R1cmUpOwotICAgIG1fc3RydWN0dXJl
LnNldCh2bSwgdGhpcywgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSA9PSB0aGlzLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOworICAgIEFTU0VSVCghdGhp
cy0+c3RydWN0dXJlKCkKKyAgICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKKyAgICAgICAgfHwgSGVhcDo6aGVhcCh0
aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVy
ZSk7CisgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3N0
cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCk7CisgICAgbV90eXBlID0gc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKTsKKyAgICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCk7CiB9CiAKIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJs
ZUZvckRlc3RydWN0aW9uKCkgY29uc3QKQEAgLTE1NiwxMCArMTgyLDExIEBAIGlubGluZSBjb25z
dCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2QKIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxl
KiBKU0NlbGw6Om1ldGhvZFRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoU3RydWN0dXJlKiByb290
U3RydWN0dXJlID0gbV9zdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVj
dHVyZSA9IHN0cnVjdHVyZS0+c3RydWN0dXJlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJv
b3RTdHJ1Y3R1cmUgPT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOwogCi0gICAgcmV0dXJu
ICZjbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7CisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNz
SW5mbygpLT5tZXRob2RUYWJsZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0cyhj
b25zdCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CkBAIC0xNzMsMTAgKzIwMCwxMSBAQCBpbmxpbmUg
Ym9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzCiAvLyBjYXNlIGJ5IGNoZWNraW5nIHdo
ZXRoZXIgdGhlIGhhc2ggaGFzIHlldCBiZWVuIHNldCBmb3IgdGhpcyBzdHJpbmcuCiBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSkgeworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGll
cygpKSB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgpLT5oYXNI
YXNoKCkKLSAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBJZGVudGlm
aWVyKGV4ZWMsIG5hbWUpKQotICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZt
KCksIG5hbWUpOworICAgICAgICAgICAgPyBzdHJ1Y3R1cmUtPmdldChleGVjLT52bSgpLCBJZGVu
dGlmaWVyKGV4ZWMsIG5hbWUpKQorICAgICAgICAgICAgOiBzdHJ1Y3R1cmUtPmdldChleGVjLT52
bSgpLCBuYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQogICAgICAg
ICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZzZXQpLT5n
ZXQoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDExICszMyw3IEBAIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xh
c3NJbmYKIHsKICAgICBpZiAoTWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT5kZXN0cnVjdG9y
VHlwZSgpID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsKLSNpZiBF
TkFCTEUoR0NfVkFMSURBVElPTikKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRH
ZXQoKS0+Y2xhc3NJbmZvKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJ
bmZvKCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gc3RydWN0dXJlKCktPmNsYXNzSW5mbygpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDkgQEAg
c3RhdGljIHVuc2lnbmVkIGxhc3RBcnJheVNpemUgPSAwOwogCiBKU0NlbGwqIGdldENhbGxhYmxl
T2JqZWN0U2xvdyhKU0NlbGwqIGNlbGwpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBj
ZWxsLT5zdHJ1Y3R1cmUoKTsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBl
KQogICAgICAgICByZXR1cm4gY2VsbDsKLSAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCisgICAgaWYgKGNlbGwtPnN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246Omlu
Zm8oKSkpCiAgICAgICAgIHJldHVybiBjZWxsOwogICAgIHJldHVybiAwOwogfQpAQCAtMjQ4LDEx
ICsyNDcsMTIgQEAgdm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbAogICAg
IAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAorICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCk7CiAgICAgQnV0
dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICBpZiAoYnV0
dGVyZmx5KQotICAgICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRlcmZseSh2aXNpdG9yLCBidXR0
ZXJmbHksIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplKCkpOworICAgICAg
ICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKIAotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplKCk7CisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0g
c3RydWN0dXJlLT5pbmxpbmVTaXplKCk7CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECkBAIC0yNzYsNyArMjc2LDcgQEAgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleAogICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQogICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaSksIHNsb3QpOwogICAgIAotICAgIHN3aXRjaCAo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0
aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5H
X1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
YnJlYWs7CkBAIC00MTYsNyArNDE2LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChKU0Nl
bGwqIGNlbGwsIAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAodGhp
c09iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlz
T2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC01NjAsNyArNTYwLDcgQEAgQXJyYXlT
dG9yYWdlKiBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SQogCiB2b2lkIEpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKQEAgLTU5
NSwxMyArNTk1LDE0IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMK
IEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZShWTSYgdm0s
IHVuc2lnbmVkIGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplKQogewogICAgIEFTU0VSVChsZW5n
dGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKCk7CisgICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4
aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0
aWVzKG9sZFR5cGUpKTsKLSAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRl
eGluZygpKTsKKyAgICBBU1NFUlQoIXN0cnVjdHVyZS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7
CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogICAgIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCA9IHN0ZDo6bWF4KGxlbmd0aCwgQkFTRV9WRUNUT1JfTEVOKTsKICAgICBCdXR0
ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgK
LSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseSwgdm0s
IHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwg
MCwKICAgICAgICAgZWxlbWVudFNpemUgKiB2ZWN0b3JMZW5ndGgpOwogICAgIG5ld0J1dHRlcmZs
eS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5zZXRWZWN0b3JM
ZW5ndGgodmVjdG9yTGVuZ3RoKTsKQEAgLTY0OSwxMCArNjUwLDExIEBAIENvbnRpZ3VvdXNKU1Zh
bHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGkKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0
ZUFycmF5U3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBJbmRleGluZ1R5cGUg
b2xkVHlwZSA9IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0g
aW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFBy
b3BlcnRpZXMob2xkVHlwZSkpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVy
Zmx5OjpjcmVhdGVPckdyb3dBcnJheVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseSwgdm0sIHRo
aXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2Us
IDAsCisgICAgICAgIG1fYnV0dGVyZmx5LCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAogICAgICAgICBBcnJheVN0b3JhZ2U6OnNp
emVGb3IodmVjdG9yTGVuZ3RoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0dGVyZmx5KTsK
IApAQCAtNjYyLDcgKzY2NCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5
U3RvcmEKICAgICByZXN1bHQtPm1fc3BhcnNlTWFwLmNsZWFyKCk7CiAgICAgcmVzdWx0LT5tX251
bVZhbHVlc0luVmVjdG9yID0gMDsKICAgICByZXN1bHQtPm1faW5kZXhCaWFzID0gMDsKLSAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5z
aXRpb24oKSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZEFycmF5
U3RvcmFnZVRyYW5zaXRpb24oKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBu
ZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3
NCwxNCArNjc2LDE0IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxBcnIK
IAogQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMihW
TSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFsbG9jYXRlSW50MzIpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNJbnQzMigpOwogfQogCiBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydFVu
ZGVjaWRlZFRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhp
bmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVj
dG9yTGVuZ3RoKCk7IGktLTspCiAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91Ymxl
KClbaV0gPSBRTmFOOwpAQCAtNjkyLDE2ICs2OTQsMTcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNP
YmplY3Q6OmNvbnZlcnRVbmRlYwogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZl
cnRVbmRlY2lkZWRUb0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lk
ZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRl
ZChpbmRleGluZ1R5cGUoKSkpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsK
ICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKIH0KIAogQXJyYXlTdG9yYWdl
KiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdF
bGVtZW50cyhWTSYgdm0sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOwogICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0
aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eUNh
cGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgdW5zaWduZWQg
cHJvcGVydHlTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsKKyAgICB1bnNpZ25l
ZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAg
IHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOwogICAg
IAogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRp
YWxpemVkKAogICAgICAgICB2bSwgdGhpcywgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgQXJy
YXlTdG9yYWdlOjpzaXplRm9yKG5lZWRlZExlbmd0aCkpOwpAQCAtNzI0LDcgKzcyNyw3IEBAIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnQKIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5
VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRleGluZ1R5
cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNvbnN0cnVjdENvbnZl
cnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7
CiAgICAgLy8gTm8gbmVlZCB0byBjb3B5IGVsZW1lbnRzLgpAQCAtNzQ2LDcgKzc0OSw3IEBAIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWQKIAogQ29udGlndW91c0RvdWJs
ZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQo
aGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0lu
dDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiogY3VycmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV07CkBAIC03
NjYsNyArNzY5LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMgog
CiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQ29udGlndW91cyhW
TSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpOworICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIHNl
dFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXMoKTsKQEAgLTc3NCw3ICs3NzcsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmpl
Y3Q6OmNvbnZlcnRJbnQzCiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRv
QXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVu
c2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7
CiAgICAgCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSog
bmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5n
RWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CkBAIC04MDQsNyArODA3LDcgQEAgQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydEludDMyVG9BcgogdGVtcGxhdGU8SlNPYmplY3Q6OkRvdWJs
ZVRvQ29udGlndW91c01vZGUgbW9kZT4KIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Z2Vu
ZXJpY0NvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNE
b3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJs
ZShpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykgewogICAgICAgICBkb3VibGUqIGN1cnJlbnQgPSAm
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKQEAgLTg0NCw3ICs4NDcsNyBAQCBD
b250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OnJhZ2VDb252ZXJ0CiBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRy
YW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsK
ICAgICAKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRB
cnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tOykgewpA
QCAtODczLDcgKzg3Niw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVU
b0EKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3Jh
Z2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVl
ZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQo
aGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQo
aGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSog
bmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5n
RWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS07KSB7CkBAIC05NTIsNyArOTU1LDcgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1cmVJbnQzMgogewogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFy
c2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CkBAIC05NzYsNyArOTc5LDcgQEAgQ29udGln
dW91c0RvdWJsZXMgSlNPYmplY3Q6OmVuc3VyZURvdWJsZQogewogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFy
c2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gQ29udGlndW91c0RvdWJsZXMoKTsKQEAgLTEwMDIsNyArMTAwNSw3IEBAIENvbnRp
Z3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6ZW5zdXJlQ29udGkKIHsKICAgICBBU1NFUlQoaW5oZXJp
dHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3Bh
cnNlKCkgfHwgc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwpAQCAtMTA0Miw3ICsxMDQ1LDcgQEAgQXJy
YXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogewogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5k
RW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKQEAgLTEwNzYsNyArMTA3OSw3IEBAIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAogQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhp
bmdNb2RlKFZNJiB2bSkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzogewogICAgICAgICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApOwog
ICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFw
KHZtKTsKQEAgLTExMDcsNyArMTExMCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3Vy
ZUFycmF5U3RvcmEKIAogdm9pZCBKU09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdl
KFZNJiB2bSkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwg
QWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTU0LDEw
ICsxMTU3LDEwIEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEpTVmEKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVz
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVy
dGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc2hv
dWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChzaG91
bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IHN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSh2bSk7CkBAIC0xMjA2LDEwICsxMjA5LDExIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IKICAgICBpZiAoc2xvdC50
eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKICAgICAgICAgc2V0U3RydWN0
dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkK
LSAgICAgICAgc3RydWN0dXJlKCktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7Cisg
ICAgICAgIHN0cnVjdHVyZS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKIAotICAg
IHN0cnVjdHVyZSgpLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5TmFtZSA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOworICAgIHN0cnVjdHVyZS0+c2V0
SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+dW5kZXJzY29yZVByb3RvKTsKIH0KIAogYm9vbCBKU09iamVjdDo6aGFzUHJvcGVydHkoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMTI3MCw3
ICsxMjc0LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAg
IGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQogICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpKSk7CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExf
VU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NTQs
NyArMTQ1OCw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAg
ICAvLyBGSVhNRTogRmlsbGluZyBQcm9wZXJ0eU5hbWVBcnJheSB3aXRoIGFuIGlkZW50aWZpZXIg
Zm9yIGV2ZXJ5IGludGVnZXIKICAgICAvLyBpcyBpbmNyZWRpYmx5IGluZWZmaWNpZW50IGZvciBs
YXJnZSBhcnJheXMuIFdlIG5lZWQgYSBkaWZmZXJlbnQgYXBwcm9hY2gsCiAgICAgLy8gd2hpY2gg
YWxtb3N0IGNlcnRhaW5seSBtZWFucyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgZm9yIFByb3BlcnR5
TmFtZUFycmF5LgotICAgIHN3aXRjaCAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFM
TF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgIGJyZWFrOwpAQCAtMTYwNCwxOSArMTYwOCwyMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURp
cmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKCFpc1Zh
bGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQorICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAgaWYgKCFpc1ZhbGlkT2Zm
c2V0KHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwotICAgIGlmIChzdHJ1Y3R1cmUoKS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewotICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKKyAg
ICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CisgICAgICAgIG9m
ZnNldCA9IHN0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwdXREaXJlY3RVbmRlZmluZWQob2Zmc2V0KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3BlcnR5
TmFtZSwgb2Zmc2V0KSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCkpOwog
ICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHB1dERpcmVjdFVuZGVmaW5lZChvZmZzZXQpOwpAQCAtMTg0NSw3ICsxODUwLDcgQEAgYm9v
bCBKU09iamVjdDo6YXR0ZW1wdFRvSW50ZXJjZXB0UHV0QnlJbgogdGVtcGxhdGU8SW5kZXhpbmdU
eXBlIGluZGV4aW5nU2hhcGU+CiB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aG91dEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpLCBKU1Zh
bHVlIHZhbHVlKQogewotICAgIEFTU0VSVCgoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpICYg
SW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOworICAgIEFTU0VSVCgoaW5kZXhp
bmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CiAgICAgQVNT
RVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwogICAgIAogICAgIC8vIEZvciB1cyB0byBn
ZXQgaGVyZSwgdGhlIGluZGV4IGlzIGVpdGhlciBncmVhdGVyIHRoYW4gdGhlIHB1YmxpYyBsZW5n
dGgsIG9yIGdyZWF0ZXIgdGhhbgpAQCAtMTk3NCw3ICsxOTc5LDcgQEAgdm9pZCBKU09iamVjdDo6
cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgIC8vIGkgc2hvdWxkIGJlIGEgdmFsaWQgYXJy
YXkgaW5kZXggdGhhdCBpcyBvdXRzaWRlIG9mIHRoZSBjdXJyZW50IHZlY3Rvci4KICAgICBBU1NF
UlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGlmIChpbmRleGluZ1Nob3Vs
ZEJlU3BhcnNlKCkpIHsKICAgICAgICAgICAgIHB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRoQXJyYXlTdG9yYWdlKApAQCAtMjA0Miw3ICsyMDQ3LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAg
ICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2Yg
dGhlIGN1cnJlbnQgdmVjdG9yLgotICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGlu
Z1R5cGUoKSkpOwogICAgIEFTU0VSVChhcnJheVN0b3JhZ2UoKSA9PSBzdG9yYWdlKTsKICAgICBB
U1NFUlQoaSA+PSBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSB8fCBhdHRyaWJ1dGVzKTsKICAgICBB
U1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjEyNCw3ICsyMTI5LDcgQEAgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIGlmIChhdHRyaWJ1dGVzICYg
KFJlYWRPbmx5IHwgQWNjZXNzb3IpKQogICAgICAgICBub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFj
Y2Vzc29ycyh2bSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktf
SU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8
fCBhdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKApAQCAtMjI0OCw3ICsyMjUzLDcgQEAgQUxXQVlT
X0lOTElORSB1bnNpZ25lZCBKU09iamVjdDo6Z2V0TmV3VgogICAgIHVuc2lnbmVkIHZlY3Rvckxl
bmd0aDsKICAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAgCi0gICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICBpZiAoaGFzSW5kZXhl
ZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgIHZlY3Rvckxlbmd0aCA9IG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICAgICAgbGVuZ3RoID0gbV9idXR0ZXJmbHkt
PnB1YmxpY0xlbmd0aCgpOwogICAgIH0gZWxzZSB7CkBAIC0yMjg3LDcgKzIyOTIsNyBAQCB1bnNp
Z25lZCBKU09iamVjdDo6Y291bnRFbGVtZW50cyhCdXR0ZXJmCiAKIHVuc2lnbmVkIEpTT2JqZWN0
Ojpjb3VudEVsZW1lbnRzKCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjMyNiwxMCArMjMzMSwxMSBAQCBib29sIEpTT2JqZWN0
OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3Ro
ID0gZ2V0TmV3VmVjdG9yTGVuZ3RoKG5ld0xlbmd0aCk7CiAKICAgICAvLyBGYXN0IGNhc2UgLSB0
aGVyZSBpcyBubyBwcmVjYXBhY2l0eS4gSW4gdGhlc2UgY2FzZXMgYSByZWFsbG9jIG1ha2VzIHNl
bnNlLgorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CiAgICAg
aWYgKExJS0VMWSghaW5kZXhCaWFzKSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5
KCktPmdyb3dBcnJheVJpZ2h0KAotICAgICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBz
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKKyAgICAgICAgICAgIHZtLCB0
aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAg
ICAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJheVN0b3Jh
Z2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV3QnV0dGVyZmx5
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM0Myw3ICsyMzQ5LDcgQEAgYm9vbCBK
U09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld0luZGV4
QmlhcyA9IHN0ZDo6bWluKGluZGV4QmlhcyA+PiAxLCBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RI
IC0gbmV3VmVjdG9yTGVuZ3RoKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3Jh
Z2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSgKICAgICAgICAgdm0sIHRoaXMsCi0gICAgICAg
IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNp
emVGb3IodmVjdG9yTGVuZ3RoKSwKKyAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKICAgICAgICAg
bmV3SW5kZXhCaWFzLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3Ro
KSk7CiAgICAgaWYgKCFuZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIz
NTcsNyArMjM2Myw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAK
IHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgQVNTRVJUKGhh
c0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoaW5k
ZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVk
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGxlbmd0aCA+IG1fYnV0dGVyZmx5LT52ZWN0
b3JMZW5ndGgoKSk7CiAgICAgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gc3RkOjpt
aW4oCkBAIC0yMzY1LDExICsyMzcxLDEyIEBAIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNs
b3coVk0mIHZtLCAKICAgICAgICAgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCk7CiAgICAgdW5z
aWduZWQgb2xkVmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRo
aXMtPnN0cnVjdHVyZSgpOwogICAgIG1fYnV0dGVyZmx5ID0gbV9idXR0ZXJmbHktPmdyb3dBcnJh
eVJpZ2h0KAotICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpLCB0cnVlLAorICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgIG9sZFZlY3Rvckxlbmd0
aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSksCiAgICAgICAgIG5ld1ZlY3Rvckxlbmd0aCAqIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgIGlmIChoYXNEb3VibGUoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSkgeworICAgIGlmIChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsgaSA8IG5ld1ZlY3Rvckxl
bmd0aDsgKytpKQogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKS5k
YXRhKClbaV0gPSBRTmFOOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVl
KQogewotICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCisgICAgaWYgKHZhbHVl
LmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiAwOwogfQpAQCAtMTMy
LDE0ICsxMzIsMTQgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGlu
ZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9i
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgIH0KICAgICAgICAgCiAgICAgdW5zaWduZWQg
Z2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7Ci0gICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRp
ZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgaWYgKCFoYXNJbmRleGVk
UHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICB9CkBAIC0xODQsNyAr
MTg0LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDksNyArMjA5LDcgQEAg
cHVibGljOgogICAgICAgICAKICAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsK
KyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihtX2J1dHRlcmZs
eS0+Y29udGlndW91cygpW2ldLmdldCgpLmFzSW50MzIoKSk7CiAgICAgICAgIGNhc2UgQUxMX0NP
TlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC0yMjYsNyArMjI2LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yNzksNyArMjc5LDcgQEAgcHVibGljOgogICAgICAgICAKICAg
ICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9v
bCBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QodW5zaWduZWQgaSkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQog
ICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAg
ICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9J
TkRFWElOR19UWVBFUzogewogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVj
dG9yTGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgewpAQCAtMzY5LDcg
KzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplSW5kZXgoVk0m
IHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewogICAgICAg
ICAgICAgc2V0SW5kZXhRdWlja2x5VG9VbmRlY2lkZWQodm0sIGksIHYpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC00MTgsNyArNDE4LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGhh
c1NwYXJzZU1hcCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpA
QCAtNDM1LDcgKzQzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBpblNwYXJzZUlu
ZGV4aW5nTW9kZSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpA
QCAtNDkxLDMxICs0OTEsMzUgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9uIG9u
bHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdldERpcmVjdChWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewotICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwot
ICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgp
KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5
TmFtZSk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGly
ZWN0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBnZXREaXJlY3Qo
Vk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykg
Y29uc3QKICAgICB7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWMpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgp
LT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlz
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgICAgICBj
aGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAg
IHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNW
YWx1ZSgpOwogICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewotICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAg
ICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNldCBn
ZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCYgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0
cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwor
ICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7
CiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCkBAIC02NDEsNyArNjQ1LDcgQEAgcHVi
bGljOgogICAgIC8vIGNvbnRpZ3VvdXMsIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNK
U1ZhbHVlcyBlbnN1cmVJbnQzMihWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhh
c0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZ
KGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNJbnQzMigpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1
cmVJbnQzMlNsb3codm0pOwpAQCAtNjUzLDcgKzY1Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBvciBh
cnJheSBzdG9yYWdlKS4KICAgICBDb250aWd1b3VzRG91YmxlcyBlbnN1cmVEb3VibGUoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgp
KSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsK
ICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlRG91YmxlU2xvdyh2bSk7CkBAIC02
NjMsNyArNjY3LDcgQEAgcHVibGljOgogICAgIC8vIGluZGV4aW5nIHNob3VsZCBiZSBzcGFyc2Ug
b3IgYmVjYXVzZSB3ZSdyZSBoYXZpbmcgYSBiYWQgdGltZS4KICAgICBDb250aWd1b3VzSlNWYWx1
ZXMgZW5zdXJlQ29udGlndW91cyhWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhh
c0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChM
SUtFTFkoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJu
IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJu
IGVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsKQEAgLTY3NCw3ICs2NzgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gYXR0ZW1wdHMgdG8gY29udmVydCBlYWNoIGRvdWJsZSB0byBhbiBpbnQzMi4KICAgICBD
b250aWd1b3VzSlNWYWx1ZXMgcmFnZUVuc3VyZUNvbnRpZ3VvdXMoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpKSkK
ICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogICAgICAgICAg
ICAgCiAgICAgICAgIHJldHVybiByYWdlRW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAtNjg2
LDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICAvLyBhbHJlYWR5LgogICAgIEFycmF5U3RvcmFnZSog
ZW5zdXJlQXJyYXlTdG9yYWdlKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFz
QXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAo
TElLRUxZKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0
dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgIAogICAgICAgICBy
ZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CkBAIC03MzQsNyArNzM4LDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIHN0b3JhZ2UuIFRoaXMgd2lsbCBhc3NlcnQgb3RoZXJ3aXNlLgogICAg
IEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNB
cnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIEFTU0VS
VChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgcmV0dXJuIG1fYnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICB9CiAgICAgICAgIApAQCAtNzQyLDcgKzc0Niw3
IEBAIHByb3RlY3RlZDoKICAgICAvLyBvYmplY3QgaXMgaW4gYSBtb2RlIHdoZXJlIGl0IGhhcyBh
cnJheSBzdG9yYWdlLgogICAgIEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlT3JOdWxsKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQVJSQVlfU1RP
UkFHRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgCkBAIC04MDgsNyArODEyLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZW5zdXJlTGVuZ3RoKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgICAgIEFT
U0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50
MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSB8fCBo
YXNJbnQzMihpbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSB8fCBo
YXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAo
bV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpIDwgbGVuZ3RoKQogICAgICAgICAgICAgZW5zdXJl
TGVuZ3RoU2xvdyh2bSwgbGVuZ3RoKTsKQEAgLTg0Niw3ICs4NTAsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBDb250aWd1b3VzSlNWYWx1ZXMgY3VycmVudEluZGV4aW5nRGF0YSgpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CkBAIC04NjMsNyArODY3LDcg
QEAgcHJvdGVjdGVkOgogICAgIEpTVmFsdWUgZ2V0SG9seUluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
OwotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgog
ICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCk7CkBA
IC05MDMsNyArOTA3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdW5zaWduZWQgY3VycmVudFJlbGV2
YW50TGVuZ3RoKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2Fz
ZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRF
WElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoK
QEAgLTk3NSw2ICs5NzksMTEgQEAgcHJpdmF0ZToKICAgICAKIHByb3RlY3RlZDoKICAgICBCdXR0
ZXJmbHkqIG1fYnV0dGVyZmx5OworCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3ByaXZhdGU6Cisg
ICAgdWludDMyX3QgbV9wYWRkaW5nOworI2VuZGlmCiB9OwogCiAvLyBKU05vbkZpbmFsT2JqZWN0
IGlzIGEgdHlwZSBvZiBKU09iamVjdCB0aGF0IGhhcyBzb21lIGludGVybmFsIHN0b3JhZ2UsCkBA
IC0xMTAxLDM1ICsxMTEwLDM1IEBAIGlubGluZSBzaXplX3QgSlNPYmplY3Q6Om9mZnNldE9mSW5s
aW5lU3QKIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xvYmFsT2JqZWN0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEdsb2JhbE9iamVj
dFR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBHbG9iYWxPYmplY3RUeXBlOwogfQogCiBpbmxp
bmUgYm9vbCBKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA+PSBWYXJpYWJsZU9iamVjdFR5cGU7Cisg
ICAgcmV0dXJuIHR5cGUoKSA+PSBWYXJpYWJsZU9iamVjdFR5cGU7CiB9CiAKIAogaW5saW5lIGJv
b2wgSlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QoKSBjb25zdAogewotICAgIEpTVHlwZSB0
eXBlID0gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpOworICAgIEpTVHlwZSB0eXBlID0g
dGhpcy0+dHlwZSgpOwogICAgIHJldHVybiB0eXBlID09IE5hbWVTY29wZU9iamVjdFR5cGUgfHwg
dHlwZSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKIH0KIAogCiBpbmxpbmUgYm9vbCBKU09iamVj
dDo6aXNOYW1lU2NvcGVPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlw
ZSgpID09IE5hbWVTY29wZU9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojpp
c0FjdGl2YXRpb25PYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUo
KSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6Omlz
RXJyb3JJbnN0YW5jZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLnR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEVy
cm9ySW5zdGFuY2VUeXBlOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJl
QW5kQnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0
dGVyZmx5KQpAQCAtMTE5MSwxMCArMTIwMCwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmlubGluZUdldE93CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwq
IHNwZWNpZmljOwotICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQo
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljKTsKICAgICBpZiAoTElLRUxZKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkp
IHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERpcmVjdChvZmZzZXQpOwotICAgICAgICBp
ZiAoc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dl
dHRlclNldHRlcigpKQorICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgIGZpbGxHZXR0
ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFsdWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgYXR0cmlidXRlcywgdmFsdWUs
IG9mZnNldCk7CkBAIC0xMjczLDE1ICsxMjgzLDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbCgKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVChwcm9wZXJ0eU5h
bWUuYXNJbmRleCgpID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewog
ICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVu
dFNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsK
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGN1cnJlbnRseSBhIHNwZWNpZmljIGZ1bmN0aW9u
LCBhbmQgdGhlcmUgbm93IGVpdGhlciBpc24ndCwKICAgICAgICAgICAgIC8vIG9yIHRoZSBuZXcg
dmFsdWUgaXMgZGlmZmVyZW50LCB0aGVuIGRlc3BlY2lmeS4KICAgICAgICAgICAgIGlmIChjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbiAmJiAoc3BlY2lmaWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbikpCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlKCktPmRlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmUtPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJl
YWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTMwMiwzMyArMTMx
MywzMyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAgICAg
ICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRl
cmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93
T3V0T2ZMaW5lU3RvcmFnZSgpKQotICAgICAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9m
TGluZVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1
cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOwotICAgICAgICBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAgICAgICAgc2V0U3Ry
dWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsKKyAgICAg
ICAgaWYgKHN0cnVjdHVyZS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAgICAg
ICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlLT5v
dXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3Jh
Z2VDYXBhY2l0eSgpKTsKKyAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVu
Y3Rpb24pOworICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwg
bmV3QnV0dGVyZmx5KTsKIAogICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwotICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAgICAgIHB1dERpcmVj
dCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50IG9uIHNldE5ld1By
b3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5jdGlvbikKICAgICAg
ICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAgICAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5zZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVy
ZSh0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQpKSB7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVy
ZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICBpZiAoU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoc3Ry
dWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNl
dCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoY3VycmVudENhcGFj
aXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAgICAgICAgIG5ld0J1
dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBjdXJyZW50Q2FwYWNpdHksIHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIGlmIChjdXJyZW50Q2FwYWNpdHkg
IT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAgICAgICAgbmV3QnV0
dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBhY2l0eSwgbmV3U3Ry
dWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKIAogICAgICAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkp
OwotICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgbmV3QnV0
dGVyZmx5KTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZz
ZXQpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUs
IG5ld0J1dHRlcmZseSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25zIHdpdGggc3BlY2lm
aWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAgICAvLyBzbyBsZWF2
ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtMTMzOSw3ICsxMzUwLDcgQEAg
aW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgdW5zaWduZWQg
Y3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsK
LSAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRB
dHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAg
ICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9u
bHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzYwLDcgKzEzNzEsNyBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNwZWNp
ZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUgcHV0
LCByZXR1cm4uCkBAIC0xMzcyLDcgKzEzODMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVu
c2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgdGhpcy0+c3RydWN0dXJl
KCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0LCBz
bG90LmNvbnRleHQoKSk7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y0Z1bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKICAgICAKICAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CkBAIC0xNDM2LDEwICsxNDQ3LDExIEBAIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RXaXRob3V0VHIKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQVNTRVJUKCF2
YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAgICAg
QnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZseTsKLSAgICBpZiAoc3RydWN0dXJl
KCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQotICAgICAgICBuZXdCdXR0ZXJmbHkg
PSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7
Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVP
YmplY3QodmFsdWUpKTsKLSAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVy
ZSgpLCBuZXdCdXR0ZXJmbHkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3Ry
dWN0dXJlKCk7CisgICAgaWYgKHN0cnVjdHVyZS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZS0+c3VnZ2VzdGVkTmV3T3V0T2ZM
aW5lU3RvcmFnZUNhcGFjaXR5KCkpOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOworICAgIHNldFN0cnVjdHVyZUFuZEJ1
dHRlcmZseSh2bSwgc3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHB1dERpcmVjdCh2bSwg
b2Zmc2V0LCB2YWx1ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDE1ODM4MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiks
IGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTc3LDYgKzc3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdAogSlNPYmplY3QqIEpTU2NvcGU6Om9iamVj
dEF0U2NvcGUoSlNTY29wZSogc2NvcGUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHNjb3Bl
OwotICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBXaXRo
U2NvcGVUeXBlKQorICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQogICAg
ICAgICByZXR1cm4ganNDYXN0PEpTV2l0aFNjb3BlKj4ob2JqZWN0KS0+b2JqZWN0KCk7CiAKICAg
ICByZXR1cm4gb2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxl
bmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9CkBA
IC0xNzQsNiArMTc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQpAQCAtNDk3LDcgKzQ5
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkg
JiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQorICAgIGlu
bGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYu
YXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBlOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBp
bmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNUeXBlIHsKK2VudW0gSlNU
eXBlIDogdWludDhfdCB7CiAgICAgVW5zcGVjaWZpZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5cGUs
CiAgICAgQm9vbGVhblR5cGUsCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gSlNUeXBlIHsKICAgICBF
cnJvckluc3RhbmNlVHlwZSwKICAgICBQcm94eVR5cGUsCiAgICAgV2l0aFNjb3BlVHlwZSwKKyAg
ICBBcmd1bWVudHNUeXBlLAogCiAgICAgTmFtZVNjb3BlT2JqZWN0VHlwZSwKICAgICAvLyBWYXJp
YWJsZU9iamVjdFR5cGUgbXVzdCBiZSBsZXNzIHRoYW4gTU9TVCBvZiB0aGUgdHlwZXMgb2YgaXRz
IHN1YmNsYXNzZXMgYW5kIG9ubHkgaXRzIHN1YmNsYXNzZXMuCkBAIC02NCw2ICs2NSw4IEBAIGVu
dW0gSlNUeXBlIHsKICAgICBBY3RpdmF0aW9uT2JqZWN0VHlwZSwKIH07CiAKK0NPTVBJTEVfQVNT
RVJUKHNpemVvZihKU1R5cGUpID09IHNpemVvZih1aW50OF90KSwgc2l6ZW9mX2pzdHlwZV9pc19v
bmVfYnl0ZSk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDE1ODM4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgUHJvaGliaXRzUHJvcGVydHlDYWNoaW5nID0gMSA8PCA5OwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QgPSAxIDw8IDEwOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSA9IDEgPDwgMTE7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUlzSW1tb3J0YWwgPSAxIDw8IDEyOwogCiAg
ICAgY2xhc3MgVHlwZUluZm8gewogICAgIHB1YmxpYzoKQEAgLTY2LDcgKzY3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBKU1R5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV90eXBlKTsgfQotICAgICAgICBib29sIGlzT2JqZWN0
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID49IE9iamVjdFR5cGU7IH0KKyAgICAgICAgYm9vbCBp
c09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGlzT2JqZWN0KHR5cGUoKSk7IH0KKyAgICAgICAgc3Rh
dGljIGJvb2wgaXNPYmplY3QoSlNUeXBlIHR5cGUpIHsgcmV0dXJuIHR5cGUgPj0gT2JqZWN0VHlw
ZTsgfQogICAgICAgICBib29sIGlzRmluYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkg
PT0gRmluYWxPYmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNOdW1iZXJPYmplY3QoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gTnVtYmVyT2JqZWN0VHlwZTsgfQogICAgICAgICBib29sIGlz
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOYW1lSW5zdGFuY2VUeXBlOyB9CkBAIC04
NCw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHByb2hpYml0c1Byb3Bl
cnR5Q2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoUHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nKTsgfQogICAgICAgICBib29sIGhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90
KTsgfQogICAgICAgICBib29sIHN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4g
aXNTZXRPbkZsYWdzMihTdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7IH0KKyAgICAgICAgYm9vbCBzdHJ1
Y3R1cmVJc0ltbW9ydGFsKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihTdHJ1Y3R1cmVJ
c0ltbW9ydGFsKTsgfQogCiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgZmxhZ3NPZmZzZXQoKQog
ICAgICAgICB7CkBAIC05NSw2ICs5OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihUeXBlSW5mbywgbV90eXBlKTsKICAgICAgICAgfQogCisg
ICAgICAgIHR5cGVkZWYgdWludDhfdCBJbmxpbmVUeXBlRmxhZ3M7CisgICAgICAgIElubGluZVR5
cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJKHJl
dmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
cigpOwogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRy
YWl0czxpbnQzMl90PiBJbmRleFRyYWl0czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NyArODksNyBAQCBib29sIGpzSXNPYmplY3RUeXBlKENhbGxGcmFtZSogY2FsbEZyYW1lCiAgICAg
aWYgKCF2LmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gdi5pc051bGwoKTsKIAotICAgIEpTVHlw
ZSB0eXBlID0gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpOworICAg
IEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwogICAgIGlmICh0eXBlID09IFN0cmlu
Z1R5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAodHlwZSA+PSBPYmplY3RUeXBl
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hU
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE1ODM4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
OCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTIwMiw2ICsyMDIsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAjZW5kaWYKIAorcHJvdGVjdGVkOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4g
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiBwcml2YXRlOgogICAgIFByb3BlcnR5VGFibGUoVk0m
LCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwogICAgIFByb3BlcnR5VGFibGUoVk0mLCBKU0Nl
bGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExlYWZUeXBlLCAwKSwgaW5mbygpKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKExlYWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKQEAgLTg1LDYgKzg1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXko
bV9mbGFncywgbV9wYXR0ZXJuU3RyaW5nKTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OworCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlW
YWx1ZU1hcC5oCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1v
cnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKIHB1YmxpYzoKICAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCShyZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTMgKzE1NSwxNCBAQCB2b2lk
IFN0cnVjdHVyZTo6ZHVtcFN0YXRpc3RpY3MoKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25z
dCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGlu
Z1R5cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2Vs
bCh2bSwgdm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2
bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpKQorICAgICwgbV9pbmRl
eGluZ1R5cGUoaW5kZXhpbmdUeXBlKQorICAgICwgbV90eXBlSW5mbyh0eXBlSW5mbykKICAgICAs
IG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QsIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD46Ok1heUJlTnVsbCkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcm90
b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25X
YXRjaHBvaW50U2V0KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29mZnNldChpbnZhbGlk
T2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyh0eXBlSW5mbykKLSAgICAsIG1faW5kZXhpbmdUeXBl
KGluZGV4aW5nVHlwZSkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAg
ICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5u
ZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMTgzLDEyICsxODQsMTMgQEAgY29uc3QgQ2xhc3NJ
bmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAiUwogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYg
dm0pCiAgICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGwpCisgICAgLCBtX3N0cnVjdHVyZUlE
KHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2lu
ZGV4aW5nVHlwZSgwKQorICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsKQogICAgICwgbV9wcm90b3R5cGUodm0s
IHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFzc0luZm8oaW5mbygpKQogICAgICwgbV90cmFu
c2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZzZXQo
aW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNW
aXNpdENoaWxkcmVuKQotICAgICwgbV9pbmRleGluZ1R5cGUoMCkKICAgICAsIG1faW5saW5lQ2Fw
YWNpdHkoMCkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAg
ICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0yMDUsMTIgKzIwNywxMyBAQCBT
dHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAKIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2
bSwgY29uc3QgU3RydWN0dXJlKiBwcmV2aW91cykKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0
dXJlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVy
ZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpKQorICAgICwgbV9pbmRleGluZ1R5cGUocHJldmlv
dXMtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkKKyAgICAsIG1fdHlwZUluZm8ocHJl
dmlvdXMtPnR5cGVJbmZvKCkudHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5mbGFncygpICYg
flN0cnVjdHVyZUhhc1JhcmVEYXRhKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIHByZXZp
b3VzLT5zdG9yZWRQcm90b3R5cGUoKSkKICAgICAsIG1fY2xhc3NJbmZvKHByZXZpb3VzLT5tX2Ns
YXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlhbGl6ZWRXYXRj
aGluZykKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHBy
ZXZpb3VzLT50eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAm
IH5TdHJ1Y3R1cmVIYXNSYXJlRGF0YSkKLSAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5p
bmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KHBy
ZXZpb3VzLT5tX2lubGluZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91
cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNl
KQpAQCAtMjIzLDYgKzIyNiw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3Qg
U3RydWMKICAgICAsIG1fZGlkVHJhbnNpdGlvbih0cnVlKQogICAgICwgbV9zdGF0aWNGdW5jdGlv
blJlaWZpZWQocHJldmlvdXMtPm1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKQogeworICAgIEFTU0VS
VCghcHJldmlvdXMtPnR5cGVJbmZvKCkuc3RydWN0dXJlSXNJbW1vcnRhbCgpKTsKICAgICBpZiAo
cHJldmlvdXMtPnR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSAmJiBwcmV2aW91cy0+
cmFyZURhdGEoKS0+bmVlZHNDbG9uaW5nKCkpCiAgICAgICAgIGNsb25lUmFyZURhdGFGcm9tKHZt
LCBwcmV2aW91cyk7CiAgICAgZWxzZSBpZiAocHJldmlvdXMtPnByZXZpb3VzSUQoKSkKQEAgLTIz
Myw2ICsyMzcsMTMgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1Ywog
ICAgICAgICBtX2dsb2JhbE9iamVjdC5zZXQodm0sIHRoaXMsIHByZXZpb3VzLT5tX2dsb2JhbE9i
amVjdC5nZXQoKSk7CiB9CiAKK1N0cnVjdHVyZTo6flN0cnVjdHVyZSgpCit7CisgICAgaWYgKHR5
cGVJbmZvKCkuc3RydWN0dXJlSXNJbW1vcnRhbCgpKQorICAgICAgICByZXR1cm47CisgICAgSGVh
cDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmRlYWxsb2NhdGVJRCh0aGlzLCBtX3N0
cnVjdHVyZUlEKTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQog
ewogICAgIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGNlbGwpLT5TdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShy
ZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUg
PSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKIAorICAgIH5TdHJ1Y3R1
cmUoKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAg
IHsKQEAgLTk1LDYgKzk3LDggQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVibGljOgorICAgIFN0
cnVjdHVyZUlEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsgfQorCiAgICAgc3Rh
dGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9w
ZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFByb3BlcnR5U2xvdDo6
VW5rbm93bkNvbnRleHQpOwpAQCAtMzAxLDYgKzMwNSwxOSBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAK
KyAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uRmllbGRzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Kj4oJm1faW5kZXhpbmdUeXBlKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKKyAgICB7Cisg
ICAgICAgIC8vIFdlIGxvYWQgbV9zdHJ1Y3R1cmVJRCwgbV9pbmRleGluZ1R5cGUsIGFuZCBtX3R5
cGVJbmZvIGluIGEgc2luZ2xlCisgICAgICAgIC8vIDY0LWJpdCBpbnN0cnVjdGlvbiwgc28gd2Ug
bmVlZCB0byBtYWtlIHN1cmUgdGhleSdyZSBwcm9wZXJseSBhbGlnbmVkLgorICAgICAgICBBU1NF
UlQoT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCkgPT0gOCk7CisgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3N0cnVjdHVyZUlEKTsKKyAg
ICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9wcm90b3R5cGUpOwpAQCAt
NDY5LDcgKzQ4NiwxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19tYXhUcmFu
c2l0aW9uTGVuZ3RoRm9yTm9uRXZhbFB1dEJ5SWQgPSA1MTI7CiAKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKLSAgICAgICAgCisg
ICAgCisgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBwcm9wZXJseSBhbGlnbmVkIGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlICdTdHJ1Y3R1cmUnCisgICAgLy8gcGFydCBvZiB0aGUgb2JqZWN0LgorICAg
IFN0cnVjdHVyZUlEIG1fc3RydWN0dXJlSUQ7CisgICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdU
eXBlOworICAgIFR5cGVJbmZvIG1fdHlwZUluZm87CisKICAgICBXcml0ZUJhcnJpZXI8SlNHbG9i
YWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OwogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3By
b3RvdHlwZTsKICAgICBtdXRhYmxlIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmVDaGFpbj4gbV9jYWNo
ZWRQcm90b3R5cGVDaGFpbjsKQEAgLTQ5Myw4ICs1MTYsNiBAQCBwcml2YXRlOgogICAgIC8vIG1f
b2Zmc2V0IGRvZXMgbm90IGFjY291bnQgZm9yIGFub255bW91cyBzbG90cwogICAgIFByb3BlcnR5
T2Zmc2V0IG1fb2Zmc2V0OwogCi0gICAgVHlwZUluZm8gbV90eXBlSW5mbzsKLSAgICBJbmRleGlu
Z1R5cGUgbV9pbmRleGluZ1R5cGU7CiAgICAgdWludDhfdCBtX2lubGluZUNhcGFjaXR5OwogICAg
IAogICAgIENvbmN1cnJlbnRKSVRMb2NrIG1fbG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTU4MzgzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNyArNTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCi0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKSB7IHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5k
VHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7IH0KKyAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBERUNMQVJFX0lORk87CiAKQEAgLTY0LDYgKzY3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUqIGhlYWQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCisjaW5jbHVkZSA8bGlt
aXRzLmg+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJs
ZSgpCisgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgwKQorICAgICwgbV90YWJsZShuZXcgU3RydWN0
dXJlT3JPZmZzZXRbc19pbml0aWFsU2l6ZV0pCisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fY2Fw
YWNpdHkoc19pbml0aWFsU2l6ZSkKK3sKKyAgICAvLyBXZSBwcmUtYWxsb2NhdGUgdGhlIGZpcnN0
IG9mZnNldCBzbyB0aGF0IHRoZSBudWxsIFN0cnVjdHVyZQorICAgIC8vIGNhbiBzdGlsbCBiZSBy
ZXByZXNlbnRlZCBhcyB0aGUgU3RydWN0dXJlSUQgJzAnLgorICAgIGFsbG9jYXRlSUQoMCk7Cit9
CisKK1N0cnVjdHVyZUlEVGFibGU6On5TdHJ1Y3R1cmVJRFRhYmxlKCkKK3sKKyAgICBkZWxldGUg
W10gbV90YWJsZTsKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6ZV90IG5l
d0NhcGFjaXR5KQoreworICAgIC8vIENyZWF0ZSB0aGUgbmV3IHRhYmxlLgorICAgIFN0cnVjdHVy
ZU9yT2Zmc2V0KiBuZXdUYWJsZSA9IG5ldyBTdHJ1Y3R1cmVPck9mZnNldFtuZXdDYXBhY2l0eV07
CisKKyAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRhYmxlIHRvIHRoZSBuZXcg
dGFibGUuCisgICAgbWVtY3B5KG5ld1RhYmxlLCBtX3RhYmxlLCBtX2NhcGFjaXR5ICogc2l6ZW9m
KFN0cnVjdHVyZU9yT2Zmc2V0KSk7CisKKyAgICAvLyBTdG9yZSBmZW5jZSB0byBtYWtlIHN1cmUg
d2UndmUgY29waWVkIGV2ZXJ5dGhpbmcgYmVmb3JlIGRvaW5nIHRoZSBzd2FwLgorICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7CisKKyAgICAvLyBTd2FwIHRoZSBvbGQgYW5kIG5ldyB0YWJsZXMu
CisgICAgU3RydWN0dXJlT3JPZmZzZXQqIG9sZFRhYmxlID0gbV90YWJsZTsKKyAgICBtX3RhYmxl
ID0gbmV3VGFibGU7CisKKyAgICAvLyBQdXQgdGhlIG9sZCB0YWJsZSAobm93IGxhYmVsZWQgYXMg
bmV3KSBpbnRvIHRoZSBsaXN0IG9mIG9sZCB0YWJsZXMuCisgICAgbV9vbGRUYWJsZXMuYXBwZW5k
KG9sZFRhYmxlKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgY2FwYWNpdHkuCisgICAgbV9jYXBhY2l0
eSA9IG5ld0NhcGFjaXR5OworfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmZsdXNoT2xkVGFi
bGVzKCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vbGRUYWJsZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgIGRlbGV0ZSBbXSBtX29sZFRhYmxlc1tpXTsKKyAgICBtX29sZFRhYmxl
cy5jbGVhcigpOworfQorCitTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlE
KFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFt
X2ZpcnN0RnJlZU9mZnNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NhcGFjaXR5IDw9
IFVJTlRfTUFYKTsKKyAgICAgICAgaWYgKG1fc2l6ZSA9PSBtX2NhcGFjaXR5KQorICAgICAgICAg
ICAgcmVzaXplKG1fY2FwYWNpdHkgKiAyKTsKKyAgICAgICAgQVNTRVJUKG1fc2l6ZSA8IG1fY2Fw
YWNpdHkpOworCisgICAgICAgIFN0cnVjdHVyZU9yT2Zmc2V0IG5ld0VudHJ5OworICAgICAgICBu
ZXdFbnRyeS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisKKyAgICAgICAgU3RydWN0dXJlSUQgcmVz
dWx0ID0gbV9zaXplOworICAgICAgICBtX3RhYmxlW3Jlc3VsdF0gPSBuZXdFbnRyeTsKKyAgICAg
ICAgbV9zaXplKys7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgU3RydWN0
dXJlSUQgcmVzdWx0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9maXJzdEZyZWVPZmZzZXQg
PSBtX3RhYmxlW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7CisgICAgbV90YWJsZVtyZXN1bHRd
LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICBy
ZXR1cm4gc3RydWN0dXJlOworI2VuZGlmCit9CisKK3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6ZGVh
bGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKG1fdGFibGVbc3RydWN0
dXJlSURdLnN0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpOworICAgIG1fdGFibGVbc3RydWN0dXJlSURd
Lm9mZnNldCA9IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gc3Ry
dWN0dXJlSUQ7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdHJ1Y3R1cmUpOworICAgIFVOVVNF
RF9QQVJBTShzdHJ1Y3R1cmVJRCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlSURUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFN0cnVjdHVyZUlEVGFibGVfaAorI2RlZmluZSBTdHJ1Y3R1cmVJRFRhYmxlX2gK
KworI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOworCisjaWYgVVNFKEpTVkFMVUU2NCkK
K3R5cGVkZWYgdWludDMyX3QgU3RydWN0dXJlSUQ7CisjZWxzZQordHlwZWRlZiBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZUlEOworI2VuZGlmCisKK2NsYXNzIFN0cnVjdHVyZUlEVGFibGUgeworICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgU3RydWN0dXJl
SURUYWJsZSgpOworICAgIH5TdHJ1Y3R1cmVJRFRhYmxlKCk7CisKKyAgICB2b2lkKiogYmFzZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KKworICAgIFN0
cnVjdHVyZSogZ2V0KFN0cnVjdHVyZUlEKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVJRChTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUq
KTsKKworICAgIHZvaWQgZmx1c2hPbGRUYWJsZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJl
c2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpOworICAgIAorICAgIHVuaW9uIFN0cnVjdHVyZU9yT2Zm
c2V0IHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZUlE
IG9mZnNldDsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRpYWxTaXpl
ID0gMjU2OworCisgICAgVmVjdG9yPFN0cnVjdHVyZU9yT2Zmc2V0Kj4gbV9vbGRUYWJsZXM7Cisg
ICAgdWludDMyX3QgbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgU3RydWN0dXJlT3JPZmZzZXQqIG1f
dGFibGU7CisgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKK307CisK
K2lubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6OmdldChTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmVJRCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBtX3RhYmxlW3N0cnVj
dHVyZUlEXS5zdHJ1Y3R1cmU7CisjZWxzZQorICAgIHJldHVybiBzdHJ1Y3R1cmVJRDsKKyNlbmRp
ZgorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN0cnVjdHVyZUlEVGFibGVf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShy
ZXZpc2lvbiAxNTgzODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNiArNDg3LDkgQEAgcHVibGljOgogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKwogcHJpdmF0ZToKICAgICBTaGFyZWRTeW1ib2xUYWJsZShWTSYgdm0pCiAgICAg
ICAgIDogSlNDZWxsKHZtLCB2bS5zaGFyZWRTeW1ib2xUYWJsZVN0cnVjdHVyZS5nZXQoKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAkocmV2aXNp
b24gMTU4MzgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJF
X0lORk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0
cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAg
ICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217203</attachid>
            <date>2013-11-18 09:27:33 -0800</date>
            <delta_ts>2013-11-18 09:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20131118092731.patch</filename>
            <type>text/plain</type>
            <size>427879</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMiBA
QAorMjAxMy0xMC0zMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFB0cldpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FuSnVt
cFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OnN0b3JlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyV2l0
aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRy
ZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpi
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODY6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJheVBy
b2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2Jz
ZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZn
L0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hX
ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3Ry
dWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZv
ck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3Ry
aW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmlu
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVP
YmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVh
bGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0
T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlUHV0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6ZXF1YWxOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNBcnJheVR5
cGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpoYXNDbGFzc0luZm8pOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3RPck90aGVy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAg
ICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
b21waWxlU3R1YldpdGhPU1JFeGl0U3RhY2ttYXApOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGVTdHViV2l0aG91dE9TUkV4aXRTdGFja21hcCk6CisgICAgICAgICogaGVhcC9HQ0Fzc2VydGlv
bnMuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0
dXJlSURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0
YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6fkpTU3RhY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFu
Y2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJ
VENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29y
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6
SklUOjpicmFuY2hTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpicmFuY2hTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXh0X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Rmxv
YXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAg
KEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
R2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNo
SW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNl
dEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9T
cGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6
OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJ
VDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dl
bmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGVhclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0
eXBlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppbmRleGluZ1R5cGUpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0dldHRlclNldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNQcm94eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNB
UElWYWx1ZVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6bWV0aG9kVGFibGUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxhYmxlT2JqZWN0U2xvdyk6
CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGlj
dGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsSW5kZXhlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhv
dXRDb3B5aW5nRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQz
MlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMlNsb3cpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlRG91YmxlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVDb250aWd1b3VzU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVBcnJheVN0b3JhZ2VTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUFycmF5
U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROZXdW
ZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291bnRFbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0VmVjdG9y
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5U3RvcmFnZU9y
TnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJl
bnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNBY3Rp
dmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0U2NvcGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZv
Ojppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9ydGFs
KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlubGluZVR5cGVGbGFncyk6CisgICAgICAgICog
cnVudGltZS9NYXBEYXRhLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b2JqZWN0SW5pdGlhbGl6YXRpb25GaWVs
ZHMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJ
RFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6flN0cnVjdHVyZUlEVGFi
bGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRh
YmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6YmFzZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmdldCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xU
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEuaDoKKwogMjAxMy0xMS0xNCAg
RGF2aWQgRmFybGVyICA8ZGZhcmxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weSBBU0FOIGZs
YWcgc2V0dGluZ3MgdG8gV2ViQ29yZSBhbmQgSmF2YVNjcmlwdENvcmUgaW50ZXJtZWRpYXRlIGJ1
aWxkIHRvb2xzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQxNCw2ICs0MTQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKICAgICBydW50aW1lL1N0cnVj
dHVyZS5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorICAgIHJ1bnRpbWUvU3Ry
dWN0dXJlSURUYWJsZS5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAogICAg
IHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwOTksNiArMTA5OSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0FQSVNoaW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElT
aGltcy5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SVNoaW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1NCwzMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSWRlbnRpZmllclRhYmxlKiBtX2VudHJ5SWRlbnRpZmllclRhYmxlOwogfTsKIAorLy8gV2Ug
bmVlZCB0aGlzIGNsYXNzIHNvIHRoYXQgd2UgY2FuIG1vcmUgZWFzaWx5IGNvbnRyb2wgd2hlbiB3
ZSBzZXQgdGhlIHRocmVhZCBsb2NhbCBWTSBmaWVsZC4KK2NsYXNzIFNjb3BlZFRocmVhZExvY2Fs
Vk0geworcHVibGljOgorICAgIFNjb3BlZFRocmVhZExvY2FsVk0oVk0qIGN1cnJlbnRWTSkKKyAg
ICAgICAgOiBtX3ByZXZpb3VzVk0oVk06OmN1cnJlbnRWTSgpKQorICAgIHsKKyAgICAgICAgVk06
OnNldEN1cnJlbnRWTShjdXJyZW50Vk0pOworICAgIH0KKworICAgIH5TY29wZWRUaHJlYWRMb2Nh
bFZNKCkKKyAgICB7CisgICAgICAgIFZNOjpzZXRDdXJyZW50Vk0obV9wcmV2aW91c1ZNKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgVk0qIG1fcHJldmlvdXNWTTsKK307CisKIGNsYXNzIEFQSUVu
dHJ5U2hpbSA6IHB1YmxpYyBBUElFbnRyeVNoaW1XaXRob3V0TG9jayB7CiBwdWJsaWM6CiAgICAg
Ly8gTm9ybWFsIEFQSSBlbnRyeQogICAgIEFQSUVudHJ5U2hpbShFeGVjU3RhdGUqIGV4ZWMsIGJv
b2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQogICAgICAgICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRM
b2NrKCZleGVjLT52bSgpLCByZWdpc3RlclRocmVhZCkKKyAgICAgICAgLCBtX3RocmVhZExvY2Fs
Vk0oJmV4ZWMtPnZtKCkpCiAgICAgICAgICwgbV9sb2NrSG9sZGVyKGV4ZWMtPnZtKCkuZXhjbHVz
aXZlVGhyZWFkID8gMCA6IGV4ZWMpCiAgICAgewogICAgIH0KQEAgLTY2LDYgKzg1LDcgQEAgcHVi
bGljOgogICAgIC8vIEpTUHJvcGVydHlOYW1lQWNjdW11bGF0b3Igb25seSBoYXMgYSB2bS4KICAg
ICBBUElFbnRyeVNoaW0oVk0qIHZtLCBib29sIHJlZ2lzdGVyVGhyZWFkID0gdHJ1ZSkKICAgICAg
ICAgOiBBUElFbnRyeVNoaW1XaXRob3V0TG9jayh2bSwgcmVnaXN0ZXJUaHJlYWQpCisgICAgICAg
ICwgbV90aHJlYWRMb2NhbFZNKHZtKQogICAgICAgICAsIG1fbG9ja0hvbGRlcih2bS0+ZXhjbHVz
aXZlVGhyZWFkID8gMCA6IHZtKQogICAgIHsKICAgICB9CkBAIC03Nyw2ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgU2NvcGVkVGhyZWFkTG9jYWxWTSBtX3RocmVhZExv
Y2FsVk07CiAgICAgSlNMb2NrSG9sZGVyIG1fbG9ja0hvbGRlcjsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAy
LDYgKzEwMiw3IEBAIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKikKIAog
LSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUgKil2YWx1ZQogeworICAgIEpTQzo6QVBJRW50
cnlTaGltIGVudHJ5U2hpbSh0b0pTKG1fY29udGV4dCkpOwogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgbV9leGNlcHRpb24uc2V0KHRvSlMobV9jb250ZXh0KS0+dm0oKSwgdG9KUyhKU1ZhbHVlVG9P
YmplY3QobV9jb250ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUodmFsdWUpLCAwKSkpOwogICAgIGVs
c2UKQEAgLTI0NCwxNCArMjQ1LDEzIEBAIC0gKHZvaWQpZW5kQ2FsbGJhY2tXaXRoRGF0YTooQ2Fs
bGJhY2tEYXQKIAogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmpDT2JqZWN0OihpZClvYmplY3QK
IHsKLSAgICAvLyBMb2NrIGFjY2VzcyB0byBtX3dyYXBwZXJNYXAKLSAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKHRvSlMobV9jb250ZXh0KSk7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlT
aGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Om9iamVjdF07CiB9CiAKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9ySlNPYmplY3Q6
KEpTVmFsdWVSZWYpdmFsdWUKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMobV9j
b250ZXh0KSk7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0
KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOnZh
bHVlXTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNiArNjgsMjAgQEAgSlNDb250ZXh0
R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSgogCiB2b2lkIEpTQ29udGV4dEdyb3VwUmVs
ZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkKIHsKLSAgICBJZGVudGlmaWVyVGFibGUqIHNh
dmVkSWRlbnRpZmllclRhYmxlOworLy8gICAgSWRlbnRpZmllclRhYmxlKiBzYXZlZElkZW50aWZp
ZXJUYWJsZTsKICAgICBWTSYgdm0gPSAqdG9KUyhncm91cCk7CiAKKy8qCiAgICAgewotICAgICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgICAgIHNhdmVkSWRlbnRpZmllclRhYmxlID0g
d3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUodm0uaWRlbnRpZmllclRh
YmxlKTsKKyovCisgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oJnZtKTsKKy8vICAgICAg
ICBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRp
ZmllclRhYmxlKHZtLmlkZW50aWZpZXJUYWJsZSk7CiAgICAgICAgIHZtLmRlcmVmKCk7CisvKgog
ICAgIH0KIAogICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHNh
dmVkSWRlbnRpZmllclRhYmxlKTsKKyovCiB9CiAKIHN0YXRpYyBib29sIGludGVybmFsU2NyaXB0
VGltZW91dENhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogY2FsbGJhY2tQdHIsIHZvaWQq
IGNhbGxiYWNrRGF0YSkKQEAgLTE2NSw3ICsxNjksNyBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFJl
bGVhc2UoSlNHbG9iYWxDb250CiAgICAgSWRlbnRpZmllclRhYmxlKiBzYXZlZElkZW50aWZpZXJU
YWJsZTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgewotICAgICAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShl
eGVjKTsKIAogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBzYXZlZElkZW50
aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHZt
LmlkZW50aWZpZXJUYWJsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFu
YWdlZFZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNN
YW5hZ2VkVmFsdWUubW0JKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJBUElDYXN0LmgiCisjaW1wb3J0
ICJBUElTaGltcy5oIgogI2ltcG9ydCAiSGVhcC5oIgogI2ltcG9ydCAiSlNDb250ZXh0SW50ZXJu
YWwuaCIKICNpbXBvcnQgIkpTVmFsdWVJbnRlcm5hbC5oIgpAQCAtMTkxLDYgKzE5Miw3IEBAIC0g
KGlkKWluaXRXaXRoVmFsdWU6KEpTVmFsdWUgKil2YWx1ZQogICAgICAgICByZXR1cm4gc2VsZjsK
IAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhbdmFsdWUuY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwogICAgIEpTQzo6V2VhazxKU0M6OkpTR2xvYmFsT2JqZWN0PiB3ZWFrKGdsb2Jh
bE9iamVjdCwgbWFuYWdlZFZhbHVlSGFuZGxlT3duZXIoKSwgc2VsZik7CiAgICAgbV9nbG9iYWxP
YmplY3Quc3dhcCh3ZWFrKTsKQEAgLTIxMiw2ICsyMTQsNyBAQCAtIChKU1ZhbHVlICopdmFsdWUK
ICAgICBpZiAobV93ZWFrVmFsdWUuaXNDbGVhcigpKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAg
ICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAgICAgSlNDb250ZXh0ICpjb250
ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0dsb2JhbFJl
ZihleGVjKV07CiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlOwogICAgIGlmIChtX3dlYWtWYWx1ZS5p
c1ByaW1pdGl2ZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDYsMTAgKzUwNiwxMSBAQCBib29sIEpT
T2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEpTT2JqZWN0SXNGdW5jdGlvbihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVj
dCkKK2Jvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjdHgpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKICAgICBKU0NlbGwqIGNlbGwgPSB0b0pTKG9iamVjdCk7CiAgICAgcmV0dXJuIGNlbGwtPm1l
dGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7
CkBAIC02MDUsMTIgKzYwNiwxMiBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29w
eVByb3BlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9Ci0gICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMp
OwogCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKKyAgICBKU09iamVjdCoganNPYmplY3Qg
PSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5hbWVz
ID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFtZUFy
cmF5IGFycmF5KHZtKTsKICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkocmV2aXNpb24gMTU5Mzc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02OTIsNiArNjkyLDggQEAgc3RhdGljIGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9i
YQogICAgICAgICAgICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRh
YmxlRGljdGlvbmFyeSBjbGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
KmRpY3Rpb25hcnkgPSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWN1cnJlbnQub2JqYzsKIAorICAg
ICAgICAgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29udGV4dCkpOworCiAg
ICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZUFycmF5ID0gSlNP
YmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBqcyk7CiAgICAgICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnR5TmFtZUFycmF5KTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlz
aW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC02MDMsNiArNjAzLDcgQEAgaWQgdHJ5VW53cmFwT2JqY09iamVj
dChKU0dsb2JhbENvbnRleHRSZQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBK
U09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNl
cHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBl
bnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJpdHMo
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6aW5mbygpKSkK
ICAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdCo+
KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFyZ2V0ID0gdHJ5
VW53cmFwQ29uc3RydWN0b3Iob2JqZWN0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxNSw2ICsx
MDE1LDcgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgIEpTVmFsdWUgKm15Q3Vz
dG9tUHJvcGVydHkgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImdldExhc3ROb2RlSW5DaGFp
bihyb290KS5teUN1c3RvbVByb3BlcnR5Il07CiAgICAgICAgIGNoZWNrUmVzdWx0KEAiTXkgY3Vz
dG9tIHByb3BlcnR5ID09IDQyIiwgW215Q3VzdG9tUHJvcGVydHkgaXNOdW1iZXJdICYmIFtteUN1
c3RvbVByb3BlcnR5IHRvSW50MzJdID09IDQyKTsKICAgICB9CisgICAgTlNMb2coQCJkb25lIHdp
dGggdGVzdCIpOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNjUxLDYgKzY1MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPg0KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlLmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmNwcCIgLz4NCisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGEuY3BwIiAvPg0K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIiAvPg0K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0aWxzLmNwcCIg
Lz4NCkBAIC0xMjYwLDYgKzEyNjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIC8+DQogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIg
Lz4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTc1Myw2ICs3NTMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTdHJ1Y3R1cmVDaGFpbi5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
Pg0KICAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFN0cnVjdHVyZUlEVGFibGUuY3BwIj4NCisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4N
CisgICAgPC9DbENvbXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxT
eW1ib2xUYWJsZS5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8
L0NsQ29tcGlsZT4NCkBAIC0yMjc5LDYgKzIyODIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5oIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIj4NCiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDcs
NiArNzA3LDggQEAKIAkJMkE0OEQxOTExNzcyMzY1QjAwQzY1QTVGIC8qIEFQSUNhbGxiYWNrRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
MTFCNTc0MTc2QTIyNEQwMDBFMkEyMyAvKiBBUElDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJ
CTJBNkY0NjI2MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVD
OTggLyogSGVhcE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTJBN0E1OEVGMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgw
OEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAqLzsgfTsKKwkJMkFEMzUzRDkxODE1QzEwQjAw
NjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMzUzRDcxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovOyB9OworCQkyQUQzNTNEQTE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0
dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFEMzUzRDgxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQUQ4OTMyQjE3RTM4
NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVh
cEl0ZXJhdGlvblNjb3BlLmggKi87IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBs
aWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5
Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8q
IERhdGVDb252ZXJzaW9uLmggKi87IH07CkBAIC0xOTU3LDYgKzE5NTksOCBAQAogCQkyQTI4MjVD
RjE4MzQxRjJEMDA4N0ZCQTkgLyogRGVsYXllZFJlbGVhc2VTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEZWxheWVkUmVsZWFzZVNjb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBCREY3IC8qIERl
ZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHQy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRDM1M0Q3MTgxNUMxMEIwMDYxRTgx
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEl0ZXJhdGlv
blNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdDOThCNkUw
MEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5bGli
OyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKIAkJ
NDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY4MSw2ICszNjg1LDggQEAKIAkJCQlBNzkwREQ2
ODE4MkY0OTk3MDA1ODg4MDcgLyogU2V0SXRlcmF0b3JQcm90b3R5cGUuaCAqLywKIAkJCQlBNzkw
REQ2OTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5jcHAgKi8sCiAJCQkJQTc5MERE
NkExODJGNDk5NzAwNTg4ODA3IC8qIEpTU2V0SXRlcmF0b3IuaCAqLywKKwkJCQkyQUQzNTNENzE4
MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFEMzUzRDgx
ODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gcnVudGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00MTY4LDYgKzQxNzQs
NyBAQAogCQkJCTBGODMzNUI4MTYzOUMxRUEwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMDE4MkI3QTA0MDBGNkQ4NTEgLyogQnJl
YWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzUxN0FEQjVGMzAwNUFCMTc0IC8q
IEFycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUQzNTNEQTE4MTVDMTBCMDA2MUU4
MTcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMDg2MjExODJC
N0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGMzcxN0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyVmlldy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEMzRTYwRTE2RjVDRDAwQjM0NDYwIC8qIEFycmF5Q29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLApAQCAtNTUyNSw2ICs1NTMyLDcgQEAKIAkJCQkxNDdGMzlENDEwN0VDMzc2
MDA0MjdBNDggLyogSlNPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4MkI3RTQwQTQz
MDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Rjk5
MzYwMEZENzMyNTEwMEEwQjJEMCAvKiBKU09OT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTJBRDM1M0Q5MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk1RjZFNjk1MEU1QjVGOTcwMDkxRTg2MCAvKiBKU1Byb2ZpbGVyUHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzE4NEUxQTE3QkVEQkQzMDA3Q0I2M0EgLyogSlNQ
cm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTVGNjVEMTdDMTk5Q0UwMDc5NEQ0MCAv
KiBKU1Byb21pc2VDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8vCi0gICAgLy8gQSBEYXRh
TGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGluIHRoZSBjb2RlIGNvbnRh
aW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwzMiBpcyB1c2VkIHRvIHJl
ZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIDMyLWJpdCBjb25zdGFu
dCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVk
LgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVGVtcGxh
dGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTksNiArMzU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJh
bmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUp
KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0
YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkp
CisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMldpdGhQYXRjaChj
b25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7CisgICAgfQorCiAjaWYg
IUNQVShBUk1fVFJBRElUSU9OQUwpCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkK
ICAgICB7CkBAIC0zNzQsNiArMzc5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7CiAgICAgfQorCisgICAg
UGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7CisgICAgICAgIHJldHVy
biBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIGFkZHJlc3MsIGltbSkpOworICAgIH0KICNl
bmRpZgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE3OSw2ICsyMTc5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIEFMV0FZ
U19JTkxJTkUgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0
aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIGRhdGFMYWJl
bCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdo
dFZhbHVlLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
fQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2hQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQgPSBUcnVzdGVkSW1t
UHRyKDApKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0y
MjExLDYgKzIyMTgsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChy
ZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMy
JiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0z
MigwKSkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAg
ICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwg
aW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7
CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRj
aGFibGUgPSB0cnVlOwpAQCAtMjI3Niw2ICsyMjkxLDcgQEAgcHVibGljOgogICAgIFJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7IH0KIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3Rh
cnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
IGxhYmVsKQogICAgIHsKQEAgLTIyODgsNiArMjMwNCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgQ29kZUxv
Y2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENv
ZGVMb2NhdGlvbkRhdGFMYWJlbDMyKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOworICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQ
YXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lk
KiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICByZWVtaXRJbml0aWFsTW92ZVdpdGhQYXRj
aChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBpbml0aWFsVmFsdWUpOwpAQCAtMjI5
OCw2ICsyMzIwLDExIEBAIHB1YmxpYzoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCwgQWRkcmVzcywgaW50MzJf
dCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIH0KKwog
cHJvdGVjdGVkOgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFSTTY0QXNzZW1i
bGVyOjpDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTU5
Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTczOSw2ICs3MzksMTEgQEAgcHVibGljOgogICAgICAg
ICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBz
dG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKICAgICB2
b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpAQCAtNzU2LDYgKzc2
MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorICAgIAog
ICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpKTsKQEAgLTE2
OTEsNiArMTcwMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAg
QUxXQVlTX0lOTElORSBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBsb2Fk
MzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVX
aXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgfQorICAgIAogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoUHRyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tUHRyIHJpZ2h0
ID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUg
PSB0cnVlOwpAQCAtMTcyMyw2ICsxNzQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAocmVzdWx0KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUg
PSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0g
dHJ1ZTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMldpdGhQYXRjaChjb25kLCBsZWZ0
LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNo
YWJsZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAg
IH0KKwogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewogICAgICAgICBw
YWRCZWZvcmVQYXRjaCgpOwpAQCAtMTc2Niw2ICsxNzkyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAg
c3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lz
dGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC0xNzg5LDExICsx
ODE2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAg
ICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAg
eworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkxhYmVsKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxh
YmVsLCBBZGRyZXNzLCB2b2lkKikKICAgICB7CiAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRv
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIGlu
dDMyX3QpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICB9
CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICBzdHJ1Y3QgQ1BVU3RhdGUgewogICAgICAgICAj
ZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShy
ZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQp
KSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZElt
bTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAg
cGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGlu
aXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAg
ICBkYXRhTGFiZWwgPSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJl
bFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAt
MjU5LDYgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1w
UmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIg
bGFiZWwpCiAgICAgewpAQCAtMjgxLDYgKzI5MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3Rh
dGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9u
QWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0g
MTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50
IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNv
ZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAg
ICAgICBBU1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAg
ICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBh
dGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2
b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1
bXBUb19jbXBsX2lyX2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygp
LCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMjky
LDYgKzMxMiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7
CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBB
ZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGlu
aXRpYWxWYWx1ZSwgMCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9C
RSkKICAgICAvLyBGb3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCog
YXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlz
aW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjA2LDYgKzYwNiwxOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVjeDsKICAgICB9CiAKKyAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBSZWdpc3RlcklEIGdldFVudXNlZFJlZ2lzdGVyKEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLmJhc2UgIT0gWDg2UmVnaXN0ZXJzOjpl
YXgpCisgICAgICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplYXg7CisKKyAgICAgICAgaWYg
KGFkZHJlc3MuYmFzZSAhPSBYODZSZWdpc3RlcnM6OmVieCkKKyAgICAgICAgICAgIHJldHVybiBY
ODZSZWdpc3RlcnM6OmVieDsKKworICAgICAgICBBU1NFUlQoYWRkcmVzcy5iYXNlICE9IFg4NlJl
Z2lzdGVyczo6ZWN4KTsKKyAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OworICAgIH0K
KwogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAg
ICB7CiAjaWYgQ1BVKFg4NikKQEAgLTYyNSw2ICs2MzcsMjUgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZiX3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRk
cmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVn
aXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisjaWYgQ1BVKFg4NikKKyAgICAg
ICAgLy8gT24gMzItYml0IHg4NiB3ZSBjYW4gb25seSBzdG9yZSBmcm9tIHRoZSBmaXJzdCA0IHJl
Z2lzdGVyczsKKyAgICAgICAgLy8gZXNwLi5lZGkgYXJlIG1hcHBlZCB0byB0aGUgJ2gnIHJlZ2lz
dGVycyEKKyAgICAgICAgaWYgKHNyYyA+PSA0KSB7CisgICAgICAgICAgICAvLyBQaWNrIGEgdGVt
cG9yYXJ5IHJlZ2lzdGVyLgorICAgICAgICAgICAgUmVnaXN0ZXJJRCB0ZW1wID0gZ2V0VW51c2Vk
UmVnaXN0ZXIoYWRkcmVzcyk7CisKKyAgICAgICAgICAgIC8vIFN3YXAgdG8gdGhlIHRlbXBvcmFy
eSByZWdpc3RlciB0byBwZXJmb3JtIHRoZSBzdG9yZS4KKyAgICAgICAgICAgIHN3YXAoc3JjLCB0
ZW1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJfcm0odGVtcCwgYWRkcmVzcy5vZmZz
ZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBzd2FwKHNyYywgdGVtcCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci5tb3Zi
X3JtKHNyYywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAgICAgdm9p
ZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAjaWYg
Q1BVKFg4NikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDYgKzExOSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNj
cmF0Y2hSZWdpc3Rlcik7CiAgICAgfQorCisgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291
cmNlLCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBYODZSZWdp
c3RlcnM6OmVheCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfRUFYbShhZGRyZXNzKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyks
IHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJl
Z2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICB2b2lkIHN0b3JlOChUcnVzdGVk
SW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKQEAgLTU5Miw2ICs2MDIsMTMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMpOwogICAgIH0KIAorICAgIERh
dGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW0zMiBpbml0aWFsVmFsdWUsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFsVmFsdWUubV92YWx1ZSwgZGVzdCk7CisgICAgICAg
IHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hQdHJX
aXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFM
YWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1
c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2go
aW5pdGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC02MDQsNiArNjIxLDE4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdp
c3Rlcik7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3Rl
ZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAg
ICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMy
KGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAg
ICAgICBkYXRhTGFiZWwgPSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgbm9wKCk7CisgICAg
ICAgIG5vcCgpOworICAgICAgICBub3AoKTsKKyAgICAgICAgbm9wKCk7CisgICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKKyAgICB9CisKICAg
ICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFs
dWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRy
IGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBA
IC02NDUsNiArNjc0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hS
ZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKICAgICBz
dGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2Rl
TG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtNjU2LDE2ICs2ODYsMzYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAg
ICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoMzJX
aXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsK
KyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9wY29k
ZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAg
ICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRp
YXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVz
KTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
IGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwg
c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRh
dGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2gzMldp
dGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOworICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCBy
ZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9j
YXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUp
CiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5z
dHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0
cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
Q29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcyBhZGRyZXNzLCBpbnQz
Ml90IGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVt
cFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCks
IGluaXRpYWxWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorCiAg
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2go
Q29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5p
dGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92
cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZp
c2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYgKzE1NywxMSBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9j
YXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9B
c3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhsYWJl
bCk7CisgICAgfQogICAgIAogICAgIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAg
IHsKQEAgLTE3Niw2ICsxODEsMTEgQEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1
Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQz
Ml90IHZhbHVlKQorICAgIHsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBs
YWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRk
cmVzcywgdmFsdWUpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJs
b2NrOwogI2lmIEVOQUJMRShBU1NFTUJMRVJfV1hfRVhDTFVTSVZFKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxNTkz
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzA3LDYgKzEzMDcsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wOChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBtb3ZiX3JtKFJlZ2lzdGVySUQgc3Jj
LCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRl
ci5vbmVCeXRlT3AoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CiAgICAg
CiAgICAgdm9pZCBtb3Z3X3JtKFJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24g
MTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI0ICs3NiwyNSBAQCB2b2lkIGR1bXBBcnJheU1vZGVz
KFByaW50U3RyZWFtJiBvdXQsIEFyCiAKIHZvaWQgQXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVCbG9jayogY29kZUJs
b2NrKQogewotICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZSkKKyAgICBpZiAoIW1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7Cisg
ICAgU3RydWN0dXJlKiBsYXN0U2VlblN0cnVjdHVyZSA9IGNvZGVCbG9jay0+aGVhcCgpLT5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCk7CisgICAgbV9vYnNlcnZl
ZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7
CiAgICAgCiAgICAgaWYgKCFtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5pbmcKICAgICAgICAgJiYg
aGFzVHdvT3JNb3JlQml0c1NldChtX29ic2VydmVkQXJyYXlNb2RlcykpIHsKLSAgICAgICAgbV9v
YnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1
Y3R1cmUpOworICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyA9IGFycmF5TW9kZUZyb21TdHJ1
Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgICAgICBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcgPSB0cnVlOwogICAgIH0KICAgICAKICAgICBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcyB8PQotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKKyAg
ICAgICAgbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAgIGlmICgh
Z2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVy
ZSkKLSAgICAgICAgJiYgIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1
cmUobV9sYXN0U2VlblN0cnVjdHVyZSkpCisgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkKKyAgICAgICAgJiYgIWdsb2JhbE9i
amVjdC0+aXNPcmlnaW5hbFR5cGVkQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpKQog
ICAgICAgICBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlcyA9IGZhbHNlOwotICAgIG1fbGFz
dFNlZW5TdHJ1Y3R1cmUgPSAwOworICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IDA7CiB9CiAK
IENTdHJpbmcgQXJyYXlQcm9maWxlOjpicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRK
SVRMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCShyZXZpc2lvbiAxNTkzNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogcHVibGlj
OgogICAgIEFycmF5UHJvZmlsZSgpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICwgbV9sYXN0U2VlblN0cnVj
dHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCgwKQogICAgICAgICAsIG1f
bWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9vdXRPZkJvdW5kcyhmYWxzZSkKICAg
ICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgQXJyYXlQcm9maWxlKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCi0gICAg
ICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZSgwKQorICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRCgwKQogICAgICAgICAsIG1fbWF5U3RvcmVUb0hvbGUoZmFsc2UpCiAgICAgICAgICwgbV9v
dXRPZkJvdW5kcyhmYWxzZSkKICAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nl
cyhmYWxzZSkKQEAgLTE1OSwxNCArMTU5LDE0IEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KICAg
ICAKLSAgICBTdHJ1Y3R1cmUqKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlOyB9CisgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAgICAg
QXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVkQXJy
YXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1cm4g
Jm1fbWF5U3RvcmVUb0hvbGU7IH0KICAgICBib29sKiBhZGRyZXNzT2ZPdXRPZkJvdW5kcygpIHsg
cmV0dXJuICZtX291dE9mQm91bmRzOyB9CiAgICAgCiAgICAgdm9pZCBvYnNlcnZlU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVy
ZSA9IHN0cnVjdHVyZTsKKyAgICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gc3RydWN0dXJl
LT5pZCgpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihj
b25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKik7CkBAIC0xODgsNyArMTg4LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiBwb2x5bW9ycGhpY1N0cnVjdHVyZSgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDEpKTsgfQogICAgIAogICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgU3RydWN0
dXJlKiBtX2xhc3RTZWVuU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRDsKICAgICBib29sIG1fbWF5U3RvcmVUb0hvbGU7IC8vIFRoaXMgZmxhZyBtYXkgYmVj
b21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUg
ZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGlu
ZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhp
bmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93
IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291
dE9mQm91bmRzOwogICAgIGJvb2wgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgOiAxOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC02NzUsNiArNjc1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gY29uc3RhbnRCdWZmZXJBc1ZlY3RvcihpbmRleCkuZGF0YSgpOwogICAgIH0KIAorICAgIEhl
YXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0KICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH0KIAogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2
aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywg
VHlwZUluZm8oVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgREVDTEFSRV9JTkZPOwogfTsKQEAgLTU0NSw3ICs1NDUsNyBAQCBwcml2YXRlOgogCiBw
cm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHB1YmxpYzoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAkocmV2aXNp
b24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSBcCiAgICAgbWFj
cm8oSlNBcnJheUJ1ZmZlclZpZXdfbW9kZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3
X3ZlY3RvcikgXAotICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmUpIFwKKyAgICBtYWNybyhKU0Nl
bGxfc3RydWN0dXJlSUQpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX2V4ZWN1dGFibGUpIFwKICAg
ICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlQ2hhaW4pIFwKICAgICBtYWNybyhKU09iamVjdF9idXR0
ZXJmbHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIyLDIzICsxMjIsMTQgQEAgcHJvdGVjdGVkOgogICAgICAgICBpZiAo
bV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCi0gICAgICAg
ICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICBqaXQs
IGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8v
IEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3Bp
bGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9yYXJpZXMuIE5vciB3b3Vs
ZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcK
LSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAgIGppdC0+bV9qaXQubG9h
ZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Ci0gICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2UgaGF2ZSB0aGUga2luZCBv
ZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAgICAgICAgICAgIC8vIE5v
dGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxs
IHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBvcGVyYXRpb24gY29ycmVz
cG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhlY3V0ZWQuCiAgICAgICAg
ICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24gaXMgbm90IHVzZXItdmlz
aWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdU
eXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
bV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1wLmZpbGwo
CiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUo
bV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNyArNTMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgLy8gICB2ZXJzaW9ucyBvZiB0aG9zZSBub2RlcyB0aGF0IGJhY2t3YXJkLWV4aXQgaW5z
dGVhZCwgYnV0IEknbSBub3QgY29udmluY2VkCiAgICAgLy8gICBvZiB0aGUgc291bmRuZXNzLgog
ICAgIC8vCi0gICAgLy8gLSBTb21lIG5vZGVzIGxpZSwgYW5kIGNsYWltIHRoYXQgdGhleSBkbyBu
b3QgcmVhZCB0aGUgSlNDZWxsX3N0cnVjdHVyZS4KKyAgICAvLyAtIFNvbWUgbm9kZXMgbGllLCBh
bmQgY2xhaW0gdGhhdCB0aGV5IGRvIG5vdCByZWFkIHRoZSBKU0NlbGxfc3RydWN0dXJlSUQuCiAg
ICAgLy8gICBUaGVzZSBhcmUgbm9kZXMgdGhhdCB1c2UgdGhlIHN0cnVjdHVyZSBpbiBhIHdheSB0
aGF0IGRvZXMgbm90IGRlcGVuZCBvbgogICAgIC8vICAgdGhpbmdzIHRoYXQgY2hhbmdlIHVuZGVy
IHN0cnVjdHVyZSB0cmFuc2l0aW9ucy4KICAgICAvLwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICBzbWFsbCBoYWNraW5n
LgogICAgIAogICAgIGlmIChlZGdlc1VzZVN0cnVjdHVyZShncmFwaCwgbm9kZSkpCi0gICAgICAg
IHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlE
KTsKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6
CkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgQ2hlY2tBcnJheToKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6CiAg
ICAgY2FzZSBJbnN0YW5jZU9mOgotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgY2FzZSBDaGVja0V4ZWN1dGFibGU6CkBAIC00MTksNyArNDE5LDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAKICAgICBjYXNlIFB1dFN0
cnVjdHVyZToKICAgICBjYXNlIFBoYW50b21QdXRTdHJ1Y3R1cmU6Ci0gICAgICAgIHdyaXRlKEpT
Q2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CkBAIC00NDEsOSArNDQxLDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgICAgICAKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlpZnlUb1N0
cnVjdHVyZToKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChK
U0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7Ci0g
ICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICB3cml0ZShKU0NlbGxfc3Ry
dWN0dXJlSUQpOwogICAgICAgICB3cml0ZShKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAgICBy
ZWFkKEdDU3RhdGUpOwogICAgICAgICB3cml0ZShHQ1N0YXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQzLDcgKzI0MywyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vh
a1B0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICB7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBs
ZWZ0LCBUcnVzdGVkSW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFr
UmVmZXJlbmNlKHdlYWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UK
KyAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7
CisjZW5kaWYKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJh
bmNoU3RydWN0dXJlUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNl
bHNlCisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFz
aWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxs
b3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5
c2lzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUsOCArMTM1LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0
IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4
aXQubV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBt
X2ppdC5zdG9yZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVy
czo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEp
OworICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUt
PmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAg
ICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlz
aW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDkgQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEp
OwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUt
PmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGlu
Z1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
QXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoMSwg
YXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAg
ICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxs
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAgICAgICAgICBtX2pp
dC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CiAgICAg
ICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRk
cmVzcyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNTkzNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRCeVZhbChFeGVj
U3RhdGUqIGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwg
c3RyaWN0KTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2Jq
ZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIyMSwxMiArMjIxLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG8KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNp
dHkpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIEFTU0VSVChqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29u
c3RydWN0VHlwZUpTKTsKKyAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKICNlbmRp
ZgogICAgIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2Fw
YWNpdHkpLT5zdHJ1Y3R1cmUoKSk7CkBAIC0zOTEsOCArMzkxLDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbAogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBhcnJheSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAogICAgIGlmIChpbmRleCA+PSAwKSB7
CiAgICAgICAgIGFycmF5LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSwgdHJ1ZSk7CkBAIC00MDAsMTQgKzQwMCwxNCBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvCiAgICAgfQogICAgIAogICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRydWUpOwotICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5wdXQoCisg
ICAgYXJyYXktPm1ldGhvZFRhYmxlKHZtKS0+cHV0KAogICAgICAgICBhcnJheSwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
LCBzbG90KTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIGlu
dDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKICAgICAKICAgICBpZiAoaW5kZXggPj0gMCkgewogICAgICAgICBh
cnJheS0+cHV0QnlJbmRleElubGluZShleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSksIGZhbHNlKTsKQEAgLTQxNSwxNCArNDE1LDE0IEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbEJleW8KICAgICB9CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoZmFsc2UpOwotICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5wdXQoCisgICAgYXJyYXkt
Pm1ldGhvZFRhYmxlKHZtKS0+cHV0KAogICAgICAgICBhcnJheSwgZXhlYywgSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpbmRleCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpLCBzbG90KTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIGludDMyX3Qg
aW5kZXgsIGRvdWJsZSB2YWx1ZSkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAg
ICAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91Ymxl
LCB2YWx1ZSk7CiAgICAgCkBAIC00MzIsMTQgKzQzMiwxNCBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0RG91YmxlQnlWCiAgICAgfQogICAgIAogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KHRydWUpOwotICAgIGFycmF5LT5tZXRob2RUYWJsZSgpLT5wdXQoCisgICAgYXJyYXktPm1l
dGhvZFRhYmxlKHZtKS0+cHV0KAogICAgICAgICBhcnJheSwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpbmRleCksIGpzVmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgaW50MzJfdCBpbmRleCwgZG91YmxlIHZhbHVlKQog
ewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAogICAgIEpTVmFsdWUganNWYWx1
ZSA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIHZhbHVlKTsKICAgICAKQEAgLTQ0
OSw3ICs0NDksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWCiAg
ICAgfQogICAgIAogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGZhbHNlKTsKLSAgICBhcnJheS0+
bWV0aG9kVGFibGUoKS0+cHV0KAorICAgIGFycmF5LT5tZXRob2RUYWJsZSh2bSktPnB1dCgKICAg
ICAgICAgYXJyYXksIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpLCBqc1ZhbHVl
LCBzbG90KTsKIH0KIApAQCAtODQ5LDcgKzg0OSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVhbGxvY2F0ZUIKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIEFTU0VSVCghb2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKCFvYmplY3QtPnN0
cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIEJ1dHRlcmZseSogcmVzdWx0
ID0gb2JqZWN0LT5ncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgMCwgaW5pdGlhbE91dE9mTGluZUNh
cGFjaXR5KTsKICAgICBvYmplY3QtPnNldEJ1dHRlcmZseVdpdGhvdXRDaGFuZ2luZ1N0cnVjdHVy
ZShyZXN1bHQpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXN1bHQpOwpA
QCAtODYwLDcgKzg2MCw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0
ZUIKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gb2JqZWN0LT5ncm93
T3V0T2ZMaW5lU3RvcmFnZSh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSwgbmV3U2l6ZSk7CisgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dPdXRP
ZkxpbmVTdG9yYWdlKHZtLCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5
KCksIG5ld1NpemUpOwogICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3Ry
dWN0dXJlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3Vs
dCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3NSw3ICsyNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYXJnVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlc3VsdFBheWxvYWRHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9u
WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8g
VHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAg
LTM0MCw3ICszNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAg
bm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYXJnVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVzdWx0R1BSKTsKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBp
bnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKICAgIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKQEAgLTExNjEsMTggKzExNjEs
MTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAg
ICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKQEAgLTExODQsNyArMTE4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkp
OwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAog
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hp
bGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMTIzOCwxMCArMTIzOCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKQEAgLTEy
NjYsMTAgKzEyNjYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2Jq
ZQogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmln
aHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAg
SlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVj
Q2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTM0
NSwxMCArMTM0NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmpl
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiks
IGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3Ay
UGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE0OTAsMTAgKzE0OTAsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BS
KTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBh
eWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRh
Z0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LApAQCAtMTYyMCwxMCArMTYyMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0
T3JPdGhlckJyCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXls
b2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKQEAgLTMxNTQsNyArMzE1NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0g
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWxyZWFk
eVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRhZ0dQ
UiwgcmVzdWx0VGFnR1BSKTsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAg
ICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0
R1BSKTsKICAgICAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtMzU1NCw3ICsz
NTU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCB0aGlzVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhp
c1ZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdGVtcEdQUik7
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOCgKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLApAQCAtMzg1Niwx
MiArMzg1NiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAgICAgQmFkQ2FjaGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2Uu
Z3ByKCkpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCiAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnN0cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIApAQCAtMzg5Miw3ICszODkyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0
cnVjdHVyZSgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0
dXJlKCkpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBpc09LLmxpbmso
Jm1faml0KTsKICNlbHNlCkBAIC0zOTIxLDcgKzM5MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCBub2Rl
LT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSwgV3JpdGVCYXJyaWVyRm9y
R2VuZXJpY0FjY2Vzcyk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25E
YXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5l
d1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDEwMSw3ICs0MTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0
LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkp
OwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDEzMCw3ICs0MTMwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFu
Y2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBtX2ppdC5qdW1wKCk7CkBAIC00MTc0LDcgKzQxNzQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1YWws
IHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1
ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdC5ncHIo
KSk7CiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQyMjgsNyAr
NDIyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAg
ICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBu
b2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5nKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDEyICsyNzMsMTUgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90
ZUdsb2JhbE9iamVjdCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAg
ICBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBh
cmdHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2pp
dC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOwogCiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3Rl
ZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjg3LDYgKzI5MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSUmVnIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQ
UlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAg
ICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iob3BlcmFuZC0+Y29kZU9yaWdpbikpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BS
LCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IEpJVENv
bXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RH
UFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BSKTsKICAgICB9CkBAIC0zMzcsMTYg
KzM0MSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAg
fSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOworICAgICAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9w
ZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGFyZ0dQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGJyYW5jaFRl
c3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7Cisg
ICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCAKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCksIAorICAgICAgICAgICAgaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbik7CiAKICAgICAg
ICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmpl
Y3QuZ3ByKCk7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihvcGVyYW5kLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIs
IHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUds
b2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRh
a2VuIDogdGFrZW4pOwogICAgIH0KQEAgLTE1MjAsNDEgKzE1MjgsMzYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAgCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2Rl
LT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVj
dHVyZSh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIo
KTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwog
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIp
LCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBu
b2RlLT5jaGlsZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9
CiAgICAgCkBAIC0xNTc3LDM3ICsxNTgwLDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamUKICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwogICAgIEdQUlJl
ZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIg
PSBJbnZhbGlkR1BSUmVnOwogCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludFZhbGlkID0KICAgICAgICAgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0
aWxsVmFsaWQoKTsKIAotICAgIGlmICghbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRW
YWxpZCkgewotICAgICAgICAvLyBUaGUgbWFzcXVlcmFkZXMgYXMgdW5kZWZpbmVkIGNhc2Ugd2ls
bCB1c2UgdGhlIHN0cnVjdHVyZSByZWdpc3Rlciwgc28gYWxsb2NhdGUgaXQgaGVyZS4KLSAgICAg
ICAgLy8gRG8gdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiB0byBhdm9pZCBicmFuY2hp
bmcgYXJvdW5kIGEgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
YWxTdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJl
KTsKLSAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIH0KLQogICAg
IGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTE2MTksMjEgKzE2MTEsMjAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIC8vIFdlIGtub3cgdGhh
dCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlm
IChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAg
ICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJp
Z2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
b3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsK
ICAgICB9CiAgICAgCkBAIC0xNjgwLDM3ICsxNjcxLDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwogICAg
IEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwotICAgIEdQUlJlZyBzdHJ1Y3R1
cmVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIAotICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCA9CisgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludFZhbGlkID0gCiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
SXNTdGlsbFZhbGlkKCk7CiAKLSAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBv
aW50VmFsaWQpIHsKLSAgICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNl
IHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0g
ICAgICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJh
bmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRlbXBvcmFy
eSByZWFsU3RydWN0dXJlKHRoaXMpOwotICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVj
dHVyZSk7Ci0gICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0K
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KIApAQCAtMTcyMiwyMSArMTcwMiwyMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgLy8gV2Uga25vdyB0
aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxk
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
KTsKICAgICB9CiAgICAgCkBAIC0xODUzLDYgKzE4MzIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIg
PSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoOworICAgIEdQUlJlZyBz
Y3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKCk7CkBAIC0xODYxLDMyICsxODQyLDM0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVz
IGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFs
bG9jYXRlIGl0IGhlcmUuCiAgICAgICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVu
Y3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRpb24uCiAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOworICAgICAgICBHUFJUZW1w
b3JhcnkgcmVhbFNjcmF0Y2godGhpcyk7CiAgICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3Ry
dWN0dXJlKTsKKyAgICAgICAgc2NyYXRjaC5hZG9wdChyZWFsU2NyYXRjaCk7CiAgICAgICAgIHN0
cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICAgICAgc2NyYXRjaEdQUiA9IHNjcmF0
Y2guZ3ByKCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNl
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAg
ICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLQogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUodmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIApAQCAtMjAwNSwzMSArMTk4OCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZVVz
ZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwogICAgIEdQUlJlZyB2YWx1ZUdQUiA9
IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKworICAgIGlmICghbWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgeworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJl
YWxTdHJ1Y3R1cmUpOworICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Cisg
ICAgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElz
U3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAor
ICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLQogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCi0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRl
c3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVH
UFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAgIG1faml0LmVtaXRMb2Fk
U3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5j
b2RlT3JpZ2luKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGlu
aygmbV9qaXQpOwpAQCAtMzQ3NCw3ICszNDY3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRH
UFIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFs
cmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAg
ICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwpAQCAtMzUwMSwxMCArMzQ5
NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBvcDFHUFIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LAotICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
bV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAt
MzcyMyw3ICszNzE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRHUFIsIHN0
b3JhZ2VHUFIpKTsKICAgICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBzdG9yYWdl
R1BSKTsKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhp
bmdUeXBlKCkpOwotICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVz
dWx0R1BSLCBJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRj
aDJHUFIsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0Fy
cmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiAgICAgICAgICAgICBt
X2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIs
IEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAtMzg2MSwxMSArMzg1Nyw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgdGhpc1ZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgbV9q
aXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzbG93
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
CiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwogICAgICAgICBt
X2ppdC5tb3ZlKHRoaXNWYWx1ZUdQUiwgdGVtcEdQUik7CiAgICAgICAgIEpfSklUT3BlcmF0aW9u
X0VKIGZ1bmN0aW9uOwpAQCAtNDE1MCwyNCArNDE0NCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5z
aXplKCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAg
ICAgICBleGl0S2luZCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAs
Ci0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJh
c2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlz
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
LmdwcigpKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0
IGRvbmU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKQotICAgICAgICAgICAgICAgIGRv
bmUuYXBwZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1
cmUuZ3ByKCksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CisgICAgICAgICAgICAgICAgZG9u
ZS5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShKSVRDb21waWxlcjo6RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaFdlYWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAorICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxh
c3QoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAg
ICAgICAgfQpAQCAtNDE4OCw3ICs0MTc4LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNPSyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbm9kZS0+c3RydWN0
dXJlKCkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlzT0subGluaygm
bV9qaXQpOwogI2Vsc2UKQEAgLTQyMTAsNyArNDIwMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90
aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9q
aXQuY29kZUJsb2NrKCksIG5vZGUpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJS
ZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIAogICAgICAgICAKICNpZiBF
TkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCkBAIC00MjE4LDcgKzQyMTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHdyaXRlQmFycmll
cihiYXNlR1BSLCBub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSwg
V3JpdGVCYXJyaWVyRm9yR2VuZXJpY0FjY2Vzcyk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAg
IG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVj
dHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5l
bWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBiYXNlR1BS
LCBzY3JhdGNoR1BSKTsgCiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC00Mzc5LDggKzQzNzQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwog
CiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ0MDgsOCArNDQwNSwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigp
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQu
Z3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAg
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogCkBAIC00
NDU2LDggKzQ0NTUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQu
YnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWws
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIAorICAgICAgICAg
ICAgcmVzdWx0LmdwcigpKTsKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVG
YWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CiAgICAgICAgIApAQCAtNDQ5Niw4ICs0NDk3LDYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVHlwZU9mOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IGRvbmVKdW1wczsKQEAgLTQ1MTEsOCArNDUxMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVl
U291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwog
CiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8
IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dFN0cmluZyA9IG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dFN0cmluZyA9IG1faml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihTdHJpbmdUeXBlKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVl
U291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7
CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxT
dHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0R1BSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNTkzNzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzY4LDkgKzc2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJyYXkoTm9kZSogbm8KICAgICBjYXNlIEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9
IHRlbXAuZ3ByKCk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVt
cEdQUik7Ci0gICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBH
UFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjppbmRl
eGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlUmVnKSwgMCwKICAgICAgICAgICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVt
cEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKQEAgLTc3OSwxOCArNzc3LDI5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6Ci0gICAgICAgIGV4cGVjdGVkQ2xhc3NJbmZvID0g
QXJndW1lbnRzOjppbmZvKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLAor
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihBcmd1bWVudHNUeXBlKSkpOworCisgICAgICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKLSAg
ICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBjbGFzc0luZm9Gb3JUeXBlKG5vZGUtPmFycmF5TW9k
ZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9k
ZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKG5vZGUt
PmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpKSkpOworICAgICAgICBub1Jlc3VsdChtX2N1
cnJlbnROb2RlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FT
U0VSVChleHBlY3RlZENsYXNzSW5mbyk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7Ci0gICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXAuZ3ByKCkpOworICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShiYXNl
UmVnLCB0ZW1wLmdwcigpLCB0ZW1wMi5ncHIoKSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUs
CiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTgyMCwxNiArODI5LDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUqIG5vZGUKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgc2xvd1BhdGg7CiAgICAgCiAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0
cnVjdHVyZSkgewotICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigK
KyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksCiAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAg
ICAgCiAgICAgICAgIG1faml0LmxvYWQ4KAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVt
cEdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0Nl
bGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIAogICAgICAgICBz
bG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2Rl
LT5hcnJheU1vZGUoKSkpOwogICAgIH0KQEAgLTEzNTgsMjQgKzEzNjQsMjUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgCi0gICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCi0gICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2Fk
U3RydWN0dXJlKG9wMUdQUiwgc3RydWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYg
KG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCkBAIC0x
MzkwLDcgKzEzOTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmpl
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmVtaXRM
b2FkU3RydWN0dXJlKG9wMkdQUiwgc3RydWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAg
aWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3Qp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCkBA
IC0yNzg4LDE4ICsyNzk1LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZh
bEZvckYKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHBy
b3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJv
dG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKQogewogICAg
IC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdC4KLSAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvdHlwZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qoc2NyYXRjaFJlZykpOworICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
SWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJlZykpOwogICAgIAogICAgIC8vIEluaXRpYWxpemUg
c2NyYXRjaFJlZyB3aXRoIHRoZSB2YWx1ZSBiZWluZyBjaGVja2VkLgogICAgIG1faml0Lm1vdmUo
dmFsdWVSZWcsIHNjcmF0Y2hSZWcpOwogICAgIAogICAgIC8vIFdhbGsgdXAgdGhlIHByb3RvdHlw
ZSBjaGFpbiBvZiB0aGUgdmFsdWUgKGluIHNjcmF0Y2hSZWcpLCBjb21wYXJpbmcgdG8gcHJvdG90
eXBlUmVnLgogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZtX2ppdCk7Ci0gICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1
cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCBzY3JhdGNoUmVnLCBwcm90b3R5cGVSZWcpOwpAQCAtMjgzOCw5ICsyODQ0LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRo
aXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZVJlZyA9IHByb3RvdHlwZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOworICAgICAg
ICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7CkBAIC0y
ODU3LDcgKzI4NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihO
CiAgICAgICAgIAogICAgICAgICBpc0NlbGwubGluaygmbV9qaXQpOwogICAgICAgICAKLSAgICAg
ICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJl
Zywgc2NyYXRjaFJlZyk7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUs
IHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKICAgICAg
ICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogCkBAIC0yODczLDEyICsyODgxLDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIAogICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlz
KTsKICAgICAKICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcg
cHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoUmVnID0g
c2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsK
ICAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJv
dG90eXBlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChu
b2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGpzVmFsdWVSZXN1bHQoc2NyYXRjaFJlZywgbm9kZSwg
RGF0YUZvcm1hdEpTQm9vbGVhbik7CkBAIC00NTk0LDExICs0NjA0LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAg
ICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICBKSVRDb21w
aWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWws
IAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSk7CiAgICAgICAgIAotICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JT
dHJ1Y3R1cmUobm9kZS0+Y2hpbGQxKCksIHJlc3VsdEdQUik7CisgICAgICAgIHNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgCisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkp
OwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTV3JhcHBlck9iamVjdDo6aW50ZXJuYWxWYWx1ZUNlbGxPZmZzZXQoKSksIHJlc3Vs
dEdQUik7CiAgICAgICAgIApAQCAtNDYyMywxMCArNDYzNSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBuZWVkQ2FsbCA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAg
ICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAg
ICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgbmVlZENhbGwubGlu
aygmbV9qaXQpOwpAQCAtNDgyNywxMCArNDgzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVPYmplY3QoRWRnCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlz
LCBlZGdlKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChncHIpLCBlZGdlLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZUZpbmFsT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTQ4MzksMTQgKzQ4NTEsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplYwogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKLSAgICBHUFJU
ZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigp
OwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjRmluYWxPYmplY3QsIG1faml0
LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
Z3ByLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiB9CiAKQEAgLTQ4NjMsMTAgKzQ4NzIsMTAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBl
ZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsKQEAgLTQ4ODYsMTAgKzQ4
OTUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPQogICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBw
YXlsb2FkR1BSKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2UsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAo
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00OTA5LDEw
ICs0OTE4LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZyhFZGdlIGVkZ2UsIEdQUlJlZyBjZWxs
KQogewogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZywgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZywgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2Uo
RWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSkKQEAgLTQ5NjUsNyArNDk3
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZyhFZGcKIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KEVkZ2UgZWRnZSwgR1BSUmVnIGdw
cikKIHsKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgc3Bl
Y3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2UpCkBAIC00OTkyLDE1ICs1MDAx
LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09yU3QKICAgICBpZiAo
IW5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmcgfCBTcGVjU3RyaW5nT2JqZWN0KSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0g
ICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICAKLSAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJp
bmcgPSBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgc3RydWN0
dXJlR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OworICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAorICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAotICAgIHNwZWN1bGF0ZVN0cmlu
Z09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmVHUFIpOworICAgIHNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgIAogICAgIGlzU3RyaW5nLmxpbmsoJm1f
aml0KTsKICAgICAKQEAgLTUyNjUsMTAgKzUyNzEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFN3aXRjaENoYXIoTm9kZQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2go
Ci0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxv
YWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+ZmFs
bFRocm91Z2gpOwogICAgICAgICAKICAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRh
dGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpLCB0ZW1wR1BSKTsKQEAgLTU1NjUsMTAgKzU1NzEsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyhObwogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBhZGRCcmFuY2goCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
LAogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAKICAgICAgICAgZW1p
dFN3aXRjaFN0cmluZ09uU3RyaW5nKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlz
aW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIyLDcgKzcyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBm
YWxzZSk7CiAgICAgYm9vbCBub25TcGVjdWxhdGl2ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVy
dCA9IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5v
ZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNo
QW5kUmVzdWx0UmVnKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUq
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5k
UmVzdWx0UmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNl
T2YoTm9kZSopOwogICAgIAogICAgIHB0cmRpZmZfdCBjYWxsZWVGcmFtZU9mZnNldChpbnQgbnVt
QXJncykKQEAgLTIwNjksNyArMjA2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBzbG93UGF0aDsKICAgICB9Ci0gICAgCisKICAgICAvLyBBbGxvY2F0b3IgZm9yIGEgY2Vs
bCBvZiBhIHNwZWNpZmljIHNpemUuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVyZVR5
cGU+IC8vIFN0cnVjdHVyZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCiAgICAgdm9pZCBlbWl0
QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3Ry
dWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCkBAIC0yMDg0LDcgKzIwODQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFs
bG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7CiAK
ICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgotICAgICAgICBt
X2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwog
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lmaWMgc2l6
ZS4KQEAgLTMwMjUsOCArMzAyNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamUKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0
cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkg
ewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgTm90U3RyaW5nT2JqZWN0
LCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIFRydXN0
ZWRJbW1QdHIoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpOworICAgICAgICAgICAgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
c3RydWN0dXJlTG9jYXRpb24sIHN0cmluZ09iamVjdFN0cnVjdHVyZSkpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9u
IDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAor
I2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
RGVmZXJHQy5oIgogI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCkBAIC0yMzcsOCArMjM4
LDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZCgpCiAgICAgICAgIAogICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKICAgICAgICAgICAgIGRhdGFMb2co
KnRoaXMsICI6IENvbXBpbGluZyAiLCBwbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7
Ci0gICAgICAgIAorCisgICAgICAgIFZNOjpzZXRDdXJyZW50Vk0oJnBsYW4tPnZtKTsKICAgICAg
ICAgcGxhbi0+Y29tcGlsZUluVGhyZWFkKGxvbmdMaXZlZFN0YXRlKTsKKyAgICAgICAgVk06OnNl
dEN1cnJlbnRWTSgwKTsKICAgICAgICAgCiAgICAgICAgIHsKICAgICAgICAgICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtX2xvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE1OTM3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X21v
ZGUsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZk1vZGUoKSkgXAogICAgIG1hY3JvKEpTQXJy
YXlCdWZmZXJWaWV3X3ZlY3RvciwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
IFwKLSAgICBtYWNybyhKU0NlbGxfc3RydWN0dXJlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSBcCisgICAgbWFjcm8oSlNDZWxsX3N0cnVjdHVyZUlELCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfdHlwZUluZm9GbGFncywgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfdHlwZUluZm9UeXBlLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSBcCisgICAgbWFjcm8oSlNDZWxsX2luZGV4aW5nVHlwZSwg
SlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRl
cmZseSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNTY29wZV9u
ZXh0LCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkgXAogICAgIG1hY3JvKEpTU3RyaW5nX2xlbmd0
aCwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTkzNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE0MSwxMiArMTE0MSwxMiBAQCBwcml2YXRlOgogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBleGl0S2luZCA9IEJhZENhY2hlOwogICAgICAgICAKLSAgICAgICAgTFZhbHVl
IHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
KTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX25vZGUtPnN0
cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGUoCiAgICAg
ICAgICAgICAgICAgZXhpdEtpbmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAg
ICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2ludGVyKG1fbm9kZS0+c3RydWN0
dXJlU2V0KClbMF0pKSk7CisgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJl
SUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExNTYsMTQgKzExNTYsMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZS0+c3RydWN0
dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKSB7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBuZXh0
U3RydWN0dXJlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDaGVja1N0cnVjdHVyZSBuZXh0U3Ry
dWN0dXJlIikpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgICAgIG1f
b3V0LmVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKVtp
XSkpLAorICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0
dXJlKG1fbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKSwKICAgICAgICAgICAgICAgICBjb250aW51
YXRpb24sIG5leHRTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obmV4dFN0
cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAg
ICAgICAgIGV4aXRLaW5kLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0gICAgICAgICAgICBtX291
dC5ub3RFcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2ludGVyKG1fbm9kZS0+c3RydWN0dXJlU2V0KCku
bGFzdCgpKSkpOworICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlSUQsIHdlYWtT
dHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7CiAgICAgICAgIAogICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTE5MiwxMCArMTE5MiwxMCBAQCBwcml2YXRlOgog
ICAgICAgICBMQmFzaWNCbG9jayB1bmV4cGVjdGVkU3RydWN0dXJlID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJBcnJheWlmeVRvU3RydWN0dXJlIHVuZXhwZWN0ZWQgc3RydWN0dXJlIikpOwogICAg
ICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFy
cmF5aWZ5VG9TdHJ1Y3R1cmUgY29udGludWF0aW9uIikpOwogICAgICAgICAKLSAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmJyYW5j
aCgKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9u
b2RlLT5zdHJ1Y3R1cmUoKSkpLAorICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJl
SUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpLAogICAgICAgICAgICAgdW5l
eHBlY3RlZFN0cnVjdHVyZSwgY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8odW5leHBlY3RlZFN0cnVjdHVyZSwgY29u
dGludWF0aW9uKTsKQEAgLTEyMzYsMTAgKzEyMzYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHN0cnVjdHVyZSA9IG1fb3V0Lmxv
YWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKICAgICAgICAgc3BlY3VsYXRl
KAogICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0g
ICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2ludGVyKG1fbm9kZS0+
c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChtX291dC5sb2FkMzIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLCB3ZWFrU3RydWN0dXJlKG1fbm9kZS0+
c3RydWN0dXJlKCkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAt
MTI0OSw5ICsxMjQ4LDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZnRsU3RhdGUuaml0
Q29kZS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9ncmFwaC5t
X3BsYW4sIGNvZGVCbG9jaygpLCBtX25vZGUpOwogICAgICAgICAKLSAgICAgICAgbV9vdXQuc3Rv
cmU2NCgKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+c3RydWN0dXJlVHJh
bnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLAotICAgICAgICAgICAgbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgbV9vdXQuc3Rv
cmUzMigKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5zdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZS0+aWQoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgfQogICAg
IAogICAgIHZvaWQgY29tcGlsZVBoYW50b21QdXRTdHJ1Y3R1cmUoKQpAQCAtMjc2NSw4ICsyNzY0
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAogICAgICAgICAgICAg
ICAgIGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwK
ICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bG9hZFB0cih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlSUQpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3Ry
aW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC0yNzc3LDE4ICsyNzc2LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFz
aWNCbG9jayBtYXNxdWVyYWRlc0Nhc2UgPQogICAgICAgICAgICAgICAgIEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiRXF1YWxOdWxsT3JVbmRlZmluZWQgbWFzcXVlcmFkZXMgY2FzZSIpKTsKICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRy
KHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwotICAgICAgICAgICAgCiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICBt
X291dC50ZXN0Tm9uWmVybzgoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4KHN0cnVj
dHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9GbGFncyksCisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQ4KHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KSwKICAgICAgICAgICAgICAgICBtYXNxdWVyYWRlc0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1hc3F1ZXJhZGVzQ2FzZSwgcHJp
bWl0aXZlQ2FzZSk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUg
PSBsb2FkU3RydWN0dXJlKHZhbHVlKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAogICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPmNvZGVPcmlnaW4pKSwKQEAgLTM1NDUsOCArMzU0NCw4IEBAIHByaXZhdGU6CiAg
ICAgTFZhbHVlIGlzT2JqZWN0KExWYWx1ZSBjZWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
b3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZt
KCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc05v
dFN0cmluZyhMVmFsdWUgY2VsbCkKQEAgLTM1NTcsOCArMzU1Niw4IEBAIHByaXZhdGU6CiAgICAg
TFZhbHVlIGlzU3RyaW5nKExWYWx1ZSBjZWxsKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0
LmVxdWFsKAotICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9z
dHJ1Y3R1cmUpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3Ry
aW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc05vdE9iamVj
dChMVmFsdWUgY2VsbCkKQEAgLTM1NzIsOSArMzU3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsKLSAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1R5cGUg
PSBtX291dC5sb2FkOCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgbV9oZWFwcy5TdHJ1Y3R1cmVf
aW5kZXhpbmdUeXBlKTsKKyAgICAgICAgICAgIExWYWx1ZSBpbmRleGluZ1R5cGUgPSBtX291dC5s
b2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGUpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS5hcnJheUNsYXNzKCkpIHsKICAgICAgICAgICAg
IGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6CkBAIC0zNjEwLDcgKzM2MDcsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQu
bG9hZFB0cigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgbG9hZFN0cnVjdHVyZShjZWxsKSwKICAg
ICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLAogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoY2xhc3NJbmZvKSk7CiAgICAgfQpAQCAtMzY1Nyw4ICszNjU0LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVl
VmFsdWUodmFsdWUpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAg
ICBtX291dC5lcXVhbCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHZhbHVlLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIG1fb3V0Lmxv
YWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAorICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAg
IAogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIApAQCAtMzY5OCwx
NyArMzY5NSwxOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9i
amVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKLSAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVk
Z2UsIFNwZWNPYmplY3QsIAotICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCBtX291
dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAg
IG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBz
LkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2
bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNV
bmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVl
VmFsdWUoY2VsbCksIGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgbV9vdXQudGVzdE5vblplcm84
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1
cmVfdHlwZUluZm9GbGFncyksCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9o
ZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnQ4KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtNDIwNiwxMiAr
NDIwNCwyNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX3BsYW4ud2Vha1Jl
ZmVyZW5jZXMuYWRkTGF6aWx5KHRhcmdldCk7CiAgICAgfQotICAgIAorCisgICAgTFZhbHVlIGxv
YWRTdHJ1Y3R1cmUoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHRhYmxlSW5k
ZXggPSBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAg
ICAgICAgTFZhbHVlIHRhYmxlQmFzZSA9IG1fb3V0LmdldChtX291dC5jb25zdEludFB0cih2bSgp
LmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSkpOworICAgICAgICByZXR1cm4gbV9vdXQu
Z2V0KG1fb3V0LmJhc2VJbmRleCh0YWJsZUJhc2UsIHRhYmxlSW5kZXgsIFNjYWxlRWlnaHQpKTsK
KyAgICB9CisKICAgICBMVmFsdWUgd2Vha1BvaW50ZXIoSlNDZWxsKiBwb2ludGVyKQogICAgIHsK
ICAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShwb2ludGVyKTsKICAgICAgICAgcmV0dXJuIG1fb3V0
LmNvbnN0SW50UHRyKHBvaW50ZXIpOwogICAgIH0KKworICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShz
dHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlk
KCkpOworICAgIH0KICAgICAKICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihMVmFsdWUgYmFz
ZSwgaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlz
aW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCBzdGF0aWMgdm9pZCBjb21w
aWxlU3R1YigKICAgICAgICAgaWYgKGV4aXQubV9raW5kID09IEJhZENhY2hlIHx8IGV4aXQubV9r
aW5kID09IEJhZEluZGV4aW5nVHlwZSkgewogICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAgICAgICAgICAgIGlmIChB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2Rl
T3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpIHsKLSAg
ICAgICAgICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZv
OjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAg
ICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDEsIGFycmF5UHJvZmlsZS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ4
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCBTdHJ1Y3R1cmU6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
R1BSSW5mbzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQu
bHNoaWZ0MzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAg
ICBqaXQub3IzMihHUFJJbmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVz
cyhhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAjZGVmaW5lIEFTU0VS
VF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCkgZG8geyBcCiAgICAgUkVMRUFTRV9BU1NFUlQo
Y2VsbCk7XAotICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwtPnVudmFsaWRhdGVkU3RydWN0dXJlKCkt
PnVudmFsaWRhdGVkU3RydWN0dXJlKCkgPT0gY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+
dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSk7IFwKKyAgICBS
RUxFQVNFX0FTU0VSVChjZWxsLT5zdHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCkgPT0gY2VsbC0+c3Ry
dWN0dXJlKCktPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSk7IFwKIH0gd2hpbGUgKDApCiAKICNk
ZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3QsIGNsYXNzSW5mbykgZG8ge1wK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZC5jcHAJKHJldmlzaW9uIDE1
OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCB2b2lkIEdDVGhyZWFkOjpnY1RocmVhZE1haW4oKQog
ICAgIEdDUGhhc2UgY3VycmVudFBoYXNlOwogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKICAgICBX
VEY6OnJlZ2lzdGVyR0NUaHJlYWQoKTsKKyAgICBWTTo6c2V0Q3VycmVudFZNKG1fc2hhcmVkLm1f
dm0pOwogI2VuZGlmCiAgICAgLy8gV2FpdCBmb3IgdGhlIG1haW4gdGhyZWFkIHRvIGZpbmlzaCBj
cmVhdGluZyBhbmQgaW5pdGlhbGl6aW5nIHVzLiBUaGUgbWFpbiB0aHJlYWQgZ3JhYnMgdGhpcyBs
b2NrIGJlZm9yZSAKICAgICAvLyBjcmVhdGluZyB0aGlzIHRocmVhZC4gV2UgYXJlbid0IGd1YXJh
bnRlZWQgdG8gaGF2ZSBhIHZhbGlkIHRocmVhZElEIHVudGlsIHRoZSBtYWluIHRocmVhZCByZWxl
YXNlcyB0aGlzIGxvY2suCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc3MSw2ICs3NzEsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBU
b2dnbGUgc3dlZXBUb2dnCiAKICAgICB7CiAgICAgICAgIEdDUEhBU0UoU3RvcEFsbG9jYXRpb24p
OworICAgICAgICBtX3N0cnVjdHVyZUlEVGFibGUuZmx1c2hPbGRUYWJsZXMoKTsKICAgICAgICAg
bV9vYmplY3RTcGFjZS5zdG9wQWxsb2NhdGluZygpOwogICAgIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZp
c2l0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiV2Vha0hh
bmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgpAQCAtMTg2LDYgKzE4Nyw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFt
X2RlZmVycmFsRGVwdGg7IH0KIAorICAgICAgICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0
b3IoKTsKKyAgICAgICAgU3RydWN0dXJlSURUYWJsZSYgc3RydWN0dXJlSURUYWJsZSgpIHsgcmV0
dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQorCiAjaWYgVVNFKENGKQogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbGVhc2VTb29uKFJldGFpblB0cjxUPiYmKTsKICNlbmRpZgpA
QCAtMjQwLDcgKzI0NCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzaXplX3Qgc2l6ZUFm
dGVyQ29sbGVjdCgpOwogCiAgICAgICAgIEpTU3RhY2smIHN0YWNrKCk7Ci0gICAgICAgIEJsb2Nr
QWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7CiAgICAgICAgIHZvaWQgZGVj
cmVtZW50RGVmZXJyYWxEZXB0aCgpOwpAQCAtMjYwLDYgKzI2Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgSGVhcE9wZXJhdGlvbiBtX29wZXJhdGlvbkluUHJvZ3Jlc3M7
CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yIG1fYmxvY2tBbGxvY2F0b3I7CisgICAgICAgIFN0cnVj
dHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgICAgICBNYXJrZWRTcGFjZSBtX29i
amVjdFNwYWNlOwogICAgICAgICBDb3BpZWRTcGFjZSBtX3N0b3JhZ2VTcGFjZTsKICAgICAgICAg
R0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJyYXlCdWZmZXJzOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNTkz
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzEsMjAgKzIzMSwyMiBAQCBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFs
bG9jYXRlV2l0aE5vCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsr
aSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAg
ICAgIG1fbm9ybWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tp
XS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0
cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwot
ICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkg
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAg
ICAgbV9ub3JtYWxTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5j
dG9yKTsKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9y
c1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVE
ZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7Ci0gICAgfQotCiAgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxv
Y2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsg
KytpKQorICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tp
XS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXBy
ZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBtX25vcm1hbERlc3Ry
dWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9y
dGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50
OyArK2kpCisgICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVj
aXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0
cnVjdHVyZURlc3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNTkzNzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTEsOSArMjExLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcGF5bG9hZEZv
cihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKICAgICB9CiAKLSAgICBK
dW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBzdHJ1Y3R1cmVSZWcpCisgICAgSnVtcCBicmFu
Y2hJZkNlbGxOb3RPYmplY3QoR1BSUmVnIGNlbGxSZWcpCiAgICAgewotICAgICAgICByZXR1cm4g
YnJhbmNoOChCZWxvdywgQWRkcmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgICAgICByZXR1cm4g
YnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgR1BS
UmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNlcnZlMSA9IEludmFsaWRHUFJSZWcsIEdQ
UlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUzID0gSW52YWxp
ZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFsaWRHUFJSZWcpCkBAIC00NjMsNiArNDYz
LDgxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5n
VGhpcyhjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgfQogCisgICAgdm9pZCBlbWl0
TG9hZFN0cnVjdHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3Rl
cklEIHNjcmF0Y2gpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIGRlc3QpOworICAgICAgICBsb2FkUHRyKHZtKCktPmhlYXAuc3RydWN0dXJlSURUYWJsZSgp
LmJhc2UoKSwgc2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzY3JhdGNoLCBkZXN0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3QpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBsb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0TG9hZFN0cnVj
dHVyZShBc3NlbWJseUhlbHBlcnMmIGppdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRl
c3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAg
ICAgaml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyAgICAgICAgaml0LmxvYWRQdHIoaml0LnZtKCktPmhl
YXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaCk7CisgICAgICAgIGppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgZGVzdCwgTWFjcm9Bc3NlbWJs
ZXI6OlRpbWVzRWlnaHQpLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3Jh
dGNoKTsKKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAg
ICB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVj
dHVyZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgZW1pdFN0
b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKCp0aGlzLCBzdHJ1Y3R1cmUsIGRlc3QpOworICAgIH0K
KworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3Ry
dWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
cnVjdHVyZSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAg
ICAgIHN0b3JlNjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICAvLyBTdG9yZSBhbGwgdGhl
IGluZm8gZmxhZ3MgdXNpbmcgYSBzaW5nbGUgMzItYml0IHdpZGUgbG9hZCBhbmQgc3RvcmUuCisg
ICAgICAgIGxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmUzMihzY3Jh
dGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSk7CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECisgICAgICAgIHN0
b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBl
bWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0
ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBjb25z
dCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+
KHN0cnVjdHVyZS5tX3ZhbHVlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICB1aW50NjRf
dCBibG9iVG9TdG9yZSA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RydWN0dXJlUHRyKSArIFN0cnVjdHVyZTo6c3RydWN0
dXJlSURPZmZzZXQoKSk7CisgICAgICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChibG9iVG9T
dG9yZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSkpOworCisjaWZuZGVmIE5ERUJVRworICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1
cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlk
KCkpKTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdFN0cnVjdHVy
ZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGppdC5i
cmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdEluZGV4aW5n
VHlwZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdFR5cGUgPSBqaXQuYnJhbmNo
OChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgp
KSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RUeXBlLmxpbmso
JmppdCk7CisKKyAgICAgICAgSnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFn
cygpKSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RGbGFncy5s
aW5rKCZqaXQpOworI2VuZGlmCisjZWxzZQorICAgICAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0
b3JlIHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBmaWVsZHMuCisgICAgICAgIGppdC5zdG9yZTMy
KFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9uRmllbGRzKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSk7CisgICAgICAgIGppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2VuZGlmCisgICAg
fQorCiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaDEs
IEdQUlJlZyBzY3JhdGNoMiwgV3JpdGVCYXJyaWVyVXNlS2luZCB1c2VLaW5kKQogICAgIHsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKG93bmVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzA1LDcgKzMwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1
ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91YmxlKGludCBpbmRleCwgRlBSZWdp
c3RlcklEIHZhbHVlKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90T2JqZWN0KFJlZ2lzdGVy
SUQgc3RydWN0dXJlUmVnKTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChS
ZWdpc3RlcklEIGNlbGxSZWcpOwogCiAgICAgICAgIEp1bXAgYWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlND
ZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBKdW1wTGlzdCYgZmFpbHVyZUNh
c2VzLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwpAQCAtMzMwLDggKzMzMCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUodW5zaWduZWQsIFJlZ2lz
dGVySUQpIHsgfQogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJ
RCkgeyB9CiAjZW5kaWYKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKFJlZ2lz
dGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5
UHJvZmlsZSopOwotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29k
ZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICB2b2lkIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdU
eXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5UHJvZmlsZSopOworICAgICAgICB2b2lkIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBj
ZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxlU3RvcmVUb0hv
bGVTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqKTsKICAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9m
aWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShBcnJheVByb2ZpbGUqKTsKICAgICAgICAgCkBAIC0z
NzEsNiArMzcxLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgZW51bSBG
aW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKKy8qCisgICAg
ICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0
dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisgICAgICAgIHZvaWQg
ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CisqLworICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gSnVtcCBicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiwg
VCBsZWZ0SGFuZFNpZGUsIFN0cnVjdHVyZSopOworCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgYm9vbCBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IG9wMSwgaW50IG9w
MiwgaW50JiBvcCwgaW50MzJfdCYgY29uc3RhbnQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDggKzc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKElucwogCiAg
ICAgZW1pdExvYWQocmVzdWx0LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgbm90SlNDZWxsID0g
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIp
OworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDApOwog
CiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdUMik7CiAgICAg
ZW1pdEdldENhbGxlckZyYW1lRnJvbUNhbGxGcmFtZUhlYWRlclB0cihjYWxsRnJhbWVSZWdpc3Rl
cik7CkBAIC0yNDgsOCArMjQ3LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQg
b3Bjb2RlSQogICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKICAgICAgICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdUMSk7CiAgICAg
ICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgICAgICBzdG9yZVB0
cihyZWdUMSwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7CisgICAgICAgICAgICBzdG9yZVB0cihyZWdU
MCwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0
dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAgICAgICAgIH0KICAgICAK
QEAgLTMxMiw3ICszMTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbChD
YWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwot
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZFN0cnVjdHVy
ZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3Rl
ZFN0cnVjdHVyZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBUcnVzdGVk
SW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDEpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCShyZXZpc2lvbiAxNTkzNzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjgsOCArMTY4LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQog
ICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAg
ICAgICAgSnVtcCBkb25lID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7Ci0gICAgICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
MCk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMCwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKKyAg
ICAgICAgICAgIHN0b3JlMzIocmVnVDAsIGluc3RydWN0aW9uWzZdLnUuYXJyYXlQcm9maWxlLT5h
ZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRo
aXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDAsIHRhZ01h
c2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihl
eHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVy
ZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
ZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpLCBU
cnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsKICAgICAKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSwgcmVnVDEpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
MTAgKzEwMiwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKExpbmtCdWZmCiAK
IHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aENoZWNrcyhNYWNyb0Fzc2Vt
YmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewotICAgIG1fc3RydWN0dXJlQ2hlY2sgPSBq
aXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAgIG1fc3RydWN0dXJlQ2hlY2sgPSBq
aXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRH
UFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgIG1fc3RydWN0dXJlSW1t
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPih1
bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2Uu
cGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICBtX3N0
cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSk7CiAgICAgCiAgICAg
bV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZlcnRpYmxlTG9hZFB0cigKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1OTM3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1
ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFsdWU7CiAgICAgCi0gICAgTWFjcm9B
c3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUltbTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNo
YWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Q29udmVydGli
bGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwogICAgIEFzc2VtYmxlckxhYmVsIG1f
bG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAko
cmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0TG9hZENo
YXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBm
YWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1
Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJh
bmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJz
Ojpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKDEpKSk7CiAgICAgbG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5rSGVscGVyczo6anNTdHJpbmdWYWx1
ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKFplcm8s
IGRzdCkpOwpAQCAtNTM0LDcgKzUzNCw3IEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjpjaGVja1N0cnVjdHVy
ZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVybiBicmFuY2hTdHJ1Y3R1cmUo
Tm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1
Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsaW5rU2xvd0Nhc2VJZk5vdEpT
Q2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBpbnQgdlJlZykKQEAg
LTU4Miw5ICs1ODIsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dUb0hv
CiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29kZU9mZnNldCArIHJlbGF0aXZlT2Zm
c2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJ
Zk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZykKK0FMV0FZU19JTkxJTkUgSklUOjpK
dW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKQogewot
ICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0dXJl
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CisgICAg
cmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiB9CiAKICNpZiBFTkFCTEUo
U0FNUExJTkdfRkxBR1MpCkBAIC02NTUsMTEgKzY1NSwxMSBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCksIHNjcmF0
Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3MoYWxsb2NhdG9yLCBNYXJrZWRBbGxv
Y2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAotICAgIC8vIGluaXRpYWxpemUgdGhl
IG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRyKHN0cnVjdHVyZSwgQWRkcmVzcyhyZXN1
bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKLQogICAgIC8vIGluaXRpYWxpemUgdGhl
IG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgogICAgIHN0b3JlUHRyKFRydXN0ZWRJ
bW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpKTsK
KworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQorICAgIGVtaXRTdG9y
ZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaCk7CiB9CiAK
ICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC03MTQsMjYgKzcxNCwyMyBAQCBpbmxpbmUg
dm9pZCBKSVQ6OmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGUo
UmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdU
eXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewot
ICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsgLy8gV2UgaGFkIGZvdW5kIHRoaXMgc2NyYXRjaCBy
ZWdpc3RlciB1c2VmdWwgaGVyZSBiZWZvcmUsIHNvIEkgd2lsbCBrZWVwIGl0IGZvciBub3cuCi0g
ICAgCi0gICAgUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7
Ci0gICAgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7
Ci0gICAgCi0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgc3RvcmVQdHIo
c3RydWN0dXJlLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwor
ICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0
Y2gpOworICAgICAgICBzdG9yZTMyKHNjcmF0Y2gsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFz
dFNlZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICB9CiAKLSAgICBsb2FkOChBZGRyZXNzKHN0cnVjdHVy
ZSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CisgICAg
bG9hZDgoQWRkcmVzcyhjZWxsLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhp
bmdUeXBlKTsKIH0KIAotaW5saW5lIHZvaWQgSklUOjplbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9y
Qnl0ZWNvZGVJbmRleChSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0
ZXJJRCBzY3JhdGNoLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoraW5saW5lIHZvaWQgSklUOjpl
bWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKFJlZ2lzdGVySUQg
Y2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKIHsKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gsIG1f
Y29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CisgICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKGNlbGwsIGluZGV4aW5nVHlwZSwgc2NyYXRjaCwg
bV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKGJ5dGVjb2RlSW5kZXgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwotICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCAwKTsKKyAgICBlbWl0QXJy
YXlQcm9maWxpbmdTaXRlKGNlbGwsIGluZGV4aW5nVHlwZSwgc2NyYXRjaCwgMCk7CiAjZW5kaWYK
IH0KIApAQCAtMTEwMiw2ICsxMDk5LDI2IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRU
YWdBc0Jvb2xJbW0KIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorSklUOjpKdW1wIEpJVDo6YnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7
CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gYnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0
SGFuZFNpZGUsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0
dXJuIGJyYW5jaFB0cihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK01hY3JvQXNzZW1i
bGVyOjpKdW1wIGJyYW5jaFN0cnVjdHVyZShNYWNyb0Fzc2VtYmxlciYgaml0LCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBqaXQu
YnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CisjZWxzZQorICAgIHJldHVybiBqaXQuYnJhbmNoUHRy
KGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NSw4ICsyNTUsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zCiAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SlNDZWxsKGJhc2VWYWwpOwogICAgIAogICAgIC8vIENoZWNrIHRoYXQgYmFz
ZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNlJy4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJh
bmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0yNzUsOCArMjc0LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChwcm90byk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDMpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDMpKTsKKyAg
ICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMSkpOwogCiAgICAgLy8g
T3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgog
ICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0
aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMjg2LDcgKzI4NCw3IEBAIHZvaWQgSklUOjplbWl0X29w
X2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAgIC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0
aGUgY2VsbCBpbiByZWdUMi4gIElmIHRoaXMgaXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAg
Ly8gT3RoZXJ3aXNlLCBjaGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBk
cm9wIG91dCBvZiB0aGUgbG9vcCwgaWYgbm90IGdvIGFnYWluLgotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAg
ICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QyKTsKICAgICBK
dW1wIGlzSW5zdGFuY2UgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CiAgICAgYnJh
bmNoVGVzdDMyKE5vblplcm8sIHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkBAIC0zNDIsMTIg
KzM0MCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3RpCiAgICAg
SnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMpOwotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsK
LSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8s
IEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAgbm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKICAgICAKICAgICBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQubGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBjb21w
YXJlMzIoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMzg2LDggKzM4NCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0TG9hZCh2YWx1
ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0g
ICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKKyAgICBjb21wYXJl
OChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsK
ICAgICAKICAgICBpc05vdENlbGwubGluayh0aGlzKTsKQEAgLTQyNiw3ICs0MjMsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3RpCiAgICAgZW1pdExvYWQoc3JjLCBy
ZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBpc0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOwogICAgIGlzSW1tLmxpbmsodGhpcyk7CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTU1
Miw5ICs1NDksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAK
ICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwg
Y2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJl
LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTm90
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFs
LCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDAp
LCB0YXJnZXQpOwogICAgIEp1bXAgbWFzcXVlcmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBq
dW1wKCk7CkBAIC01NzgsOSArNTc0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKElu
c3RydWN0aW9uKgogCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIC8vIEZpcnN0LCBo
YW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24g
dGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgYWRkSnVtcChicmFuY2hU
ZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJl
Z1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1w
IHdhc05vdEltbWVkaWF0ZSA9IGp1bXAoKTsKQEAgLTYzNCw4ICs2MjksOCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdl
dFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBub3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlNDZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwotICAgIGdl
bmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBnZW5lcmljQ2FzZS5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIAog
ICAgIC8vIFN0cmluZyBjYXNlLgogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmluZ0VxLCByZWdUMCwgcmVnVDIpOwpAQCAtNjc4LDggKzY3Myw4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9uZXEoSW5zdHJ1Y3Rpb24qIGMKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xv
d0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2VuZXJp
Y0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92
bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAgICAg
Ly8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5n
RXEsIHJlZ1QwLCByZWdUMik7CkBAIC03MDksOCArNzA0LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVP
cFN0cmljdEVxKEluc3RydWN0aW9uKgogCiAgICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBi
b3RoIGFyZSBzdHJpbmdzLgogICAgIEp1bXAgbm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBKdW1wIGZpcnN0Tm90
U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpKTsKKyAgICBKdW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
VHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgbm90Q2Vs
bC5saW5rKHRoaXMpOwogICAgIGZpcnN0Tm90U3RyaW5nLmxpbmsodGhpcyk7CiAKQEAgLTc2Nywx
MiArNzYyLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAg
ICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJy
YW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4
KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDEpOwogICAgIEp1
bXAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwog
ICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC03OTgsMTIgKzc5
MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1p
dExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gz
MihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25a
ZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKICAgICBKdW1wIHdh
c05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBj
b21wYXJlMzIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMiwgcmVnVDEpOwpAQCAtODQyLDEwICs4Mzcs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdExv
YWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90
SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBpZiAo
VmlydHVhbFJlZ2lzdGVyKGJhc2UpICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBt
X2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9i
amVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAo
VmlydHVhbFJlZ2lzdGVyKGJhc2UpICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBt
X2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChl
bWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5l
IHRoZSBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMg
Y2FsbCBkb2Vzbid0IHNlZW0gdG8gYmUgaG90LgpAQCAtODk4LDcgKzg5MSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBsb2FkUHRyKHBheWxvYWRGb3Io
YmFzZSksIHJlZ1QwKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QyKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBw
cm90b3R5cGUgY2hhaW4KQEAgLTkwOSw3ICs5MDIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0
X3BuYW1lKEluc3RydWN0aW9uCiAgICAgTGFiZWwgY2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAg
Y2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2gzMihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKSk7CiAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Qy
KTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIs
IEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3RydWN0
dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJlZ1Qz
KSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0aGlzKTsKQEAgLTExNjAsOCArMTE1Myw4IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0TG9hZCh0aGlz
UmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CiAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAg
ICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsK
KyAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QwKTsKICAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOSw4ICsxMDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2Uo
SW5zCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVmFsKTsKIAog
ICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNlJy4KLSAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7
Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgU3RydWN0
dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9p
bnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMjksOCArMTI4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSwgcHJvdG8pOwogCiAgICAgLy8gQ2hlY2sgdGhh
dCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDMpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1w
SWZOb3RPYmplY3QocmVnVDMpKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE5vdE9i
amVjdChyZWdUMSkpOwogICAgIAogICAgIC8vIE9wdGltaXN0aWNhbGx5IGxvYWQgdGhlIHJlc3Vs
dCB0cnVlLCBhbmQgc3RhcnQgbG9vcGluZy4KICAgICAvLyBJbml0aWFsbHksIHJlZ1QxIHN0aWxs
IGNvbnRhaW5zIHByb3RvIGFuZCByZWdUMiBzdGlsbCBjb250YWlucyB2YWx1ZS4KQEAgLTE0MCw3
ICsxMzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAKICAg
ICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdCBpbiByZWdUMi4gIElmIHRoaXMg
aXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpZiB3ZSd2
ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0aGUgbG9vcCwgaWYgbm90
IGdvIGFnYWluLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJl
Z1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZz
ZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBicmFuY2hQdHIoRXF1YWwsIHJl
Z1QyLCByZWdUMSk7CiAgICAgZW1pdEp1bXBJZkpTQ2VsbChyZWdUMikubGlua1RvKGxvb3AsIHRo
aXMpOwpAQCAtMTY1LDEyICsxNjMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVk
KEluc3RydWN0aQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKICAgICBpc0NlbGwubGlu
ayh0aGlzKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMSk7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsK
ICAgICBKdW1wIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01h
c3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShy
ZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBjb21wYXJlUHRyKEVx
dWFsLCByZWdUMCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTIxMiw4ICsyMTAsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pc19zdHJpbmcoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCk7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1Qx
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5
cGUpLCByZWdUMCk7CisgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsK
ICAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1w
KCk7CiAgICAgCkBAIC0yNzQsOCArMjcxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVj
dF9vcl90aGlzKElucwogICAgIC8vIFJldHVybiB0aGUgcmVzdWx0IGluICVlYXguCiAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1
cm5WYWx1ZUdQUik7CiAgICAgSnVtcCBub3RKU0NlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
dHVyblZhbHVlR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmV0dXJuVmFsdWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBlbWl0
SnVtcElmTm90T2JqZWN0KHJlZ1QyKTsKKyAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZD
ZWxsTm90T2JqZWN0KHJldHVyblZhbHVlR1BSKTsKIAogICAgIC8vIEdyYWIgdGhlIHJldHVybiBh
ZGRyZXNzLgogICAgIGVtaXRHZXRSZXR1cm5QQ0Zyb21DYWxsRnJhbWVIZWFkZXJQdHIocmVnVDEp
OwpAQCAtMzExLDcgKzMwNyw5IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0
cnVjdGkKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwogICAgIAogICAg
IEp1bXAgaXNJbW0gPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2Fz
ZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICBhZGRTbG93Q2FzZShicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV92bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChk
c3QgIT0gc3JjKQpAQCAtMzYzLDggKzM2MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxs
KEluc3RydWN0aW9uKiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCk7CiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1
bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVz
cyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRk
SnVtcChicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2Jh
bE9iamVjdElzRm9yZWlnbiA9IGp1bXAoKTsKQEAgLTM4Niw4ICszODQsOCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVt
aXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwg
Y2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJl
LgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVy
ZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVn
VDApLCB0YXJnZXQpOwogICAgIEp1bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNDgy
LDEwICs0ODAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVC
bG9jay0+aXNLbm93bk5vdEltbWVkaWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBw
ZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVC
bG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZO
b3RPYmplY3QocmVnVDIpKTsKLSAgICB9CisgICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRo
aXNSZWdpc3RlcigpLm9mZnNldCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7
CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxp
ZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBA
IC01MzksNyArNTM1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlv
bgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogCiAgICAgLy8gVGVz
dCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCBy
ZWdUMiwgcmVnVDMpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCByZWdUMiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3Qg
YmFzZSdzIHByb3RvdHlwZSBjaGFpbgpAQCAtNTUwLDcgKzU0Niw3IEBAIHZvaWQgSklUOjplbWl0
X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlz
KTsKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQo
KSksIHJlZ1QyKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0Nl
bGwocmVnVDIpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCBy
ZWdUMSk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QyLCBBZGRyZXNzKHJlZ1QzKSkpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0
cnVjdHVyZSopKSwgcmVnVDMpOwogICAgIGJyYW5jaFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMykpLmxpbmtUbyhjaGVja1Byb3RvdHlwZSwgdGhpcyk7CkBAIC03MjcsMTIgKzcyMywxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
anVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgY29tcGFyZVB0cihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC03NTksMTIg
Kzc1NSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0
ZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJh
bmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhp
cyk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCByZWdUMik7CiAgICAgY29tcGFyZVB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7
CkBAIC04MzAsMTEgKzgyNiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0
aW9uKiBjCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVn
VDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QwKTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmlu
YWxPYmplY3RUeXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDEsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmlu
YWxPYmplY3RUeXBlKSkpOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7Ci0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7CisgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2Nh
bGxlZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtOTA2LDYgKzkwMyw3IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW8KICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKKyAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1Bh
dGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3RoaXMpOwogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw3ICs0NDYs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0CiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CiAKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpID4gYmFzZS0+
c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCkgPiBiYXNlLT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpKTsKICAgICBBU1NFUlQoIXZtLmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpLmZhc3RQYXRo
U2hvdWxkU3VjY2VlZChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNW
YWx1ZSkpKTsKICAgICBiYXNlLT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVj
ZXNzYXJ5KHZtLCBzdHJ1Y3R1cmUpOwogICAgIGJhc2UtPnB1dERpcmVjdCh2bSwgb2Zmc2V0LCBK
U1ZhbHVlOjpkZWNvZGUodmFsdWUpKTsKQEAgLTQ1NCw2ICs0NTQsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0CiAKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpT
VmFsdWUgdmFsdWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIGlmIChM
SUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJz
Y3JpcHQuYXNVSW50MzIoKTsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CkBA
IC00NjEsNyArNDYyLDcgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJh
bQogICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGkpKQogICAgICAg
ICAgICAgICAgIG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KGNhbGxGcmFtZS0+dm0oKSwgaSwgdmFs
dWUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBiYXNlVmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIGlmIChpc05h
bWUoc3Vic2NyaXB0KSkgewpAQCAtNTExLDkgKzUxMiw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbChFeGUKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVj
LT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAg
IEFTU0VSVCghYnlWYWxJbmZvLnN0dWJSb3V0aW5lKTsKIAotICAgICAgICBpZiAoaGFzT3B0aW1p
emFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSgpKSkgeworICAgICAgICBpZiAoaGFzT3B0
aW1pemFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CiAgICAgICAgICAgICAv
LyBBdHRlbXB0IHRvIG9wdGltaXplLgotICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9k
ZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUgPSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUo
b2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUgIT0gYnlW
YWxJbmZvLmFycmF5TW9kZSkgewogICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFs
KCZ2bSwgZXhlYy0+Y29kZUJsb2NrKCksICZieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VS
X1JFVFVSTl9BRERSRVNTKSwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgICAgICBkaWRPcHRpbWl6
ZSA9IHRydWU7CkBAIC01MjcsNyArNTI4LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsKEV4ZQogICAgICAgICAgICAgLy8gd2hlcmUgd2Ugc2VlIG5vbi1pbmRleC1pbnRl
cmNlcHRpbmcgb2JqZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mCiAgICAg
ICAgICAgICAvLyBvcHBvcnR1bml0eSBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBnZXRfYnlf
dmFsIG1heSBiZSBwb2x5bW9ycGhpYy4KICAgICAgICAgICAgIGlmICgrK2J5VmFsSW5mby5zbG93
UGF0aENvdW50ID49IDEwCi0gICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvKCkpIHsKKyAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2
bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkg
dG8gb3B0aW1pemUuCiAgICAgICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KGV4ZWMtPmNvZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGlu
a0NhbGxlclRvRnVuY3Rpb24oUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBG
dW5jdGlvblB0cihvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKQEAgLTU1Nyw5ICs1NTgsOSBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWCiAgICAgICAgIEJ5VmFs
SW5mbyYgYnlWYWxJbmZvID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJbmZvKGJ5
dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLnN0dWJSb3V0aW5l
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+
c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVj
dC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUu
Ci0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3Ry
dWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkp
OwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAg
ICAgICAgICAgICAgICAgSklUOjpjb21waWxlRGlyZWN0UHV0QnlWYWwoJnZtLCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLCAmYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIGFycmF5TW9kZSk7CiAgICAgICAgICAgICAgICAgZGlkT3B0aW1pemUgPSB0cnVlOwpA
QCAtNTczLDcgKzU3NCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRC
eVYKICAgICAgICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24taW5kZXgtaW50ZXJjZXB0aW5nIG9i
amVjdHMsIHRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZgogICAgICAgICAgICAgLy8g
b3Bwb3J0dW5pdHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgZ2V0X2J5X3ZhbCBtYXkgYmUg
cG9seW1vcnBoaWMuCiAgICAgICAgICAgICBpZiAoKytieVZhbEluZm8uc2xvd1BhdGhDb3VudCA+
PSAxMAotICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
aW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
bygpKSB7CisgICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5m
bygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8oKSkgewogICAgICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXpl
LgogICAgICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsRnJhbWUt
PmNvZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxl
clRvRnVuY3Rpb24oUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBGdW5jdGlv
blB0cihvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpKTsKQEAgLTc2NywxMSArNzY4LDEy
IEBAIHN0YXRpYyBib29sIGF0dGVtcHRUb09wdGltaXplQ2xvc3VyZUNhbGwKICAgICBpZiAoIWNh
bGxlZUFzRnVuY3Rpb25DZWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCisgICAgVk0m
IHZtID0gZXhlY0NhbGxlZS0+dm0oKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU0Z1bmN0aW9uKiBvbGRD
YWxsZWUgPSBjYWxsTGlua0luZm8uY2FsbGVlLmdldCgpOwogICAgIAogICAgIGlmICghb2xkQ2Fs
bGVlCi0gICAgICAgIHx8IG9sZENhbGxlZS0+c3RydWN0dXJlKCkgIT0gY2FsbGVlLT5zdHJ1Y3R1
cmUoKQorICAgICAgICB8fCBvbGRDYWxsZWUtPnN0cnVjdHVyZSh2bSkgIT0gY2FsbGVlLT5zdHJ1
Y3R1cmUodm0pCiAgICAgICAgIHx8IG9sZENhbGxlZS0+ZXhlY3V0YWJsZSgpICE9IGNhbGxlZS0+
ZXhlY3V0YWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC03ODksNyArNzkx
LDcgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVDbG9zdXJlQ2FsbAogICAgIAogICAg
IGxpbmtDbG9zdXJlQ2FsbCgKICAgICAgICAgZXhlY0NhbGxlZSwgY2FsbExpbmtJbmZvLCBjb2Rl
QmxvY2ssCi0gICAgICAgIGNhbGxlZS0+c3RydWN0dXJlKCksIGNhbGxlZS0+ZXhlY3V0YWJsZSgp
LCBjb2RlUHRyKTsKKyAgICAgICAgY2FsbGVlLT5zdHJ1Y3R1cmUodm0pLCBjYWxsZWUtPmV4ZWN1
dGFibGUoKSwgY29kZVB0cik7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMzA4LDIy
ICsxMzEwLDIyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbEMKIAog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNlKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZVZhbCkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Zh
bHVlIGJhc2VWYWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWwpOwogCiAgICAgaWYg
KGJhc2VWYWwuaXNPYmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFz
T2JqZWN0KGJhc2VWYWwpOwotICAgICAgICBBU1NFUlQoIWJhc2VPYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAgICAgIGlm
IChiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSkgewotICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5jdXN0b21IYXNJbnN0YW5jZShiYXNlT2JqZWN0LCBleGVjLCB2YWx1ZSk7CisgICAgICAg
IEFTU0VSVCghYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlKCkpOworICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJl
KHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgeworICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3Rh
bmNlKGJhc2VPYmplY3QsIGV4ZWMsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdm0t
PnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAi
aW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKKyAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVJbnZhbGlkUGFyYW1ldGVyRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQogCkBAIC0xNDEwLDkgKzE0
MTIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAg
IEJ5VmFsSW5mbyYgYnlWYWxJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldEJ5VmFsSW5mbyhi
eXRlY29kZU9mZnNldCAtIDEpOwogICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby5zdHViUm91dGlu
ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmplY3Qt
PnN0cnVjdHVyZSgpKSkgeworICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmpl
Y3QtPnN0cnVjdHVyZSh2bSkpKSB7CiAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIG9wdGltaXpl
LgotICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0
cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIEpJVEFycmF5TW9kZSBh
cnJheU1vZGUgPSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0p
KTsKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUgIT0gYnlWYWxJbmZvLmFycmF5TW9kZSkgewog
ICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZUdldEJ5VmFsKCZ2bSwgZXhlYy0+Y29kZUJsb2Nr
KCksICZieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYXJy
YXlNb2RlKTsKICAgICAgICAgICAgICAgICBkaWRPcHRpbWl6ZSA9IHRydWU7CkBAIC0xNDI2LDcg
KzE0MjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAg
ICAgICAgICAvLyB3aGVyZSB3ZSBzZWUgbm9uLWluZGV4LWludGVyY2VwdGluZyBvYmplY3RzLCB0
aGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2YKICAgICAgICAgICAgIC8vIG9wcG9ydHVu
aXR5IGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIGdldF9ieV92YWwgbWF5IGJlIHBvbHltb3Jw
aGljLgogICAgICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLnNsb3dQYXRoQ291bnQgPj0gMTAKLSAg
ICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2Vw
dHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewor
ICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRl
cmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkp
IHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAg
ICAgICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoZXhlYy0+Y29kZUJsb2NrKCkp
OwogICAgICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihS
ZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlv
bkdldEJ5VmFsR2VuZXJpYykpOwpAQCAtMTQ5MCw3ICsxNDkyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25EZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKS50b09iamVjdChleGVjKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFz
ZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgKmlkZW50
aWZpZXIpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsICppZGVudGlmaWVyKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzQm9vbGVhbihjb3VsZERlbGV0ZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKSk7CkBAIC0xNTAyLDcgKzE1MDQsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0UE5hbWVzCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IG9iai0+c3RydWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmotPnN0
cnVjdHVyZSh2bSk7CiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOwogICAgIGlmICghanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5
cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCiAgICAgICAgIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhl
Yywgb2JqKTsKQEAgLTE2MjMsMTAgKzE2MjUsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZQogICAgIH0KIAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxz
LiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlk
bid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGlmIChzbG90
LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUt
PnN0cnVjdHVyZSgpLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IHNjb3BlICYmIHNj
b3BlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKICAg
ICAgICAgaWYgKG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2RlQW5k
VHlwZS50eXBlKCkgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAg
ICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
Ci0gICAgICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBj
WzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzY29wZS0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQg
PSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTY1MiwxNiArMTY1
NCwxNiBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0VG9TY29wZShFCiAgICAgfQog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7Ci0g
ICAgc2NvcGUtPm1ldGhvZFRhYmxlKCktPnB1dChzY29wZSwgZXhlYywgaWRlbnQsIHZhbHVlLCBz
bG90KTsKKyAgICBzY29wZS0+bWV0aG9kVGFibGUodm0pLT5wdXQoc2NvcGUsIGV4ZWMsIGlkZW50
LCB2YWx1ZSwgc2xvdCk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPnZtKCkuZXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0
aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cg
aG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGlmIChtb2RlQW5kVHlwZS50
eXBlKCkgPT0gR2xvYmFsUHJvcGVydHkgfHwgbW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZSgpICYmIHNsb3QuYmFzZSgpID09IHNjb3BlICYmIHNjb3BlLT5zdHJ1Y3R1cmUoKS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlKCkgJiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSh2bSktPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewogICAgICAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcGNbNV0udS5z
dHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHNj
b3BlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhl
Yy0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSh2
bSkpOwogICAgICAgICAgICAgcGNbNl0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCBKSVQ6OkNvZGVSZWYgSklUOjpzdHJpbmdHZXRCeVZh
bFN0dWJHZW5lCiB7CiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KHZtKTsKICAgICBKdW1wTGlzdCBm
YWlsdXJlczsKLSAgICBmYWlsdXJlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBmYWlsdXJlcy5hcHBlbmQoSlNDOjpicmFu
Y2hTdHJ1Y3R1cmUoaml0LCBOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIAogICAgIC8v
IExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMSwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxv
YWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNz
KHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMSk7CkBA
IC0xMzcsOCArMTM3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlv
bgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVn
VDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdEFy
cmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CiAgICAgYW5k
MzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogCiAgICAgUGF0Y2hh
YmxlSnVtcCBiYWRUeXBlOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0cmlu
ZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Cisg
ICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFs
U3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIo
WmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC0yODEs
OCArMjgxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAg
IAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChi
YXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDEsIHJl
Z1QzLCBwcm9maWxlKTsKKyAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7CisgICAgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1
c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogICAgIAogICAgIFBhdGNoYWJs
ZUp1bXAgYmFkVHlwZTsKQEAgLTQ3Nyw4ICs0NzcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2Us
IHJlZ1QxKTsKIAogICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3Ro
ICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJlZ1QyLCByZWdUMywgbV9ieXRlY29kZU9m
ZnNldCk7CisgICAgICAgIG1vdmUocmVnVDAsIHJlZ1QyKTsKKyAgICAgICAgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChyZWdUMiwgcmVnVDMsIG1fYnl0ZWNv
ZGVPZmZzZXQpOwogICAgIH0KIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKApAQCAtNjMy
LDcgKzYzMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkKICAg
ICBlbWl0TG9hZFBheWxvYWQoaXRlciwgcmVnVDEpOwogICAgIAogICAgIC8vIFRlc3QgYmFzZSdz
IHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90
RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpOwogICAgIGxvYWQzMihhZGRyZXNzRm9y
KGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMyk7CkBAIC03Mjks
NyArNzI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludAogewog
ICAgIGVtaXRMb2FkKHNjb3BlLCByZWdUMSwgcmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0dXJl
U2xvdCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKSk7CisgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEdldEdsb2JhbFByb3Bl
cnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDcgKzU2LDEwIEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1
YkdlbmUKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAgIEp1bXBMaXN0IGZhaWx1
cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChKU0M6OmJyYW5jaFN0
cnVjdHVyZShqaXQsCisgICAgICAgIE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIHZtLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byByZWdUMiwgYW5kIHN0
YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBpbnRvIHJlZ1QwCiAg
ICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3Ro
T2Zmc2V0KCkpLCByZWdUMik7CkBAIC0xMTEsOCArMTE0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdU
MSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QyLCByZWdUMywgcHJvZmlsZSk7Cisg
ICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMiwgcmVnVDMsIHBy
b2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1Qy
KTsKIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKQEAgLTIwOSw3ICsyMTEsOSBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAgbGlua1Nsb3dDYXNlSWZO
b3RKU0NlbGwoaXRlciwgYmFzZSk7IC8vIGJhc2UgY2VsbCBjaGVjawogICAgIEp1bXAgbm9uQ2Vs
bCA9IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sK
LSAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90
RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCAKKyAgICAgICAgbV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICBlbWl0TmFr
ZWRDYWxsKENvZGVMb2NhdGlvbkxhYmVsKG1fdm0tPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxT
dHViR2VuZXJhdG9yKS5jb2RlKCkpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3Q2NCha
ZXJvLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKQEAg
LTI4MCw3ICsyODQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rp
CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAogICAgIC8v
IFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdU
MCwgcmVnVDIsIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QyLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpOwogICAgIGxvYWQzMihhZGRyZXNzRm9yKGkpLCByZWdU
Myk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMyk7CkBAIC0zMjEsOCArMzI1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIC8vIFNlZSBj
b21tZW50IGluIG9wX2dldF9ieV92YWwuCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJl
Z1QxKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QyLCByZWdUMywgcHJvZmlsZSk7Cisg
ICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMiwgcmVnVDMsIHBy
b2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1Qy
KTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC01MTcsMTAgKzUyMCw4IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICAKICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAo
KmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0
ZWNvZGVJbmRleChyZWdUMSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQpOwotICAgIH0KKyAgICBp
ZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4
V2l0aENlbGwocmVnVDAsIHJlZ1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CiAKICAgICBK
SVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4o
bV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCkBAIC02
OTcsNyArNjk4LDkgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludAog
ewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1QwKTsKICAgICBsb2FkUHRy
KHN0cnVjdHVyZVNsb3QsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDEpKTsKKyAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEdldEds
b2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkBAIC03NTgsNiArNzYxLDggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKElucwogICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29s
dmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKKyAgICAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3Bl
cmF0aW9uKFdpdGhQcm9maWxlLCBvcGVyYXRpb25HZXRGcm9tU2NvcGUsIGRzdCwgY3VycmVudElu
c3RydWN0aW9uKTsKIH0KQEAgLTgyMSw2ICs4MjYsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
cHV0X3RvX3Njb3BlKEluc3RyCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCBy
ZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0VG9T
Y29wZSwgY3VycmVudEluc3RydWN0aW9uKTsKIH0KQEAgLTg3Myw3ICs4ODAsNyBAQCBKSVQ6Okp1
bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAgICAgICAgIHN0cnVjdHVyZS0+YWRk
VHJhbnNpdGlvbldhdGNocG9pbnQoc3R1YkluZm8tPmFkZFdhdGNocG9pbnQobV9jb2RlQmxvY2sp
KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihvYmpl
Y3QpLCBzY3JhdGNoKTsKLSAgICAgICAgSnVtcCBvayA9IGJyYW5jaFB0cihFcXVhbCwgQWRkcmVz
cyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyAgICAgICAgSnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShFcXVhbCwgQWRkcmVz
cyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICBicmVha3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAjZW5kaWYKQEAgLTg4
Miw3ICs4ODksNyBAQCBKSVQ6Okp1bXAgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAg
ICAgfQogICAgIAogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoKTsKLSAg
ICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJldHVybiBi
cmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlKTsKIH0KIAogdm9pZCBKSVQ6OmFkZFN0cnVjdHVyZVRy
YW5zaXRpb25DaGVjayhKU0NlbGwqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgUmVnaXN0ZXJJ
RCBzY3JhdGNoKQpAQCAtMTAyNiw4ICsxMDMzLDE0IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
SW50VHlwZWRBcnJheUdldEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0g
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3Jh
dGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNs
YXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIHB1c2go
cmVnVDIpOworI2VuZGlmCisjaWYgVVNFKEpTVkFMVUUzMl82NCkgCisgICAgcG9wKHJlZ1QyKTsK
KyNlbmRpZgorICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIHNjcmF0Y2gpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVh
bCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRk
cmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBs
b2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkp
LCBiYXNlKTsKICAgICAKQEAgLTEwOTYsOSArMTEwOSwxNSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKworI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCisgICAgcHVzaChyZWdUMik7CisjZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSAKKyAg
ICBwb3AocmVnVDIpOworI2VuZGlmCisgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlU
eXBlKHR5cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWws
IHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZWZWN0b3IoKSksIGJhc2UpOwogICAgIApAQCAtMTE0OSw4ICsxMTY4LDggQEAgSklUOjpK
dW1wTGlzdCBKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QgogICAgIAogICAgIEp1bXBMaXN0IHNs
b3dDYXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKyAgICBs
b2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNj
cmF0Y2gpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlT
Y3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CiAgICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRyZXNz
KGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIAogI2lm
IFVTRShKU1ZBTFVFNjQpCkBAIC0xMjE1LDggKzEyMzQsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6
ZW1pdEZsb2F0VHlwZWRBcnJheVB1CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
ZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKGVhcmx5U2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOworICAgIGxvYWQ4KEFkZHJlc3Mo
YmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAg
YmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0
ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBw
ZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2
NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJl
dmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlw
ZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlKTsKKyAg
ICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSk7
CiAKICAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2Fs
bEZyYW1lUmVnaXN0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihS
ZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKQEAgLTIyNCwx
MCArMjI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNf
SU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90
VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlIHR5
cGUpCisgICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJ
VDo6ZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUgdHlwZSkKICAg
ICB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBB
ZGRyZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIodHlwZSkpOworICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVz
cyhiYXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5
cGUpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5
IGVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEx
IEBACiAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVJbmxp
bmVzLmgiCisjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJGVExUaHVu
a3MuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKKyNpbmNsdWRlICJKSVQu
aCIKKyNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0Lmgi
CkBAIC0xMDEsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgcmVwYXRjaEJ5SWRTZWxmQWNjZXNzKENv
ZGVCbAogICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiwgc2xvd1BhdGhGdW5jdGlvbik7CiAKICAgICAvLyBQYXRjaCB0aGUgc3RydWN0dXJl
IGNoZWNrICYgdGhlIG9mZnNldCBvZiB0aGUgbG9hZC4KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50
cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCksIHN0cnVjdHVyZSk7Cisg
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRv
Q2FsbCksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICByZXBh
dGNoQnVmZmVyLnNldExvYWRJbnN0cnVjdGlvbklzQWN0aXZlKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5jb252ZXJ0aWJsZUxvYWRBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxU
b1N0b3JhZ2VMb2FkKSwgaXNPdXRPZkxpbmVPZmZzZXQob2Zmc2V0KSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICBpZiAoY29tcGFjdCkKQEAgLTEyOSwxMCArMTMyLDEwIEBAIHN0YXRpYyB2b2lk
IGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgLy8gSWYgd2UgZXhlY3V0ZSB0
aGlzIGNvZGUsIHRoZSBvYmplY3QgbXVzdCBoYXZlIHRoZSBzdHJ1Y3R1cmUgd2UgZXhwZWN0LiBB
c3NlcnQKICAgICAgICAgLy8gdGhpcyBpbiBkZWJ1ZyBtb2Rlcy4KICAgICAgICAgaml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7Ci0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gaml0LmJyYW5jaFB0cigKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBicmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICBqaXQuYnJlYWtwb2ludCgp
OwogICAgICAgICBvay5saW5rKCZqaXQpOwogI2VuZGlmCkBAIC0xNDEsMTAgKzE0NCwxMCBAQCBz
dGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgCiAgICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaEdQUik7CiAg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZCgKLSAgICAgICAgaml0LmJyYW5jaFB0cigKKyAgICAgICAg
YnJhbmNoU3RydWN0dXJlKGppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
IHN0cnVjdHVyZSkpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hl
Y2soCkBAIC0xNjMsMTAgKzE2NiwxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0
aW9uQ2hlY2soCiAKIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChSZXBhdGNoQnVmZmVyJiBy
ZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciB0YXJnZXQpCiB7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1w
UmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7CisgICAgaWYgKE1hY3JvQXNz
ZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKICAg
ICAgICAgcmVwYXRjaEJ1ZmZlci5yZXBsYWNlV2l0aEp1bXAoCi0gICAgICAgICAgICBSZXBhdGNo
QnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKAotICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaE9uQWRkcmVzcygKKyAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgKICAgICAgICAgICAgICAgICAgICAgLShpbnRw
dHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSksCiAgICAgICAgICAgICBD
b2RlTG9jYXRpb25MYWJlbCh0YXJnZXQpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQxLDcgKzI0
NCwxMCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAKLSAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICBm
YWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgc3RydWN0dXJl
KSk7CiAgICAgCiAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7CkBAIC0zMTcsOCAr
MzIzLDcgQEAgc3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAg
ICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAg
ICAKLSAgICAgICAgc3R1YkppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsgCi0gICAgICAgIHN0
dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJl
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBzdHViSml0Lmxv
YWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBl
T2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHVi
Sml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJc0FycmF5KSkpOwogICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSkpOwog
ICAgICAgICAKQEAgLTUwNSw3ICs1MTAsMTAgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRHZXRCeUlE
TGlzdChFeGVjU3RhdAogICAgICAgICAKICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0s
IGNvZGVCbG9jayk7CiAgICAgICAgIAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB3cm9u
Z1N0cnVjdCA9IHN0dWJKaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCB3cm9uZ1N0cnVjdCA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgc3RydWN0dXJlKTsKICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBzdHJh
dGVneSB3ZSB1c2UgZm9yIHN0dWJzIGlzIGFzIGZvbGxvd3M6CiAgICAgICAgIC8vIDEpIENhbGwg
REZHIGhlbHBlciB0aGF0IGNhbGxzIHRoZSBnZXR0ZXIuCkBAIC03MTgsMTAgKzcyNiwxMCBAQCBz
dGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAgICAgICAgIHN0dWJKaXQucHVzaFRvU2F2
ZShzY3JhdGNoR1BSKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1
Y3R1cmUgPSBzdHViSml0LmJyYW5jaFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRT
dHJ1Y3R1cmUgPSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7
CiAgICAgCiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQogI2lmIFVTRShKU1ZB
TFVFNjQpCkBAIC04NDgsNyArODU2LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9u
U3R1YigKICAgICAgICAgICAgIAogICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25X
YXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpOwogICAgIAotICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2xkU3RydWN0dXJlKSkpOworICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBvbGRTdHJ1Y3R1cmUp
KTsKICAgICAKICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0
cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGV4ZWMtPmNvZGVCbG9jaygpLCBzdHViSW5mbywg
c3R1YkppdCwgZmFpbHVyZUNhc2VzLApAQCAtOTA2LDcgKzkxNyw3IEBAIHN0YXRpYyB2b2lkIGVt
aXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgc2NyYXRjaEdQUjFIYXNTdG9yYWdlID0gdHJ1
ZTsKICAgICB9CiAKLSAgICBzdHViSml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRTdG9yZVN0
cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHViSml0LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBiYXNlR1BSKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChpc0lu
bGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKICAgICAgICAgc3R1YkppdC5zdG9yZTY0
KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU09iamVjdDo6b2Zm
c2V0T2ZJbmxpbmVTdG9yYWdlKCkgKyBvZmZzZXRJbklubGluZVN0b3JhZ2Uoc2xvdC5jYWNoZWRP
ZmZzZXQoKSkgKiBzaXplb2YoSlNWYWx1ZSkpKTsKQEAgLTExNDQsNyArMTE1NSw3IEBAIHN0YXRp
YyBib29sIHRyeUJ1aWxkUHV0QnlJZExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTIx
OSwxMCArMTIzMCwxMCBAQCBzdGF0aWMgYm9vbCB0cnlSZXBhdGNoSW4oCiAgICAgICAgICAgICBu
ZWVkVG9SZXN0b3JlU2NyYXRjaCA9IGZhbHNlOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChzdHViSml0LmJyYW5jaFB0cigKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hT
dHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVy
ZSkpOwogICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKiBjdXJyU3RydWN0dXJlID0gc3RydWN0
dXJlOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaXQgPSBjaGFpbi0+aGVhZCgp
OwpAQCAtMTM0NywxMCArMTM1OCwxMCBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUq
IGV4ZWMsIENhCiAjZW5kaWYKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAgIHN0
dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKSk7CiAgICAgCiAgICAgc2xvd1BhdGguYXBw
ZW5kKAogICAgICAgICBzdHViSml0LmJyYW5jaFB0cigKQEAgLTE0MTYsMTYgKzE0MjcsMTYgQEAg
dm9pZCBsaW5rQ2xvc3VyZUNhbGwoRXhlY1N0YXRlKiBleGVjLCBDYQogdm9pZCByZXNldEdldEJ5
SUQoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvKQogewogICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbiwgb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKLSAgICBDb2RlTG9jYXRpb25E
YXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNr
SW1tVG9DYWxsKTsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAg
IFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJl
c3Moc3RydWN0dXJlTGFiZWwpLAorICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVy
ZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQo
LShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAo
TWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
KSkgeworICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goCisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9m
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIp
LAotICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgICAgICAgICAg
ICAgIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAgICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRl
cikpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nh
c3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxD
b21wYWN0QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIDAp
OwogI2Vsc2UKQEAgLTE0NTAsMTYgKzE0NjEsMTYgQEAgdm9pZCByZXNldFB1dEJ5SUQoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaAogICAgICAgICBvcHRpbWl6ZWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1
dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgcmVwYXRjaENhbGwocmVw
YXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcHRpbWl6ZWRGdW5jdGlv
bik7Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1Yklu
Zm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1
YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVy
OjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7Ci0gICAgICAg
IHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJX
aXRoUGF0Y2goCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJh
bmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKKyAgICBDb2RlTG9jYXRp
b25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVj
a0ltbVRvQ2FsbCk7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKAorICAgICAgICAgICAg
UmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNz
KHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAog
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihz
dHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBv
aW50ZXIpKTsKKyAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwogICAgIH0K
LSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3Ry
dWN0dXJlTGFiZWwsIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0
dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxU
b0xvYWRPclN0b3JlKSwgMCk7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9TcGVjaWFsaXplZFRodW5rSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw4IEBACiAjaWYgRU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGUuaCIKKyNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNJbnRlcmZhY2VKSVQuaCIKICNpbmNsdWRlICJKU1N0YWNrLmgiCiAjaW5jbHVkZSAiTGlu
a0J1ZmZlci5oIgpAQCAtNjUsMTQgKzY3LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGxvYWRKU1N0cmluZ0FyZ3VtZW50KFZNJiB2bSwgaW50IGFyZ3VtZW50LCBSZWdpc3RlcklE
IGRzdCkKICAgICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwg
ZHN0KTsKLSAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZt
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIG1fZmFpbHVyZXMuYXBwZW5k
KGJyYW5jaFN0cnVjdHVyZSgqdGhpcywgTm90RXF1YWwsIAorICAgICAgICAgICAgICAgIEFkZHJl
c3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICB2
bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBsb2FkQXJndW1lbnRXaXRoU3BlY2lmaWNDbGFzcyhjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbywgaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwot
ICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHNjcmF0Y2gpOworICAgICAgICAgICAgZW1pdExvYWRTdHJ1Y3R1cmUoZHN0LCBzY3JhdGNo
LCBkc3QpOwogICAgICAgICAgICAgYXBwZW5kRmFpbHVyZShicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIoY2xhc3NJbmZvKSkpOworICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byByZWxvYWQgdGhlIGFy
Z3VtZW50IHNpbmNlIGVtaXRMb2FkU3RydWN0dXJlIGNsb2JiZXJlZCBpdC4KKyAgICAgICAgICAg
IGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHZvaWQgbG9hZEludDMyQXJndW1lbnQoaW50IGFyZ3VtZW50LCBSZWdpc3RlcklEIGRz
dCwgSnVtcCYgZmFpbFRhcmdldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVKSVQuaCIKICNpbmNsdWRlICJKSVRPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRv
ci5oIgpAQCAtMTY4LDcgKzE2OSw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmly
dHVhbEZvclQKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsIEdQUkluZm86Om5v
bkFyZ0dQUjEsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwogI2VuZGlmCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBHUFJJ
bmZvOjpub25BcmdHUFIyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6OmVtaXRMb2FkU3RydWN0dXJl
KGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMiwgR1BSSW5mbzo6
bm9uQXJnR1BSMSk7CiAgICAgc2xvd0Nhc2UuYXBwZW5kKAogICAgICAgICBqaXQuYnJhbmNoUHRy
KAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKQEAgLTk4Niw5ICs5ODcsNyBA
QCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGFycmF5SXRlcmF0CiAgICAgaml0LmxvYWQz
MihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Q0LCBKU0FycmF5SXRlcmF0b3I6Om9m
ZnNldE9mTmV4dEluZGV4KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7CiAgICAgCiAg
ICAgLy8gUHVsbCBvdXQgdGhlIGJ1dHRlcmZseSBmcm9tIGl0ZXJhdGVkT2JqZWN0Ci0gICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKLSAgICAKLSAgICBq
aXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMiwgU3RydWN0dXJlOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKKyAgICBq
aXQubG9hZDgoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNDZWxsOjppbmRl
eGluZ1R5cGVPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QzKTsKICAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7CiAgICAgCiAgICAg
aml0LmFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OnJlZ1QzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9p
bnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51c2VkUG9p
bnRlci5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Vu
dXNlZFBvaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsMTEgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQorc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB1
bnVzZWRQb2ludGVyID0gMHgwOworI2Vsc2UKIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdW51c2Vk
UG9pbnRlciA9IDB4ZDFlN2JlZWY7CisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMzYzLDYgKzM2MywxMyBAQCBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVu
Y2hlCiAgICAgICAgIHBheWxvYWQpCiBlbmQKIAorbWFjcm8gc3RvcmVTdHJ1Y3R1cmVXaXRoVHlw
ZUluZm8oY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorCisgICAgbG9hZGkgU3RydWN0dXJlOjptX2luZGV4
aW5nVHlwZVtzdHJ1Y3R1cmVdLCBzY3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6
bV9pbmRleGluZ1R5cGVbY2VsbF0KK2VuZAorCiBtYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXls
b2FkKQogICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRp
b25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCiBlbmQKQEAgLTUwNSw3ICs1MTIsNyBAQCBf
bGxpbnRfb3BfdG9fdGhpczoKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0
VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAg
IGJwbmVxIHQwLCB0MiwgLm9wVG9UaGlzU2xvdwpAQCAtNTg2LDcgKzU5Myw3IEBAIF9sbGludF9v
cF9lcV9udWxsOgogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BFcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIGJ0Ym56IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgLm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEK
ICAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCkBAIC02MzMsNyArNjQwLDcgQEAgX2xsaW50
X29wX25lcV9udWxsOgogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BOZXFOdWxsSW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBidGJueiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIC5vcE5lcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAx
LCB0MQogICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCkBAIC02NjAsOCArNjY3LDggQEAg
bWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYQogICAgIGJpbmVxIHQyLCB0
MywgLnNsb3cKICAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKICAgICBiaW5lcSB0MiwgQ2Vs
bFRhZywgLm5vdFN0cmluZwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qx
XSwgdDMKICAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwogICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93CiAubm90U3RyaW5n
OgpAQCAtOTMyLDcgKzkzOSw3IEBAIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDEyW1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93CiAgICAgZGlzcGF0Y2goNSkKIApAQCAtOTQ3LDcgKzk1NCw3
IEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIGxvYWRpIDEyW1BDXSwgdDAKICAgICBsb2Fk
aSA0W1BDXSwgdDMKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BJbnN0YW5jZW9mU2xvdwogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCkBA
IC05NTUsNyArOTYyLDcgQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgIyBSZWdpc3RlciBz
dGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEsIHQwCiAub3BJbnN0
YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MgogICAgIGxvYWRpIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKICAgICBicGVxIHQyLCB0MSwgLm9w
SW5zdGFuY2VvZkRvbmUKICAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKQEAgLTk4Miw3
ICs5ODksNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNoKDMpCiAub3BJc1VuZGVmaW5lZENlbGw6
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcElzVW5k
ZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KQEAgLTEwMjUsNyArMTAzMiw3IEBAIF9sbGlu
dF9vcF9pc19zdHJpbmc6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDAsIHQzKQog
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBiaW5lcSB0
MCwgQ2VsbFRhZywgLm9wSXNTdHJpbmdOb3RDZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDAKICAg
ICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCB0MQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQogICAg
IGRpc3BhdGNoKDMpCkBAIC0xMDk0LDcgKzExMDEsNyBAQCBtYWNybyBnZXRCeUlkKGdldFByb3Bl
cnR5U3RvcmFnZSkKICAgICAgICAgdDMsCiAgICAgICAgIHQwLAogICAgICAgICBtYWNybyAocHJv
cGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgICAgICAgICBsb2FkaSA0
W1BDXSwgdDEKICAgICAgICAgICAgIGxvYWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQy
XSwgc2NyYXRjaAogICAgICAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3Jh
Z2UsIHQyXSwgdDIKQEAgLTExMjIsNyArMTEyOSw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVu
Z3RoOgogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRwIDE2W1BDXSwgdDEKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEFycmF5TGVu
Z3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEs
IHQwKQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0
aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTExNjYs
NyArMTE3Myw3IEBAIG1hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0
MCwKICAgICAgICAgdDMsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gp
Ci0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5
SWRTbG93CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpIDIwW1BDXSwgdDEKICAgICAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKICAgICAgICAgICAg
IHdyaXRlQmFycmllcihzY3JhdGNoLCB0MikKQEAgLTExOTQsNyArMTIwMSw3IEBAIG1hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICBsb2FkaSAxNltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
KQogICAgIGxvYWRpIDIwW1BDXSwgdDEKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCkBAIC0xMjA3
LDcgKzEyMTQsNyBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzCiAg
ICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KICAgICAgICAgICAgIGxvYWRpIDI0
W1BDXSwgdDEKICAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KLSAgICAg
ICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIHN0
b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwgdDIpCiAgICAgICAgICAgICBkaXNwYXRj
aCg5KQogICAgICAgICBlbmQpCiBlbmQKQEAgLTEyMjUsNyArMTIzMiw3IEBAIG1hY3JvIHN0cnVj
dHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKIC5sb29wOgog
ICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIHByb3RvQ2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxs
XSwgb2xkU3RydWN0dXJlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Byb3RvQ2Vs
bF0sIG9sZFN0cnVjdHVyZQogICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCAub3BQ
dXRCeUlkU2xvdwogICAgIGFkZHAgNCwgc2NyYXRjaAogICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKQEAgLTEy
NTIsNyArMTI1OSw3IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBsb2FkaSA4W1BDXSwgdDIKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0
MgogICAgIGxvYWRwIDE2W1BDXSwgdDMKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkKICAg
ICBsb2FkaSAxMltQQ10sIHQzCkBAIC0xMzM4LDcgKzEzNDUsNyBAQCBfbGxpbnRfb3BfZ2V0X2J5
X3BuYW1lOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MiwgLm9wR2V0QnlQbmFtZVNsb3cpCiAgICAgbG9hZGkgMjBbUENdLCB0MAogICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDAKICAgICBi
cG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAu
b3BHZXRCeVBuYW1lU2xvdwogICAgIGxvYWRpIDI0W1BDXSwgdDAKICAgICBsb2FkaSBbY2ZyLCB0
MCwgOF0sIHQwCkBAIC0xMzgxLDcgKzEzODgsNyBAQCBtYWNybyBwdXRCeVZhbChob2xlQ2hlY2ss
IHNsb3dQYXRoKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDAKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5
VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFdLCB0MgogICAgIGxvYWRwIDE2W1BDXSwgdDMKICAg
ICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MCkKICAgICBsb2FkaSA4W1BDXSwgdDAKQEAgLTE0OTMs
NyArMTUwMCw3IEBAIG1hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQotICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgY2VsbEhhbmRsZXIodDIsIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQog
CkBAIC0xNjI0LDcgKzE2MzEsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAg
Q29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDBd
LCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1
ZVt0MF0sIHQwCkBAIC0xNjY4LDkgKzE2NzUsOSBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxs
KCkKICAgICAgICAgbmVnaSB0MwogICAgICAgICBiaW5lcSBUaGlzQXJndW1lbnRPZmZzZXQgKyBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0sIENlbGxUYWcsIC5kb25lCiAgICAgICAgIGxvYWRpIFRoaXNB
cmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCi0gICAgICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgICAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDBdLCB0MAogICAgICAgICBsb2FkcCAyNFtQQ10sIHQxCi0gICAgICAgIHN0
b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QxXQorICAgICAgICBz
dG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW3QxXQogICAgIC5k
b25lOgogICAgIGVuZAogZW5kCkBAIC0xNzM1LDcgKzE3NDIsNyBAQCBfbGxpbnRfb3BfcmV0X29i
amVjdF9vcl90aGlzOgogICAgIGxvYWRpIDRbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVj
dE9yVGhpc05vdE9iamVjdAogICAgIGRvUmV0dXJuKCkKIApAQCAtMTc1MSw3ICsxNzU4LDcgQEAg
X2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAgICBsb2FkaSA0W1BDXSwgdDMKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRv
UHJpbWl0aXZlSXNJbW0KLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCkBAIC0xNzgwLDcgKzE3ODcsNyBAQCBfbGxpbnRfb3BfbmV4dF9w
bmFtZToKICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBsb2Fk
aSA4W1BDXSwgdDMKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwotICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAgIGxv
YWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNzg4LDcgKzE3OTUsNyBA
QCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoK
ICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFn
LCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDFdLCB0MgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQxCiAgICAgYnBuZXEgdDEs
IFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBhZGRwIDQsIHQwCiAgICAgYnRwbnogW3QwXSwg
Lm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCkBAIC0yMDYwLDcgKzIwNjcsNyBAQCBtYWNy
byBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKG9wZXJhbmQsIHNsCiAgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgdDAKICAgICBsb2Fk
cEZyb21JbnN0cnVjdGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIHNsb3dQYXRoCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEs
IHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJl
dmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDI5IEBAIG1hY3Jv
IHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAgICBlbmQKIGVuZAogCittYWNy
byBsb2FkU3RydWN0dXJlKGNlbGwsIHN0cnVjdHVyZSkKK2VuZAorCittYWNybyBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBzY3JhdGNoCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3NjcmF0Y2hdLCBz
Y3JhdGNoCisgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBT
dHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZGkgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBbc2NyYXRjaCwg
c3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZUFuZENs
b2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFZNOjpoZWFw
ICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtj
ZWxsXSwgY2VsbAorICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2Vu
ZAorCittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gpCisgICAgbG9hZHEgU3RydWN0dXJlOjptX3N0cnVjdHVyZUlEW3N0cnVjdHVyZV0sIHNj
cmF0Y2gKKyAgICBzdG9yZXEgc2NyYXRjaCwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCitl
bmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtMzg1LDEwICs0
MDgsMTAgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
Lm9wVG9UaGlzU2xvdwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAg
IGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBGaW5h
bE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0s
IEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2Ny
YXRjaCh0MCwgdDEsIHQyKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQotICAgIGJw
bmVxIHQwLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGJwbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xv
dwogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC00NjksMTEgKzQ5MiwxMSBA
QCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
MiwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNr
LCAuaW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAg
YnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpT
Q2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkCiAgICAgbW92ZSAwLCB0MAogICAgIGptcCAuZG9uZQogLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCiAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAs
IHQwCkBAIC04MDAsOCArODIzLDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNs
b3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0NlbGw6
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0lu
c3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgpA
QCAtODEzLDI0ICs4MzUsMjMgQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCiAgICAgbG9hZGlzRnJvbUluc3Ry
dWN0aW9uKDMsIHQwKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNs
b3cKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9m
U2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbCh0MCwgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQogICAgIAogICAgICMgUmVn
aXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAog
Lm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQy
Ci0gICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCisgICAgbG9hZFN0cnVj
dHVyZUFuZENsb2JiZXJGaXJzdEFyZyh0MiwgdDMpCisgICAgbG9hZHEgU3RydWN0dXJlOjptX3By
b3RvdHlwZVt0M10sIHQyCiAgICAgYnFlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCiAgICAg
YnRxeiB0MiwgdGFnTWFzaywgLm9wSW5zdGFuY2VvZkxvb3AKIAogICAgIG1vdmUgMCwgdDAKIC5v
cEluc3RhbmNlb2ZEb25lOgogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MykKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQzLCA4XQogICAgIGRpc3Bh
dGNoKDQpCiAKQEAgLTg1MCwxNyArODcxLDE3IEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAg
ICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNVbmRlZmlu
ZWRDZWxsOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0Ym56
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0NlbGw6
Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZAogICAgIG1vdmUgVmFsdWVGYWxzZSwgdDEKICAgICBzdG9yZXEgdDEsIFtjZnIsIHQyLCA4
XQogICAgIGRpc3BhdGNoKDMpCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKKyAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKLSAgICBjcGVx
IFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MSwgdDMKLSAgICBvcnEgVmFsdWVGYWxz
ZSwgdDMKLSAgICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQorICAgIGNwZXEgU3RydWN0dXJlOjpt
X2dsb2JhbE9iamVjdFt0M10sIHQxLCB0MAorICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAorICAgIHN0
b3JlcSB0MCwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIAogCkBAIC04OTMsOCArOTE0
LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgYnRxbnogdDAsIHRh
Z01hc2ssIC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAotICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmlu
Z1R5cGUsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0
MiwgOF0KICAgICBkaXNwYXRjaCgzKQpAQCAtOTQ2LDE0ICs5NjYsMTUgQEAgbWFjcm8gZ2V0QnlJ
ZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3
IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAogICAgICMg
d2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMiwgdDApCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwodDAsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oNSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0Miwg
dDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIsIHQxLCAu
b3BHZXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDMsCiAgICAg
ICAgIHQwLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAg
ICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwor
ICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQyKQogICAgICAgICAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgICAgICAgICAgbG9hZHEgW3Byb3BlcnR5U3Rv
cmFnZSwgdDJdLCBzY3JhdGNoCiAgICAgICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW2NmciwgdDEs
IDhdCkBAIC05NzksNyArMTAwMCw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0
LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEFycmF5
TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBt
b3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQogICAgIGJ0aXogdDIsIElz
QXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVN
YXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTEwMTYsMTUgKzEwMzcsMTYgQEAgX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3Jh
Z2UpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MykKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQotICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigzLCB0MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKKyAgICBicG5lcSB0MiwgdDEsIC5vcFB1dEJ5
SWRTbG93CiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0MCwKICAgICAgICAgdDMs
CiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgICAg
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCisgICAgICAgICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMywgdDIpCiAgICAgICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCBzY3JhdGNoKQogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQwKQogICAgICAgICAgICAgc3Rv
cmVxIHNjcmF0Y2gsIFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQpAQCAtMTA0OSw5ICsxMDcxLDEwIEBA
IG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKKyAgICBicG5lcSB0MiwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIHQyKQogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigzLCB0MikKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAg
ICAgICAgdDAsCkBAIC0xMDYyLDE1ICsxMDg1LDE1IEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9u
KGFkZGl0aW9uYWxDaGVja3MKICAgICAgICAgICAgIHdyaXRlQmFycmllcih0MSkKICAgICAgICAg
ICAgIHN0b3JlcSB0MSwgW3QzXQogICAgICAgICAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwg
dDEpCi0gICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAg
ICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyh0MCwgdDEsIHQyKQogICAgICAgICAg
ICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIG5vQWRkaXRpb25hbENo
ZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBub0FkZGl0aW9uYWxDaGVja3Mob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBzdHJ1Y3R1cmVDaGFp
bkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNr
cyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3Ig
dGhlIHByb3RvCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywgc2NyYXRjaCkKICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCkBAIC0xMDc5LDcgKzExMDIsOCBA
QCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsCiAgICAgYnFlcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmRvbmUKIC5sb29w
OgogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgcHJvdG9D
ZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1
cmUKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHByb3RvQ2VsbCwgc2NyYXRj
aDIpCisgICAgbW92ZSBzY3JhdGNoMiwgb2xkU3RydWN0dXJlCiAgICAgYnBuZXEgb2xkU3RydWN0
dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA4LCBzY3JhdGNoCiAgICAg
YnFuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBWYWx1ZU51bGwsIC5s
b29wCkBAIC0xMTA2LDggKzExMzAsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQs
IHQzKQorICAgIG1vdmUgdDAsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJ
bnQzMih0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTExOTIsNyArMTIxNiw3IEBAIF9sbGlu
dF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQw
LCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2Fk
cSBbY2ZyLCB0MywgOF0sIHQxCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCiAgICAgYnBuZXEgdDIs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QxXSwgLm9wR2V0QnlQ
bmFtZVNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMpCiAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKQEAgLTEyMzQsOCArMTI1OCw4IEBAIG1hY3JvIHB1
dEJ5VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bCh0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDIKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MykKKyAgICBtb3ZlIHQxLCB0
MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIodDAsIHQzLCAub3BQdXRC
eVZhbFNsb3cpCkBAIC0xMzQ0LDggKzEzNjgsOCBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRs
ZXIsIGltbWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgY2VsbEhhbmRsZXIodDIsIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBjZWxsSGFuZGxlcih0Miwg
SlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQogCiAudGFyZ2V0
OgpAQCAtMTQ3Nyw4ICsxNTAxLDcgQEAgX2xsaW50X29wX3N3aXRjaF9jaGFyOgogICAgIGxvYWRw
IENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgdGFnTWFzaywgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0s
IHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGJibmVxIEpTQ2Vs
bDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAg
YmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QxXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDFdLCB0MAogICAgIGJ0cHogIHQwLCAub3BT
d2l0Y2hPblJvcGUKQEAgLTE1MjIsOSArMTU0NSw5IEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNh
bGwoKQogICAgICAgICBuZWdwIHQzCiAgICAgICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldFtj
ZnIsIHQzLCA4XSwgdDAKICAgICAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25lCi0gICAgICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAogICAgICAgICBsb2FkcEZyb21JbnN0
cnVjdGlvbig2LCB0MSkKLSAgICAgICAgc3RvcmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNl
ZW5TdHJ1Y3R1cmVbdDFdCisgICAgICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQzCisgICAgICAgIHN0b3JlaSB0MywgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJl
SURbdDFdCiAgICAgLmRvbmU6CiAgICAgZW5kCiBlbmQKQEAgLTE1ODcsOCArMTYxMCw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQogICAgIGJ0cW56IHQwLCB0
YWdNYXNrLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAor
ICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdAogICAgIGRvUmV0dXJuKCkKIAogLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
OgpAQCAtMTYwMyw4ICsxNjI1LDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVT
bG93Q2FzZQorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZQogLm9wVG9QcmltaXRpdmVJc0ltbToKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDMpCkBAIC0xNjM0LDcgKzE2NTUsNyBAQCBfbGxpbnRf
b3BfbmV4dF9wbmFtZToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDMpCiAgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDMpCiAgICAgbG9hZHEgW2NmciwgdDMsIDhdLCB0MwotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MywgdDEsIHQwKQogICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2Nh
Y2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MApAQCAtMTY0Miw3ICsxNjYzLDcgQEAgX2xs
aW50X29wX25leHRfcG5hbWU6CiAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CiAgICAg
YnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgVmFsdWVOdWxsLCAub3BOZXh0UG5hbWVT
bG93CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0MV0sIHQyCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQyLCB0MSwgdDMpCiAgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBh
ZGRwIDgsIHQwCiAgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
CkBAIC0xODcxLDggKzE4OTIsOSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKIG1hY3JvIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1BhdGgpCiAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIHNsb3dQ
YXRoCisgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCiAKIG1hY3JvIGdldFByb3BlcnR5
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjU1LDEz
ICsyNTUsMTQgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNsb3dQYXRoKQogICAgICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gYXJyYXlQcm9maWxlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgcHJv
ZmlsZSwgc2NyYXRjaCkKLSAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGlu
Z1R5cGUKLSAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUK
K21hY3JvIGFycmF5UHJvZmlsZShjZWxsQW5kSW5kZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNo
KQorICAgIGNvbnN0IGNlbGwgPSBjZWxsQW5kSW5kZXhpbmdUeXBlCisgICAgY29uc3QgaW5kZXhp
bmdUeXBlID0gY2VsbEFuZEluZGV4aW5nVHlwZSAKICAgICBpZiBWQUxVRV9QUk9GSUxFUgotICAg
ICAgICBzdG9yZXAgc3RydWN0dXJlLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVb
cHJvZmlsZV0KKyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzY3Jh
dGNoCisgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRFtwcm9maWxlXQogICAgIGVuZAotICAgIGxvYWRiIFN0cnVjdHVyZTo6bV9pbmRleGlu
Z1R5cGVbc3RydWN0dXJlXSwgaW5kZXhpbmdUeXBlCisgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4
aW5nVHlwZVtjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAogbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VChpbmNyZW1lbnQsIGFjdGlvbikKQEAgLTQwOSw4ICs0MTAsOCBAQCBtYWNybyBhbGxvY2F0ZUpT
T2JqZWN0KGFsbG9jYXRvciwgc3RydWN0CiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0
T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0KICAgICAKICAgICAgICAgIyBJbml0aWFsaXplIHRo
ZSBvYmplY3QuCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cmVzdWx0XQogICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Jlc3VsdF0K
KyAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8ocmVzdWx0LCBzdHJ1Y3R1cmUsIHNj
cmF0Y2gxKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzEx
Myw3IEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWYKICAgICBtX292
ZXJyb2RlQ2FsbGVyID0gdHJ1ZTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRvcjsK
ICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihnbG9iYWxPYmplY3QoKS0+dGhy
b3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIodm0pLCBEb250RW51bSB8IERvbnREZWxldGUgfCBBY2Nl
c3Nvcik7Ci0gICAgbWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgbWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPmNhbGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCiB2b2lkIEFyZ3VtZW50
czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlm
CiAgICAgbV9vdmVycm9kZUNhbGxlZSA9IHRydWU7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRl
c2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3IoZ2xvYmFsT2Jq
ZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZtKSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgQWNjZXNzb3IpOwotICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRo
aXMsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgZGVzY3JpcHRvciwgZmFsc2UpOwor
ICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVj
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAogYm9v
bCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lv
biAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgeyAKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQXJndW1lbnRzVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZk51bUFyZ3VtZW50cygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihB
cmd1bWVudHMsIG1fbnVtQXJndW1lbnRzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIEpTVmFsdWUgZ2V0UHJvcGVydHkoRXhl
Y1N0YXRlKiBleAogc3RhdGljIHZvaWQgcHV0UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogb2JqLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQogewog
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwotICAgIG9iai0+bWV0aG9kVGFibGUoKS0+cHV0KG9i
aiwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgb2JqLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+cHV0KG9iaiwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7
CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5k
KEV4ZWNTdGF0ZSogZXhlYywgaW50IGFyZ3VtZW50LCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVk
IHVuZGVmaW5lZFZhbHVlID0gMCkKQEAgLTIxNiwxNiArMjE2LDE2IEBAIHZvaWQgc2hpZnQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogdGgKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBz
bG90LmdldFZhbHVlKGV4ZWMsIGZyb20pOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsK
KyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2Ug
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgdG8pKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7
CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aDsgayA+IGxlbmd0aCAtIGNvdW50OyAt
LWspIHsKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEpKSB7CisgICAgICAgIGlmICghdGhpc09iai0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBrIC0gMSkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTI2MCw4ICsyNjAsOCBAQCB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogCiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc2xvdC5nZXRWYWx1
ZShleGVjLCBmcm9tKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCB0bykpIHsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8pKSB7CiAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODQsMTEgKzI4NCwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAKICAgICAvLyAzLiBJ
ZiBJc0NhbGxhYmxlKGZ1bmMpIGlzIGZhbHNlLCB0aGVuIGxldCBmdW5jIGJlIHRoZSBzdGFuZGFy
ZCBidWlsdC1pbiBtZXRob2QgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAoMTUuMi40LjIpLgog
ICAgIGlmICghZnVuY3Rpb24uaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3Qg
IiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2Jq
ZWN0KSwgIl0iKSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7
CiAKICAgICAvLyA0LiBSZXR1cm4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0NhbGxdXSBp
bnRlcm5hbCBtZXRob2Qgb2YgZnVuYyBwcm92aWRpbmcgYXJyYXkgYXMgdGhlIHRoaXMgdmFsdWUg
YW5kIGFuIGVtcHR5IGFyZ3VtZW50cyBsaXN0LgogICAgIGlmICghaXNKU0FycmF5KHRoaXNPYmpl
Y3QpIHx8IGNhbGxUeXBlICE9IENhbGxUeXBlSG9zdCB8fCBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rp
b24gIT0gYXJyYXlQcm90b0Z1bmNKb2luKQpAQCAtNDcyLDcgKzQ3Miw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmVzdWx0ID0gdGhpc09iai0+
Z2V0KGV4ZWMsIGxlbmd0aCAtIDEpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAg
ICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgeworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywg
bGVuZ3RoIC0gMSkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CkBAIC00OTksMTEgKzQ5
OSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgZm9y
ICh1bnNpZ25lZCBuID0gMDsgbiA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgbisrKSB7CiAgICAg
ICAgIC8vIENoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93OyB3aGVyZSBzYWZlIHdlIGNhbiBkbyBh
IGZhc3QgcHV0IGJ5IGluZGV4LgogICAgICAgICBpZiAobGVuZ3RoICsgbiA+PSBsZW5ndGgpCi0g
ICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxlbmd0aCArIG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKKyAgICAg
ICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGxlbmd0aCArIG4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAg
ICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKGV4ZWMsIEpTVmFsdWUoc3RhdGljX2Nhc3Q8
aW50NjRfdD4obGVuZ3RoKSArIHN0YXRpY19jYXN0PGludDY0X3Q+KG4pKS50b1dURlN0cmluZyhl
eGVjKSk7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iaiwg
ZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgc2xvdCk7Cisg
ICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmos
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHNsb3QpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01MzIsMTkgKzUzMiwx
OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgICAgIGlmIChv
YmoyKSB7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIGssIG9iajIsIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgb2JqMiwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfSBlbHNl
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGspKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaykpIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG9iaikgewotICAgICAg
ICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBs
azEsIG9iaiwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsazEsIG9iaiwgdHJ1ZSk7CiAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09i
ai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxr
MSkpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsazEpKSB7CiAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfQpAQCAtNjY0LDE4ICs2NjQsMTggQEAgc3RhdGljIGJvb2wgcGVy
Zm9ybVNsb3dTb3J0KEV4ZWNTdGF0ZSogZQogICAgICAgICAvLyBTd2FwIHRoZW1pbiBhbmQgaQog
ICAgICAgICBpZiAodGhlbWluID4gaSkgewogICAgICAgICAgICAgaWYgKG1pbk9iaikgewotICAg
ICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgaSwgbWluT2JqLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpLCBtaW5PYmosIHRy
dWUpOwogICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpc09i
ai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGkp
KSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGkpKSB7CiAgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGlPYmopIHsKLSAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRoZW1pbiwgaU9iaiwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgdGhlbWluLCBpT2JqLCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4pKSB7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIHRoZW1pbikpIHsKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC03MDksNyArNzA5LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIFByb3BlcnR5TmFtZUFycmF5IG5h
bWVBcnJheShleGVjKTsKLSAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5h
bWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldFByb3BlcnR5TmFtZXMo
dGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAKQEAgLTc0MCw3ICs3NDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIGlmIChpbmRleCA8IGZsYXRBcnJheS0+
bGVuZ3RoKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGluZGV4KSkgeworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaW5kZXgpKSB7CiAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgICAgIH0KQEAgLTc0OSw3ICs3NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GCiAgICAgZm9yIChzaXplX3QgaSA9IGZsYXRBcnJheS0+bGVuZ3RoKCk7IGkt
LTspIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9ySG9sZShmbGF0QXJyYXksIGV4ZWMs
IGkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZSk7Ci0gICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSwgdmFsdWUsIHRydWUpOwor
ICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
T2JqLCBleGVjLCBpLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgfQpAQCAtODA2LDcgKzgwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0YKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhZGRpdGlvbmFsQXJn
czsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrICsgMiksIHRy
dWUpOworICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCBrICsgYmVnaW4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAy
KSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQpAQCAtODMxLDcg
KzgzMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAg
IGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBuckFyZ3M7ICsraykgewotICAgICAgICB0aGlzT2Jq
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGspLCB0cnVlKTsKKyAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoayksIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogICAgIEJFR0lOKCk7CiAgICAgSlNWYWx1
ZSB2MSA9IE9QKDEpLmpzVmFsdWUoKTsKICAgICBpZiAodjEuaXNDZWxsKCkpCi0gICAgICAgIHBj
WzJdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgpLCBleGVjLT5jb2RlQmxvY2soKS0+b3duZXJF
eGVjdXRhYmxlKCksIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHBjWzJdLnUu
c3RydWN0dXJlLnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCB2
MS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAgICAgZWxzZQogICAgICAgICBwY1syXS51LnN0
cnVjdHVyZS5jbGVhcigpOwogICAgIFJFVFVSTih2MS50b1RoaXMoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGUpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9u
IDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRnVu
Y3Rpb25FeGVjdXRhYmxlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gRnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKKyAgICAgICAgcmV0dXJu
IHR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOwogICAgIH0KIAogICAgIGJvb2wgaXNI
b3N0RnVuY3Rpb24oKSBjb25zdApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JD
YWxsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7CiAKQEAgLTY3MCw3ICs2
NzAsNyBAQCBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlCiAKIGlubGlu
ZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlKQogewotICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpKSB7CisgICAgc3dpdGNoIChleGVjdXRhYmxlLT50eXBlKCkpIHsKICAgICBj
YXNlIEV2YWxFeGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpLT5jbGVhckNvZGUoKTsKICAgICBjYXNlIFByb2dyYW1FeGVjdXRh
YmxlVHlwZToKQEAgLTY4NCw3ICs2ODQsNyBAQCBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6
Y2xlYXJDb2RlVmlyCiAKIGlubGluZSB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxz
KCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAg
IHN3aXRjaCAodHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAgICAg
IHJldHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPih0aGlzKS0+dW5saW5rQ2FsbHMoKTsKICAg
ICBjYXNlIFByb2dyYW1FeGVjdXRhYmxlVHlwZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBKU1ZhbHVlIGNhbGxHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgQ2FsbERhdGEgY2FsbERh
dGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXItPm1ldGhvZFRhYmxlKCktPmdldENh
bGxEYXRhKGdldHRlciwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0dGVy
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7
CiAgICAgcmV0dXJuIGNhbGwoZXhlYywgZ2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJhc2Us
IEFyZ0xpc3QoKSk7CiB9CiAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBjYWxsU2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZQogICAgIGFyZ3MuYXBwZW5kKHZhbHVlKTsKIAogICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gc2V0dGVyLT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IHNldHRlci0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldENhbGxEYXRhKHNldHRlciwg
Y2FsbERhdGEpOwogICAgIGNhbGwoZXhlYywgc2V0dGVyLCBjYWxsVHlwZSwgY2FsbERhdGEsIGJh
c2UsIGFyZ3MpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0
aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3
dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTcyLDYgKzczLDcgQEAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQogI2lmbmRlZiBOREVCVUcKICAg
ICBEaXNhbGxvd0dDOjppbml0aWFsaXplKCk7CiAjZW5kaWYKKyAgICBWTTo6aW5pdGlhbGl6ZSgp
OwogfQogCiB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzks
OCArMjM5LDggQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogewog
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGVuc3VyZUFycmF5U3RvcmFnZSh2bSk7CiAgICAg
QnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKTsKLSAgICB1bnNpZ25l
ZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0g
ICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsK
KyAgICB1bnNpZ25lZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUodm0pLT5v
dXRPZkxpbmVTaXplKCk7CiAKICAgICAvLyBJZiBub3QsIHdlIHNob3VsZCBoYXZlIGhhbmRsZWQg
dGhpcyBvbiB0aGUgZmFzdCBwYXRoLgogICAgIEFTU0VSVCghYWRkVG9Gcm9udCB8fCBjb3VudCA+
IHN0b3JhZ2UtPm1faW5kZXhCaWFzKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiAgICAgdW5zaWduZWQgbmV3U3RvcmFnZUNhcGFj
aXR5OwogICAgIC8vIElmIHRoZSBjdXJyZW50IHN0b3JhZ2UgYXJyYXkgaXMgc3VmZmljaWVudGx5
IGxhcmdlIChidXQgbm90IHRvbyBsYXJnZSEpIHRoZW4ganVzdCBrZWVwIHVzaW5nIGl0LgogICAg
IGlmIChjdXJyZW50Q2FwYWNpdHkgPiBkZXNpcmVkQ2FwYWNpdHkgJiYgaXNEZW5zZUVub3VnaEZv
clZlY3RvcihjdXJyZW50Q2FwYWNpdHksIHJlcXVpcmVkVmVjdG9yTGVuZ3RoKSkgewotICAgICAg
ICBuZXdBbGxvY0Jhc2UgPSBidXR0ZXJmbHktPmJhc2Uoc3RydWN0dXJlKCkpOworICAgICAgICBu
ZXdBbGxvY0Jhc2UgPSBidXR0ZXJmbHktPmJhc2Uoc3RydWN0dXJlKHZtKSk7CiAgICAgICAgIG5l
d1N0b3JhZ2VDYXBhY2l0eSA9IGN1cnJlbnRDYXBhY2l0eTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzaXplX3QgbmV3U2l6ZSA9IEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNp
dHksIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihkZXNpcmVkQ2FwYWNpdHkpKTsKQEAgLTI5
OCw3ICsyOTgsNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiAg
ICAgICAgIC8vIEF0b21pYyBkZWNheSwgKyB0aGUgcG9zdC1jYXBhY2l0eSBjYW5ub3QgYmUgZ3Jl
YXRlciB0aGFuIHdoYXQgaXMgYXZhaWxhYmxlLgogICAgICAgICBwb3N0Q2FwYWNpdHkgPSBtaW4o
KHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpIC0gbGVuZ3RoKSA+PiAxLCBuZXdTdG9yYWdlQ2FwYWNp
dHkgLSByZXF1aXJlZFZlY3Rvckxlbmd0aCk7CiAgICAgICAgIC8vIElmIHdlJ3JlIG1vdmluZyBj
b250ZW50cyB3aXRoaW4gdGhlIHNhbWUgYWxsb2NhdGlvbiwgdGhlIHBvc3QtY2FwYWNpdHkgaXMg
YmVpbmcgcmVkdWNlZC4KLSAgICAgICAgQVNTRVJUKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHkt
PmJhc2Uoc3RydWN0dXJlKCkpIHx8IHBvc3RDYXBhY2l0eSA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0
aCgpIC0gbGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHkt
PmJhc2Uoc3RydWN0dXJlKHZtKSkgfHwgcG9zdENhcGFjaXR5IDwgc3RvcmFnZS0+dmVjdG9yTGVu
Z3RoKCkgLSBsZW5ndGgpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9
IHJlcXVpcmVkVmVjdG9yTGVuZ3RoICsgcG9zdENhcGFjaXR5OwpAQCAtMzEwLDcgKzMxMCw3IEBA
IGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICAgICAgQVNTRVJU
KGNvdW50ICsgdXNlZFZlY3Rvckxlbmd0aCA8PSBuZXdWZWN0b3JMZW5ndGgpOwogICAgICAgICBt
ZW1tb3ZlKG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yICsgY291bnQsIHN0
b3JhZ2UtPm1fdmVjdG9yLCBzaXplb2YoSlNWYWx1ZSkgKiB1c2VkVmVjdG9yTGVuZ3RoKTsKICAg
ICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlT
aXplLCBidXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlTaXplLCBzaXplb2Yo
SlNWYWx1ZSkgKiBwcm9wZXJ0eVNpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpICsgQXJyYXlT
dG9yYWdlOjpzaXplRm9yKDApKTsKLSAgICB9IGVsc2UgaWYgKChuZXdBbGxvY0Jhc2UgIT0gYnV0
dGVyZmx5LT5iYXNlKHN0cnVjdHVyZSgpKSkgfHwgKG5ld0luZGV4QmlhcyAhPSBzdG9yYWdlLT5t
X2luZGV4QmlhcykpIHsKKyAgICB9IGVsc2UgaWYgKChuZXdBbGxvY0Jhc2UgIT0gYnV0dGVyZmx5
LT5iYXNlKHN0cnVjdHVyZSh2bSkpKSB8fCAobmV3SW5kZXhCaWFzICE9IHN0b3JhZ2UtPm1faW5k
ZXhCaWFzKSkgewogICAgICAgICBtZW1tb3ZlKG5ld0J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdl
KCkgLSBwcm9wZXJ0eVNpemUsIGJ1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0
eVNpemUsIHNpemVvZihKU1ZhbHVlKSAqIHByb3BlcnR5U2l6ZSArIHNpemVvZihJbmRleGluZ0hl
YWRlcikgKyBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkpOwogICAgICAgICBtZW1tb3ZlKG5ld0J1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPm1fdmVjdG9yLCBzdG9yYWdlLT5tX3ZlY3Rvciwgc2l6
ZW9mKEpTVmFsdWUpICogdXNlZFZlY3Rvckxlbmd0aCk7CiAKQEAgLTM5Myw3ICszOTMsNyBAQCBi
b29sIEpTQXJyYXk6OnNldExlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCiAKIGJvb2wgSlNBcnJheTo6
c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbmV3TGVuZ3RoLCBib29sIHRocm93
RXhjZXB0aW9uKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAg
ICAgICAgaWYgKCFuZXdMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyMiw3
ICs0MjIsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsCiAgICAg
ICAgICAgICBlbnN1cmVMZW5ndGgoZXhlYy0+dm0oKSwgbmV3TGVuZ3RoKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAgIGlmIChpbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tID4gbmV3TGVuZ3RoOykKICAgICAgICAgICAg
ICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVj
U3RhdGUqIGV4ZWMsCiAKIEpTVmFsdWUgSlNBcnJheTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIHsK
LSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICAKQEAgLTUzOSw3ICs1MzksNyBAQCBKU1ZhbHVlIEpTQXJy
YXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiAvLyAgLSBwdXNoaW5nIHRvIGFuIGFycmF5IG9mIGxl
bmd0aCAyXjMyLTEgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9y
Lgogdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsK
LSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6IHsKICAgICAgICAgY3JlYXRl
SW5pdGlhbFVuZGVjaWRlZChleGVjLT52bSgpLCAwKTsKICAgICAgICAgLy8gRmFsbCB0aHJvdWdo
LgpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJB
WV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBl
eGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAg
ICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFs
aWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTg3LDcgKzU4Nyw3
IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAg
ICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgSlNBcnJheTo6
cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
aWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAg
ICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0
aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJh
bmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmEKIAogICAgICAgICAvLyBQdXNoaW5nIHRvIGFuIGFycmF5IG9mIGludmFsaWQgbGVu
Z3RoICgyXjMxLTEpIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBlcnJv
ci4KICAgICAgICAgaWYgKHN0b3JhZ2UtPmxlbmd0aCgpID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0g
ICAgICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2Ut
Pmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5sZW5ndGgoKSwgdmFsdWUsIHRy
dWUpOwogICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43IHN0ZXAgNiAmIDE1LjQuNS4x
IHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJy
b3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwpAQCAtNjc3LDcgKzY3Nyw3IEBAIGJv
b2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UKICAgICAKICAgICAvLyBJZiB0
aGUgYXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0
YXRlLAogICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUu
Ci0gICAgaWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGlu
U3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpKQorICAgIGlmIChvbGRMZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvciB8fCBpblNwYXJzZUluZGV4aW5nTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoaW5k
ZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIW9sZExlbmd0
aCkKQEAgLTc1MSw3ICs3NTEsNyBAQCBib29sIEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5k
ZXhpbmdUCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPiAwKTsKICAgICAKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKQEAgLTg0MywxMyArODQzLDE0IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhB
bnlJbmRleGluZ1QKIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgdW5zaGlmdCBjYW4gYmUgaGFuZGxl
ZCwgZmFsc2UgdG8gZmFsbGJhY2suICAgIAogYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWdu
ZWQgY291bnQsIEFycmF5U3RvcmFnZSogc3RvcmFnZSkKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0b3JhZ2UtPmxlbmd0aCgpOwogCiAgICAgUkVM
RUFTRV9BU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwogCiAgICAgLy8gSWYgdGhlIGFycmF5
IGNvbnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5vcm1hbCBzdGF0ZSwKICAg
ICAvLyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJvdG90eXBlLgotICAgIGlm
IChsZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBzdG9yYWdlLT5pblNw
YXJzZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpCisgICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IHN0
b3JhZ2UtPmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIG1vdmVGcm9udCA9ICFzdGFydElu
ZGV4IHx8IHN0YXJ0SW5kZXggPCBsZW5ndGggLyAyOwpAQCAtODU3LDcgKzg1OCw3IEBAIGJvb2wg
SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEKICAgICB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGggPSBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKTsKIAogICAgIGlmIChtb3ZlRnJvbnQgJiYg
c3RvcmFnZS0+bV9pbmRleEJpYXMgPj0gY291bnQpIHsKLSAgICAgICAgbV9idXR0ZXJmbHkgPSBz
dG9yYWdlLT5idXR0ZXJmbHkoKS0+dW5zaGlmdChzdHJ1Y3R1cmUoKSwgY291bnQpOworICAgICAg
ICBtX2J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT51bnNoaWZ0KHN0cnVjdHVyZSh2
bSksIGNvdW50KTsKICAgICAgICAgc3RvcmFnZSA9IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KTsKICAgICAgICAgc3RvcmFnZS0+bV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIHN0b3Jh
Z2UtPnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGggKyBjb3VudCk7CkBAIC04ODYsNyArODg3
LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpT
QXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAg
ICAgIC8vIFdlIGNvdWxkIGhhbmRsZSB0aGlzLiBCdXQgaXQgc2hvdWxkbid0IGV2ZXIgY29tZSB1
cCwgc28gd2Ugd29uJ3QuCkBAIC05OTUsMjAgKzk5NiwyMCBAQCBzdGF0aWMgaW50IGNvbXBhcmVC
eVN0cmluZ1BhaXJGb3JRU29ydChjCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUodmEtPnNl
Y29uZCwgdmItPnNlY29uZCk7CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5
cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpTQXJy
YXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVu
Y3Rpb24sIENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0g
ICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBpbmRleGluZ1R5cGUg
PT0gQXJyYXlXaXRoRG91YmxlIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1b3Vz
IHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOworICAgIEFTU0VSVChh
cnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBhcnJheUluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhEb3VibGUgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQ29udGln
dW91cyB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAg
IAogICAgIHVuc2lnbmVkIGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsKICAgICB1bnNpZ25l
ZCBuZXdSZWxldmFudExlbmd0aDsKLSAgICBjb21wYWN0Rm9yU29ydGluZzxpbmRleGluZ1R5cGU+
KAorICAgIGNvbXBhY3RGb3JTb3J0aW5nPGFycmF5SW5kZXhpbmdUeXBlPigKICAgICAgICAgbGVu
Z3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkLAogICAgICAgICBuZXdSZWxldmFudExlbmd0aCk7CiAg
ICAgCi0gICAgQ29udGlndW91c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8aW5kZXhpbmdU
eXBlPigpOworICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRhPGFycmF5
SW5kZXhpbmdUeXBlPigpOwogICAgIAotICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
QXJyYXlTdG9yYWdlICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgeworICAg
IGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlT
dG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlF
cnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTcsNyArMTAxOCw3IEBA
IHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGJvb2wgYWxsVmFsdWVzQXJlTnVtYmVycyA9IHRydWU7Ci0gICAgc3dpdGNo
IChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAg
Y2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAg
YnJlYWs7CkBAIC0xMDM5LDcgKzEwNDAsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVj
dG9yKEV4ZWNTdGF0CiAgICAgLy8gYWxzbyBkb24ndCByZXF1aXJlIG1lcmdlc29ydCdzIHN0YWJp
bGl0eSwgc2luY2UgdGhlcmUncyBubyB1c2VyIHZpc2libGUKICAgICAvLyBzaWRlLWVmZmVjdCBm
cm9tIHN3YXBwaW5nIHRoZSBvcmRlciBvZiBlcXVhbCBwcmltaXRpdmUgdmFsdWVzLgogICAgIGlu
dCAoKmNvbXBhcmUpKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0gICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBB
cnJheVdpdGhJbnQzMjoKICAgICAgICAgY29tcGFyZSA9IGNvbXBhcmVOdW1iZXJzRm9yUVNvcnRX
aXRoSW50MzI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2Miw3ICsxMDYzLDcgQEAgdm9pZCBKU0Fy
cmF5Ojpzb3J0TnVtZXJpYyhFeGVjU3RhdGUqIGV4ZQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJ
bmRleGluZ01vZGUoKSk7CiAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xMTE1LDcgKzExMTYsNyBAQCB0ZW1wbGF0
ZSA8PiBzdHJ1Y3QgQ29udGlndW91c1R5cGVBY2Nlc3NvCiB9OwogCiAKLXRlbXBsYXRlPEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgordGVtcGxhdGU8SW5k
ZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KIHZvaWQg
SlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIENvbnRpZ3VvdXNE
YXRhPFN0b3JhZ2VUeXBlPiBkYXRhLCB1bnNpZ25lZCByZWxldmFudExlbmd0aCkKIHsKICAgICBp
ZiAoIXJlbGV2YW50TGVuZ3RoKQpAQCAtMTEzOSwxMSArMTE0MCwxMSBAQCB2b2lkIEpTQXJyYXk6
OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgYm9vbCBpc1NvcnRpbmdQcmltaXRpdmVW
YWx1ZXMgPSB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxldmFudExlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29y
PGluZGV4aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7Ci0gICAgICAgIEFTU0VSVChpbmRl
eGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+
OjpnZXRBc1ZhbHVlKGRhdGEsIGkpOworICAgICAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUg
IT0gQXJyYXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAgQVNTRVJUKCF2
YWx1ZS5pc1VuZGVmaW5lZCgpKTsKICAgICAgICAgdmFsdWVzW2ldLmZpcnN0ID0gdmFsdWU7Ci0g
ICAgICAgIGlmIChpbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGluZGV4aW5nVHlw
ZSAhPSBBcnJheVdpdGhJbnQzMikKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlICE9IEFy
cmF5V2l0aERvdWJsZSAmJiBhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMikKICAg
ICAgICAgICAgIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IGlzU29ydGluZ1ByaW1pdGl2ZVZh
bHVlcyAmJiB2YWx1ZS5pc1ByaW1pdGl2ZSgpOwogICAgIH0KICAgICAgICAgCkBAIC0xMTc0LDcg
KzExNzUsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAg
CiAgICAgLy8gSWYgdGhlIHRvU3RyaW5nIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIGxlbmd0aCBvZiB0
aGUgYXJyYXkgb3IgdmVjdG9yIHN0b3JhZ2UsCiAgICAgLy8gaW5jcmVhc2UgdGhlIGxlbmd0aCB0
byBoYW5kbGUgdGhlIG9yaWduYWwgbnVtYmVyIG9mIGFjdHVhbCB2YWx1ZXMuCi0gICAgc3dpdGNo
IChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAg
Y2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICBjYXNl
IEFycmF5V2l0aENvbnRpZ3VvdXM6CkBAIC0xMTg0LDcgKzExODUsNyBAQCB2b2lkIEpTQXJyYXk6
OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3Jh
Z2U6CiAgICAgICAgIGlmIChhcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgPCByZWxldmFu
dExlbmd0aCkgewogICAgICAgICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwg
cmVsZXZhbnRMZW5ndGgpOwotICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRl
eGluZ1R5cGU+OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZl
Y3RvcigpKTsKKyAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGlu
Z1R5cGU+OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZlY3Rv
cigpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPmxlbmd0aCgpIDwg
cmVsZXZhbnRMZW5ndGgpCiAgICAgICAgICAgICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKHJl
bGV2YW50TGVuZ3RoKTsKQEAgLTExOTUsNyArMTE5Niw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENv
bXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlbGV2YW50TGVuZ3RoOyBpKyspCi0gICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8aW5k
ZXhpbmdUeXBlPjo6c2V0V2l0aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmly
c3QpOworICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5kZXhpbmdUeXBlPjo6
c2V0V2l0aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3QpOwogICAgIAog
ICAgIEhlYXA6OmhlYXAodGhpcyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMpOwogfQpAQCAt
MTIwNCw3ICsxMjA1LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMzNiwxMSArMTMzNywxMSBAQCBzdHJ1Y3QgQVZMVHJlZUFi
c3RyYWN0b3JGb3JBcnJheUNvbXBhcmUgCiAgICAgc3RhdGljIGhhbmRsZSBudWxsKCkgeyByZXR1
cm4gMHg3RkZGRkZGRjsgfQogfTsKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJh
eTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBD
YWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIEFTU0VS
VCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7Ci0gICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlw
ZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBl
eGNlcHRpb25zIHJhaXNlZCBpbiB0aGUgY29tcGFyZSBmdW5jdGlvbiBvciBpbiB0b051bWJlci4K
ICAgICAgICAgCkBAIC0xMzUwLDcgKzEzNTEsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3Io
RXhlY1N0YXRlKiBleGVjCiAgICAgaWYgKG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSA+IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0g
cmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBlPigpOworICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JM
ZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAgICB1bnNpZ25l
ZCBub2RlQ291bnQgPSB1c2VkVmVjdG9yTGVuZ3RoOwogICAgICAgICAKICAgICBpZiAoIW5vZGVD
b3VudCkKQEAgLTE0MTcsMTQgKzE0MTgsMTQgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4
ZWNTdGF0ZSogZXhlYwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkOyArK2kpIHsKICAgICAgICAg
QVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYg
KGluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIGJ1dHRlcmZs
eSgpLT5jb250aWd1b3VzRG91YmxlKClbaV0gPSB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWypp
dGVyXS52YWx1ZS5hc051bWJlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50
SW5kZXhpbmdEYXRhKClbaV0uc2V0KHZtLCB0aGlzLCB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVz
WyppdGVyXS52YWx1ZSk7CiAgICAgICAgICsraXRlcjsKICAgICB9CiAgICAgLy8gUHV0IHVuZGVm
aW5lZCB2YWx1ZXMgYmFjayBpbi4KLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5V2l0
aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBBU1NFUlQoZWxlbWVu
dHNUb0V4dHJhY3RUaHJlc2hvbGQgPT0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQpOwpAQCAt
MTQ0MCwxMyArMTQ0MSwxMyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBl
eGVjCiAgICAgLy8gRW5zdXJlIHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGFyZSB6
ZXJvZWQgb3V0LgogICAgIGZvciAodW5zaWduZWQgaSA9IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNo
b2xkOyBpIDwgY2xlYXJFbGVtZW50c1RocmVzaG9sZDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChp
IDwgYnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChpbmRleGlu
Z1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29u
dGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3Vy
cmVudEluZGV4aW5nRGF0YSgpW2ldLmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIGlmIChoYXNB
cnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoaGFzQXJy
YXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVt
VmFsdWVzSW5WZWN0b3IgPSBuZXdVc2VkVmVjdG9yTGVuZ3RoOwogfQogCkBAIC0xNDU0LDcgKzE0
NTUsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiB7CiAgICAg
QVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAg
ICAgIHJldHVybjsKQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xp
c3QoRXhlY1N0YXRlKiBleGUKICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+KiB2ZWN0b3I7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
cnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTU0OCw3ICsxNTQ5LDcg
QEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAgIHVuc2lnbmVk
IHZlY3RvckVuZDsKICAgICAKICAgICBBU1NFUlQobGVuZ3RoID09IHRoaXMtPmxlbmd0aCgpKTsK
LSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCkBAIC0xNjAzLDQwICsxNjA0LDQwIEBAIHZvaWQgSlNBcnJheTo6Y29weVRvQXJn
dW1lbnRzKEV4ZWNTdGF0ZSoKICAgICAgICAgY2FsbEZyYW1lLT5zZXRBcmd1bWVudChpLCBnZXQo
ZXhlYywgaSkpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgordGVt
cGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5Ojpjb21w
YWN0Rm9yU29ydGluZyh1bnNpZ25lZCYgbnVtRGVmaW5lZCwgdW5zaWduZWQmIG5ld1JlbGV2YW50
TGVuZ3RoKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7Ci0gICAgQVNT
RVJUKGluZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgIEFT
U0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAKLSAgICB1bnNpZ25l
ZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBlPigpOworICAg
IHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5n
VHlwZT4oKTsKICAgICAKICAgICBudW1EZWZpbmVkID0gMDsKICAgICB1bnNpZ25lZCBudW1VbmRl
ZmluZWQgPSAwOwogICAgICAgICAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IG15UmVsZXZhbnRM
ZW5ndGg7ICsrbnVtRGVmaW5lZCkgewogICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8IG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0
aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91
c0ludDMyKClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBBU1NFUlQodi5pc0ludDMyKCkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBB
cnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpW251bURlZmluZWRdOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAg
ICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZF0u
Z2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlw
ZT4oKVtudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8IHYuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbnVtRGVmaW5lZDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICBB
U1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdU
eXBlID09IEFycmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRl
cmZseS0+Y29udGlndW91c0ludDMyKClbaV0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjQ1LDcgKzE2NDYsNyBAQCB2b2lkIEpTQXJy
YXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+
Y29udGlndW91c0ludDMyKClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NTMsMjMgKzE2NTQsMjMgQEAgdm9pZCBKU0FycmF5
Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkKytdID0gdjsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5
cGU+KClbaV0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUlu
ZGV4aW5nVHlwZT4oKVtpXS5nZXQoKTsKICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgIGlm
ICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgKytudW1VbmRlZmluZWQ7CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8IG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGlu
ZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7Cisg
ICAgICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW251bURlZmlu
ZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KICAgICAgICAgCiAgICAgbmV3UmVsZXZhbnRMZW5ndGggPSBudW1EZWZpbmVkICsg
bnVtVW5kZWZpbmVkOwogICAgIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBl
KSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAgICAgCi0gICAg
c3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7
CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobnVtRGVmaW5lZCA9PSBuZXdSZWxldmFudExlbmd0aCk7CkBA
IC0xNjc4LDE5ICsxNjc5LDE5IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5z
aWduZWQKICAgICBkZWZhdWx0OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVk
OyBpIDwgbmV3UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgQVNTRVJUKGkgPCBt
X2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGlu
ZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIGluZGV4aW5nRGF0
YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3UmVsZXZhbnRMZW5n
dGg7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFy
cmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0
aERvdWJsZSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0g
PSBRTmFOOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdU
eXBlPigpW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGlu
Z1R5cGU+KClbaV0uY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGlu
ZGV4aW5nVHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUluZGV4aW5nVHlwZSkp
CiAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3UmVsZXZh
bnRMZW5ndGg7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQ1LDcgKzY0NSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENsYXMK
IAogaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRUNNQU1v
ZGUgZWNtYU1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1l
dGhvZFRhYmxlKCktPnRvVGhpcyhhc0NlbGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9UaGlzU2xv
d0Nhc2UoZXhlYywgZWNtYU1vZGUpOworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+dG9UaGlzKGFzQ2VsbCgpLCBleGVjLCBlY21hTW9kZSkg
OiB0b1RoaXNTbG93Q2FzZShleGVjLCBlY21hTW9kZSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNv
bnN0CkBAIC03MDAsNyArNzAwLDcgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0
ZSogZXhlYwogICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFi
bGUoKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAg
ICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1
dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUg
dmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCkBAIC03MDksNyArNzA5LDcgQEAgaW5saW5lIHZvaWQg
SlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5k
ZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2Vs
bCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgYXNDZWxs
KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpT
VmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKQEAgLTczMCw2ICs3MzAsNyBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjplcXVhbChFeGVjU3RhdGUqIGV4CiAKIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2MSwgSlNWYWx1ZSB2MikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGRvIHsK
ICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAg
IHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CkBAIC03NDQsMTMgKzc0NSwx
MyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoIXYyLmlzQ2VsbCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+
c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAg
ICAgIGlmICghdjEuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgcmV0dXJu
IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodjEuaXNP
YmplY3QoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0X3QpLCBq
c2NlbGxfaXNfZWlnaHRfYnl0ZXMpOwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEpTQ2VsbCk7CiAKIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAg
LTkwLDcgKzkxLDcgQEAgdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+
dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFs
dWUsIHNsb3QpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQo
dGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpT
Q2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTEwMSwxOSAr
MTAyLDE5IEBAIHZvaWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXgKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2Jq
ZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2
YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzaG91
bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmpl
Y3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qs
IGV4ZWMsIGlkZW50aWZpZXIpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIp
OworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOwogfQogCiBKU1Zh
bHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9k
ZSBlY21hTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgi
CiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRl
ICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5VHlw
ZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAtOTIsOSArOTQsMTUgQEAgcHVibGlj
OgogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgYm9vbCBp
c0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNUeXBlIHR5cGUoKSBjb25zdDsKKyAg
ICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7CisjaWZuZGVmIE5ERUJVRworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlU2xvdygpIGNvbnN0OworI2VuZGlmCiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUoKSBjb25zdDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZShWTSYpIGNvbnN0
OwogICAgIHZvaWQgc2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBjbGVh
clN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXJTdHJ1
Y3R1cmUoKSB7IG1fc3RydWN0dXJlSUQgPSAwOyB9CiAKICAgICBjb25zdCBjaGFyKiBjbGFzc05h
bWUoKTsKIApAQCAtMTIxLDYgKzEyOSw3IEBAIHB1YmxpYzoKICAgICAvLyBPYmplY3Qgb3BlcmF0
aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgogICAgIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhv
ZFRhYmxlKCkgY29uc3Q7CisgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikg
Y29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlRm9yRGVzdHJ1Y3Rpb24o
KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CkBAIC0xMzUsMjAgKzE0NCwyNiBAQCBwdWJsaWM6CiAKICAg
ICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsK
IAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZUlEKTsKICAgICB9CiAKLSAgICB2b2lkKiBzdHJ1Y3R1
cmVBZGRyZXNzKCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NPZmZzZXQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0NlbGwsIG1fZmxhZ3MpOwogICAgIH0KLSAgICAgICAgCi0jaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCi0gICAgU3RydWN0dXJlKiB1bnZhbGlkYXRlZFN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCk7IH0KLSNlbmRpZgotICAgICAgICAK
KworICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3R5cGUpOworICAgIH0KKworICAg
IHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdUeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX2luZGV4aW5nVHlwZSk7CisgICAgfQorCiAg
ICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5v
dFR5cGVkQXJyYXk7CiBwcm90ZWN0ZWQ6CiAKQEAgLTE3MCw4ICsxODUsMTIgQEAgcHJvdGVjdGVk
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0g
ICAgICAgIAotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAg
U3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5
cGU7CisgICAgSlNUeXBlIG1fdHlwZTsKKyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1f
ZmxhZ3M7CisgICAgdWludDhfdCBtX3VudXNlZDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRv
LCB0eXBlbmFtZSBGcm9tPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miwx
MSBAQCBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUCiAgICAgQVNTRVJU
KCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0aGlzLCBz
dHJ1Y3R1cmUpCitpbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICA6IG1fc3RydWN0dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV9pbmRleGlu
Z1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKKyAgICAsIG1fdHlwZShzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpKQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
aW5saW5lVHlwZUZsYWdzKCkpCiB7CiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkp
OwogfQpAQCAtNTYsNyArNTksNyBAQCBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9u
KFZNJiB2CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYKLSAgICBBU1NFUlQo
bV9zdHJ1Y3R1cmUpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZUlEKTsKIH0KIAogaW5saW5lIHZv
aWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZykKQEAgLTY0LDIzICs2Nyw1NCBAQCBpbmxpbmUgdm9pZCBKU0Nl
bGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAg
QVNTRVJUKHZtLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwogICAgIHZtLnNldEluaXRpYWxpemlu
Z09iamVjdENsYXNzKDApOwotICAgIGlmIChzdHJ1Y3R1cmUpCisgICAgaWYgKHN0cnVjdHVyZSkg
eworI2VuZGlmCisgICAgICAgIG1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAg
ICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKKyAgICAgICAg
bV90eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKTsKKyAgICAgICAgbV9mbGFncyA9
IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyNpZiBFTkFCTEUoR0Nf
VkFMSURBVElPTikKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAjZW5kaWYK
LSAgICAgICAgbV9zdHJ1Y3R1cmUuc2V0RWFybHlWYWx1ZSh2bSwgdGhpcywgc3RydWN0dXJlKTsK
ICAgICAvLyBWZXJ5IGZpcnN0IHNldCBvZiBhbGxvY2F0aW9ucyB3b24ndCBoYXZlIGEgcmVhbCBz
dHJ1Y3R1cmUuCi0gICAgQVNTRVJUKG1fc3RydWN0dXJlIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1
cmUpOworICAgIEFTU0VSVChtX3N0cnVjdHVyZUlEIHx8ICF2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUp
OworfQorCitpbmxpbmUgSlNUeXBlIEpTQ2VsbDo6dHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHlwZTsKK30KKworaW5saW5lIEluZGV4aW5nVHlwZSBKU0NlbGw6OmluZGV4aW5nVHlwZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCo+
KHRoaXMpICYgMHgwMDAwMDBmZjAwMDAwMDAwKSA+PiAzMjsKIH0KIAogaW5saW5lIFN0cnVjdHVy
ZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS5n
ZXQoKTsKKyAgICByZXR1cm4gSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdl
dChtX3N0cnVjdHVyZUlEKTsKK30KKworI2lmbmRlZiBOREVCVUcKK2lubGluZSBTdHJ1Y3R1cmUq
IEpTQ2VsbDo6c3RydWN0dXJlU2xvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEhlYXA6OmhlYXAo
dGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7Cit9CisjZW5kaWYK
KworaW5saW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAorewor
ICAgIHJldHVybiB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7
CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxs
KTsKIAotICAgIHZpc2l0b3IuYXBwZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkUG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
QEAgLTExNiwzNyArMTUwLDQxIEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCog
Y2VsbCkKIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmpl
Y3QobV90eXBlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBl
OworICAgIHJldHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlND
ZWxsOjppc0dldHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVybiBtX3R5cGUg
PT0gR2V0dGVyU2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IFBy
b3h5VHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IFByb3h5VHlwZTsKIH0KIAogaW5saW5lIGJv
b2wgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOworICAgIHJl
dHVybiBtX3R5cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlND
ZWxsOjpzZXRTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBB
U1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSA9PSB0
aGlzLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwot
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKSk7Ci0gICAgQVNTRVJUKCFtX3N0cnVjdHVyZQotICAgICAgICB8fCBtX3N0cnVjdHVyZS0+
dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAgICAgICB8fCBt
X3N0cnVjdHVyZS5nZXQoKSA9PSBzdHJ1Y3R1cmUpOwotICAgIG1fc3RydWN0dXJlLnNldCh2bSwg
dGhpcywgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0
aGlzLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOworICAgIEFTU0VSVCghdGhpcy0+c3RydWN0
dXJlKCkKKyAgICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50
U2V0SGFzQmVlbkludmFsaWRhdGVkKCkKKyAgICAgICAgfHwgSGVhcDo6aGVhcCh0aGlzKS0+c3Ry
dWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVyZSk7CisgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIodGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3N0cnVjdHVyZUlE
ID0gc3RydWN0dXJlLT5pZCgpOworICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
aW5saW5lVHlwZUZsYWdzKCk7CisgICAgbV90eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKTsKKyAgICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiB9
CiAKIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZUZvckRlc3Ry
dWN0aW9uKCkgY29uc3QKQEAgLTE1NiwxMCArMTk0LDIwIEBAIGlubGluZSBjb25zdCBNZXRob2RU
YWJsZSogSlNDZWxsOjptZXRob2QKIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6
Om1ldGhvZFRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJl
ID0gbV9zdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpcy0+c3RydWN0dXJlKCk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0
cnVjdHVyZS0+c3RydWN0dXJlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1
cmUgPT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOwogCi0gICAgcmV0dXJuICZjbGFzc0lu
Zm8oKS0+bWV0aG9kVGFibGU7CisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZTsKK30KKworaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhv
ZFRhYmxlKFZNJiB2bSkgY29uc3QKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMt
PnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVj
dHVyZS0+c3RydWN0dXJlKCkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUg
PT0gcm9vdFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOworCisgICAgcmV0dXJuICZzdHJ1Y3R1cmUt
PmNsYXNzSW5mbygpLT5tZXRob2RUYWJsZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhl
cml0cyhjb25zdCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CkBAIC0xNzMsMTAgKzIyMSwxMSBAQCBp
bmxpbmUgYm9vbCBKU0NlbGw6OmluaGVyaXRzKGNvbnN0IENsYXNzCiAvLyBjYXNlIGJ5IGNoZWNr
aW5nIHdoZXRoZXIgdGhlIGhhc2ggaGFzIHlldCBiZWVuIHNldCBmb3IgdGhpcyBzdHJpbmcuCiBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgSlNDZWxsOjpmYXN0R2V0T3duUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlKCktPmhh
c0dldHRlclNldHRlclByb3BlcnRpZXMoKSkgeworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpcy0+c3RydWN0dXJlKCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90KCkgJiYgIXN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJv
cGVydGllcygpKSB7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG5hbWUuaW1wbCgp
LT5oYXNIYXNoKCkKLSAgICAgICAgICAgID8gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBJ
ZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQotICAgICAgICAgICAgOiBzdHJ1Y3R1cmUoKS0+Z2V0KGV4
ZWMtPnZtKCksIG5hbWUpOworICAgICAgICAgICAgPyBzdHJ1Y3R1cmUtPmdldChleGVjLT52bSgp
LCBJZGVudGlmaWVyKGV4ZWMsIG5hbWUpKQorICAgICAgICAgICAgOiBzdHJ1Y3R1cmUtPmdldChl
eGVjLT52bSgpLCBuYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KQog
ICAgICAgICAgICAgcmV0dXJuIGFzT2JqZWN0KHRoaXMpLT5sb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpLT5nZXQoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMs
NyBAQCBTdHJ1Y3R1cmUqIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVjdHVyZSgKICAgICBWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSgKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwKKyAg
ICAgICAgdm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhEYXRhVmlld1R5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLAogICAgICAgICBOb25BcnJheSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVP
YmplY3QuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDEw
IEBAIGlubGluZSBjb25zdCBDbGFzc0luZm8qIEpTQ2VsbDo6Y2xhc3NJbmYKIHsKICAgICBpZiAo
TWFya2VkQmxvY2s6OmJsb2NrRm9yKHRoaXMpLT5kZXN0cnVjdG9yVHlwZSgpID09IE1hcmtlZEJs
b2NrOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Rlc3RydWN0
aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7
CisjaWZuZGVmIE5ERUJVRworICAgIHJldHVybiBzdHJ1Y3R1cmVTbG93KCktPmNsYXNzSW5mbygp
OwogI2Vsc2UKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5mbygpOworICAgIHJldHVy
biBzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE1OTM3NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TgogICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0RnVuY3Rpb24oKSAmJiAobW9k
ZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAgICAgICAvLyBNYWtlIHN1cmUg
cHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXNPYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnByb3RvdHlwZSwgc2xvdCk7CiAKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cyk7CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpOwpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSlNGdW5j
dGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICAgICAgLy8gTWFrZSBzdXJlIHByb3Rv
dHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2FuIG9ubHkgYmUgb3ZlcndyaXR0
ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQgb3V0IGluIEVDTUEtMjYyIDgu
MTIuOS4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGUu
Y2xlYXIoKTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9p
bnQubm90aWZ5V3JpdGUoKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNo
ZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fYWxsb2NhdGlvblByb2ZpbGUuCkBAIC00
MzIsNyArNDMyLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iagog
ICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhh
dCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1
bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgdGhpc09i
amVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwogICAgICAgICB0aGlzT2JqZWN0LT5t
X2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5ub3RpZnlXcml0ZSgpOwogICAgICAgICByZXR1
cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRl
c2NyaXB0b3IsIHRocm93RXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24g
MTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw0MSBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgTm9uQXJyYXkpOwor
ICAgICAgICBKU1R5cGUgdHlwZTsKKyAgICAgICAgc3dpdGNoIChBZGFwdG9yOjp0eXBlVmFsdWUp
IHsKKyAgICAgICAgY2FzZSBUeXBlSW50ODoKKyAgICAgICAgICAgIHR5cGUgPSBJbnQ4QXJyYXlU
eXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZUludDE2OgorICAgICAg
ICAgICAgdHlwZSA9IEludDE2QXJyYXlUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVHlwZUludDMyOgorICAgICAgICAgICAgdHlwZSA9IEludDMyQXJyYXlUeXBlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZVVpbnQ4OgorICAgICAgICAgICAgdHlw
ZSA9IFVpbnQ4QXJyYXlUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlw
ZVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAgICAgIHR5cGUgPSBVaW50OENsYW1wZWRBcnJheVR5cGU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlVWludDE2OgorICAgICAgICAg
ICAgdHlwZSA9IFVpbnQxNkFycmF5VHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFR5cGVVaW50MzI6CisgICAgICAgICAgICB0eXBlID0gVWludDMyQXJyYXlUeXBlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHlwZUZsb2F0MzI6CisgICAgICAgICAgICB0
eXBlID0gRmxvYXQzMkFycmF5VHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFR5cGVGbG9hdDY0OgorICAgICAgICAgICAgdHlwZSA9IEZsb2F0NjRBcnJheVR5cGU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyh0eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgTm9uQXJyYXkp
OwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsgLy8gVGhp
cyBpcyBuZXZlciBhY2Nlc3NlZCBkaXJlY3RseSwgc2luY2UgdGhhdCB3b3VsZCBicmVhayBsaW5r
YWdlIG9uIHNvbWUgY29tcGlsZXJzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suY3BwCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw3IEBAIEpTTG9j
azo6SlNMb2NrKFZNKiB2bSkKICAgICAsIG1fdm0odm0pCiB7CiAgICAgbV9zcGluTG9jay5Jbml0
KCk7CisgICAgVk06OnNldEN1cnJlbnRWTSh2bSk7CiB9CiAKIEpTTG9jazo6fkpTTG9jaygpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lv
biAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nyw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsYXN0QXJy
YXlTaXplID0gMDsKIAogSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVjdFNsb3coSlNDZWxsKiBjZWxs
KQogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKCk7Ci0gICAg
aWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAg
aWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIGNlbGw7
Ci0gICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1
bmN0aW9uOjppbmZvKCkpKQorICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkt
PmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4g
Y2VsbDsKICAgICByZXR1cm4gMDsKIH0KQEAgLTI0OCwxMSArMjQ3LDEyIEBAIHZvaWQgSlNGaW5h
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwKICAgICAKICAgICBKU0NlbGw6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gdGhp
c09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgaWYgKGJ1dHRlcmZseSkKLSAgICAgICAgdGhpc09i
amVjdC0+dmlzaXRCdXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCB0aGlzT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICAgICAgdGhpc09iamVjdC0+dmlzaXRCdXR0
ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUoKSk7CiAK
LSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5saW5l
U2l6ZSgpOworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVyZS0+aW5saW5lU2l6ZSgp
OwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0b3JhZ2UoKSwg
c3RvcmFnZVNpemUpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjc0LDkgKzI3NCw5IEBA
IGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAvLyBnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KCkuCiAgICAgCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgp
Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgc2xvdCk7
CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywg
aSksIHNsb3QpOwogICAgIAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0zNTgsMTAgKzM1OCwxMCBA
QCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3RvdHlwZSBjaGFp
bgogICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgIGlmIChwcm9wZXJ0eU5hbWUgIT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewotICAgICAgICBmb3IgKEpTT2JqZWN0
KiBvYmogPSB0aGlzT2JqZWN0OyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9ubHlPckdldHRl
clNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5
cGUpKSB7CisgICAgICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7ICFvYmotPnN0
cnVjdHVyZSh2bSktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5n
UHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICAgICAgcHJvdG90
eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5w
cm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
KSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5w
cm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1l
KSk7CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQ
dXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVP
YmplY3QodmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAmJiBzbG90LmlzU3RyaWN0TW9kZSgp
KQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0zNzQsMTAgKzM3NCwx
MCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgZm9yIChv
YmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKHZtKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBpZiAoaXNWYWxpZE9mZnNldChv
ZmZzZXQpKSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFp
bk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0g
dGhpc09iamVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4
Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIEFTU0VSVCghdGhpc09i
amVjdC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVj
LT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsKKyAgICBBU1NFUlQo
IXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3Rv
cmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsKICAg
ICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZtLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpICYmIHNs
b3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICByZXR1cm47
CkBAIC00MTIsMTEgKzQxMiwxMSBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCog
Y2VsbCwgCiAgICAgCiAgICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewog
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChzaG91bGRUaHJvdyk7Ci0gICAgICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgdGhpc09iamVj
dC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksIHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIApAQCAtNTQ3LDcgKzU0Nyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVudGVy
RGljdGlvbmFyeUkKICAgICB9CiAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAg
QnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXplQXJy
YXkodm0sIHRoaXMsIHN0cnVjdHVyZSgpLCAwLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkpOwor
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6
ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCAwLCBBcnJheVN0b3JhZ2U6OnNpemVGb3Io
MCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAgICAgCiAgICAgbV9idXR0
ZXJmbHkgPSBuZXdCdXR0ZXJmbHk7CkBAIC01NjAsNyArNTYwLDcgQEAgQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SQogCiB2b2lkIEpTT2JqZWN0OjplbnRlckRpY3Rpb25h
cnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19U
WVBFUzoKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKQEAgLTU4NCw3ICs1ODQs
NyBAQCB2b2lkIEpTT2JqZWN0Ojpub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjCiAgICAgaWYgKG1h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFkZEluZGV4ZWRBY2Nlc3NvcnMpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBZGRJbmRl
eGVkQWNjZXNzb3JzKSk7CiAgICAgCiAgICAgaWYgKCF2bS5wcm90b3R5cGVNYXAuaXNQcm90b3R5
cGUodGhpcykpCiAgICAgICAgIHJldHVybjsKQEAgLTU5NSwxMyArNTk1LDE0IEBAIHZvaWQgSlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMKIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNy
ZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgc2l6ZV90
IGVsZW1lbnRTaXplKQogewogICAgIEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwot
ICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBJbmRl
eGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJU
X1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3BlcnRpZXMob2xkVHlwZSkpOwotICAgIEFT
U0VSVCghc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKICAgICBBU1NFUlQoIWluZGV4aW5n
U2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gc3RkOjptYXgo
bGVuZ3RoLCBCQVNFX1ZFQ1RPUl9MRU4pOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0g
QnV0dGVyZmx5OjpjcmVhdGVPckdyb3dBcnJheVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseSwg
dm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
ZmFsc2UsIDAsCisgICAgICAgIG1fYnV0dGVyZmx5LCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAogICAgICAgICBlbGVtZW50U2l6
ZSAqIHZlY3Rvckxlbmd0aCk7CiAgICAgbmV3QnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgobGVu
Z3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOwpA
QCAtNjEyLDcgKzYxMyw3IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxVbmRl
Y2kKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQnV0dGVyZmx5KiBuZXdC
dXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlVW5kZWNp
ZGVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0ZVVuZGVjaWRlZCk7CiAgICAg
c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7
CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseTsKIH0KQEAgLTYyMSw3ICs2MjIsNyBAQCBDb250aWd1
b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbElu
ZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24o
dm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUludDMyKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
LCBBbGxvY2F0ZUludDMyKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0
cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1
b3VzSW50MzIoKTsKIH0KQEAgLTYzMiw3ICs2MzMsNyBAQCBDb250aWd1b3VzRG91YmxlcyBKU09i
amVjdDo6Y3JlYXRlSW5pdGlhCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJ
bml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9mKGRvdWJsZSkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IG5ld0J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAgICAg
ICAgIG5ld0J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKLSAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSks
IEFsbG9jYXRlRG91YmxlKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0
cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKCk7CiB9CkBAIC02NDEsNyArNjQyLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjpjcmVhdGVJbml0aQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAg
ICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2
bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
KSwgQWxsb2NhdGVDb250aWd1b3VzKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0
ZUNvbnRpZ3VvdXMpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0
dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KTsKIH0KQEAgLTY0OSwxMCArNjUwLDExIEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6
Y3JlYXRlSW5pdGkKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZShW
TSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewogICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMt
PnN0cnVjdHVyZSh2bSk7CisgICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBpbmRleGluZ1R5cGUo
KTsKICAgICBBU1NFUlRfVU5VU0VEKG9sZFR5cGUsICFoYXNJbmRleGVkUHJvcGVydGllcyhvbGRU
eXBlKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZU9y
R3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIG1fYnV0dGVyZmx5LCB2bSwgdGhpcywgc3RydWN0dXJl
KCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgMCwKKyAgICAgICAg
bV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JM
ZW5ndGgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJmbHkpOwogCkBAIC02NjIsNyAr
NjY0LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYQogICAgIHJl
c3VsdC0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKICAgICByZXN1bHQtPm1fbnVtVmFsdWVzSW5WZWN0
b3IgPSAwOwogICAgIHJlc3VsdC0+bV9pbmRleEJpYXMgPSAwOwotICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKKyAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNp
dGlvbigpKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwg
bmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNjc0LDM0ICs2NzYsMzUg
QEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEFycgogCiBDb250aWd1b3Vz
SlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0ludDMyKFZNJiB2bSkKIHsKLSAg
ICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwotICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSgpLCBBbGxvY2F0ZUludDMyKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChpbmRl
eGluZ1R5cGUoKSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlSW50MzIpKTsKICAgICByZXR1
cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpOwogfQogCiBDb250aWd1b3VzRG91Ymxl
cyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NF
UlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VS
VChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAgICAgICAgIG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgIAotICAgIHNldFN0cnVjdHVy
ZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBB
bGxvY2F0ZURvdWJsZSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9w
ZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlRG91YmxlKSk7CiAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiB9CiAKIENvbnRpZ3VvdXNK
U1ZhbHVlcyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyhWTSYgdm0pCiB7
Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsK
LSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CisgICAgQVNTRVJUKGhhc1VuZGVj
aWRlZChpbmRleGluZ1R5cGUoKSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlQ29udGlndW91
cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCiBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29w
eWluZ0VsZW1lbnRzKFZNJiB2bSwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogeworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICB1bnNpZ25lZCBwdWJs
aWNMZW5ndGggPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcHJv
cGVydHlDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIHVu
c2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplKCk7CisgICAg
dW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KTsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUtPm91dE9mTGluZVNpemUo
KTsKICAgICAKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRl
VW5pbml0aWFsaXplZCgKICAgICAgICAgdm0sIHRoaXMsIDAsIHByb3BlcnR5Q2FwYWNpdHksIHRy
dWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcihuZWVkZWRMZW5ndGgpKTsKQEAgLTcyNCwxMiArNzI3
LDEyIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnQKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5v
blByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7
CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1VuZGVjaWRlZChp
bmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNvbnN0
cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRl
ZExlbmd0aCk7CiAgICAgLy8gTm8gbmVlZCB0byBjb3B5IGVsZW1lbnRzLgogICAgIAotICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24o
dm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCB0
cmFuc2l0aW9uKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVy
ZSwgc3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVybiBzdG9yYWdlOwogfQpAQCAtNzQx
LDEyICs3NDQsMTIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZAog
CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uo
Vk0mIHZtKQogewotICAgIHJldHVybiBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0s
IHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJl
dHVybiBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSh2bSktPnN1
Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVz
IEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZShWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhh
c0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNJbnQz
MihpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykgewogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4qIGN1cnJlbnQgPSAmbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldOwpAQCAtNzYw
LDIxICs3NjMsMjEgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMgog
ICAgICAgICAqY3VycmVudEFzRG91YmxlID0gdi5hc0ludDMyKCk7CiAgICAgfQogICAgIAotICAg
IHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSgpLCBBbGxvY2F0ZURvdWJsZSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlRG91
YmxlKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiB9CiAK
IENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Db250aWd1b3VzKFZN
JiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCi0gICAgc2V0
U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlQ29u
dGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQogCiBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0s
IE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgp
CiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1
Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRM
ZW5ndGgpOwpAQCAtNzg2LDcgKzc4OSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRJbnQzMlRvQXIKICAgICAgICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcisrOwog
ICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9u
UHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVy
Zmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1
cm4gbmV3U3RvcmFnZTsKIH0KQEAgLTc5OCwxMyArODAxLDEzIEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRJbnQzMlRvQXIKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dEludDMyVG9BcnJheVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHJldHVybiBjb252ZXJ0SW50MzJU
b0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5z
aXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUodm0pLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogfQogCiB0ZW1w
bGF0ZTxKU09iamVjdDo6RG91YmxlVG9Db250aWd1b3VzTW9kZSBtb2RlPgogQ29udGlndW91c0pT
VmFsdWVzIEpTT2JqZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGlndW91cyhWTSYgdm0p
CiB7Ci0gICAgQVNTRVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICBBU1NFUlQoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAg
IGRvdWJsZSogY3VycmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwpA
QCAtODI3LDcgKzgzMCw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Z2VuZXJpY0Nv
bnYKICAgICAgICAgY3VycmVudEFzVmFsdWUtPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAg
ICAgfQogICAgIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXMoKTsKIH0KIApAQCAtODQ0LDcgKzg0Nyw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBK
U09iamVjdDo6cmFnZUNvbnZlcnQKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3Vi
bGVUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0aW9u
LCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIEFycmF5U3Rv
cmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRD
b3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS07KSB7CkBAIC04NTUsNyArODU4LDcgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQQogICAgICAgICBuZXdTdG9y
YWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSog
bmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCB0cmFuc2l0aW9u
KTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3U3Rv
cmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVybiBuZXdTdG9yYWdlOwogfQpAQCAtODY3LDEz
ICs4NzAsMTMgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQQogCiBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZt
KQogewotICAgIHJldHVybiBjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVy
ZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJldHVybiBjb252
ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSh2bSktPnN1Z2dlc3RlZEFycmF5
U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24g
dHJhbnNpdGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJH
Qyh2bS5oZWFwKTsKLSAgICBBU1NFUlQoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpOwog
ICAgIAogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZlcnRlZEFy
cmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS07KSB7CkBA
IC04ODQsNyArODg3LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3Vv
dQogICAgICAgICBuZXdTdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAgICAgfQogICAg
IAotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCB0cmFuc2l0aW9uKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5l
d1N0cnVjdHVyZSwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVybiBuZXdTdG9y
YWdlOwogfQpAQCAtODk2LDcgKzg5OSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRDb250aWd1b3UKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNU
b0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9B
cnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKCkpOworICAgIHJldHVybiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtLCBz
dHJ1Y3R1cmUodm0pLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogfQogCiB2
b2lkIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkRm9yVmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlKQpAQCAtOTUyLDkgKzk1NSw5IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6ZW5z
dXJlSW50MzIKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlm
IChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCktPm5lZWRz
U2xvd1B1dEluZGV4aW5nKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRC
ZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4gY3Jl
YXRlSW5pdGlhbEludDMyKHZtLCAwKTsKICAgICAgICAgCkBAIC05NzYsOSArOTc5LDkgQEAgQ29u
dGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmVuc3VyZURvdWJsZQogewogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAg
IGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+
bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0Rv
dWJsZXMoKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxEb3VibGUodm0sIDApOwogICAg
ICAgICAKQEAgLTEwMDIsOSArMTAwNSw5IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6
ZW5zdXJlQ29udGkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4g
Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXModm0sIDApOwogICAgICAgICAKQEAgLTEwNDIsNyArMTA0
NSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIHsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGlu
Z1Nob3VsZEJlU3BhcnNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFn
ZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSk7CkBAIC0xMDUwLDIyICsx
MDUzLDIyIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKICAgICAg
ICAgCiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBBU1NF
UlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghc3RydWN0dXJl
KCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2
bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1cm4gY29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsK
LSAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7Cisg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAg
ICAgICAgIHJldHVybiBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSk7CiAgICAgICAgIAog
ICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRl
eGluZ1Nob3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5
U3RvcmFnZSh2bSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAg
IEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAg
IHJldHVybiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKQEAgLTEwNzYsNyArMTA3OSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmVuc3VyZUFycmF5U3RvcmEKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlT
dG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJiB2bSkKIHsKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAg
ICAgICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApOwogICAgICAgICBTcGFyc2VBcnJheVZh
bHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsKQEAgLTExMDcsNyArMTEx
MCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAogdm9pZCBK
U09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
IGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgQWxsb2NhdGVTbG93UHV0QXJyYXlT
dG9yYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTI2LDcgKzExMjksNyBAQCB2b2lkIEpTT2Jq
ZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhCiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2Up
OwogICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTExNDMsNyArMTE0Niw3IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZShWTSYgdm0sIEpTVmEKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgIHZt
LnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUoYXNPYmplY3QocHJvdG90eXBlKSk7CiAgICAgCi0g
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm90b3R5cGUpOworICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCBwcm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJl
KTsKICAgICAKICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+YW55T2JqZWN0SW5DaGFpbk1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcygpKQpAQCAtMTE1NCwxMCArMTE1NywxMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpKQorICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5
cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0
b3JhZ2Uodm0pOwpAQCAtMTE2NSw3ICsxMTY4LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90
eXBlKFZNJiB2bSwgSlNWYQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVD
aGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIEFTU0VSVCht
ZXRob2RUYWJsZSgpLT50b1RoaXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7
CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXModGhpcywgZXhlYywg
Tm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJv
dG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUuaXNPYmpl
Y3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQpAQCAtMTIwNCwxMiAr
MTIwNywxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yCiAgICAg
Ly8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91
ciBTdHJ1Y3R1cmUKICAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVy
IG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6
TmV3UHJvcGVydHkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzKSk7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
KTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29u
dGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90byk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCiBi
b29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xMjMxLDI0ICsxMjM1LDI1IEBAIGJvb2wgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2UKICAgICAKICAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLmFzSW5kZXgoKTsKICAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIGkpOwogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlm
aWVkKCkpCiAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRl
KGV4ZWMpOwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgaWYgKGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdl
dChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkg
ewotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZtKCkuaXNJ
bkRlZmluZU93blByb3BlcnR5KCkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAo
aXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgRG9udERlbGV0ZSAmJiAhdm0uaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVj
LT52bSgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IExvb2sgaW4gdGhlIHN0YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwogICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSB0aGlzT2JqZWN0LT5maW5kUHJvcGVydHlIYXNoRW50cnkoZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBEb250RGVsZXRlICYmICFleGVjLT52bSgpLmlzSW5EZWZpbmVPd25Qcm9wZXJ0
eSgpKQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIXZt
LmlzSW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0
aGlzIGJ1aWx0aW4gcHJvcGVydHkgY2FuJ3QgYmUgZGVsZXRlZAogCiAgICAgICAgIHB1dEVudHJ5
KGV4ZWMsIGVudHJ5LCBwcm9wZXJ0eU5hbWUsIGpzVW5kZWZpbmVkKCksIHRoaXNPYmplY3QpOwpA
QCAtMTI2MCw3ICsxMjY1LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxs
KiBjZQogYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAgIFByb3BlcnR5U2xvdCBzbG90KHRo
aXMpOwotICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0
aGlzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9j
YXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJv
b2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaSkKQEAgLTEyNjgsOSArMTI3Myw5IEBAIGJvb2wgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAogICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVY
KQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CisgICAgICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgCi0g
ICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAg
ICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxB
TktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVT
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNDMsNyArMTM0OCw3IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHQKIAogYm9vbCBKU09iamVjdDo6Z2V0UHJpbWl0
aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3Vs
dCkgY29uc3QKIHsKLSAgICByZXN1bHQgPSBtZXRob2RUYWJsZSgpLT5kZWZhdWx0VmFsdWUodGhp
cywgZXhlYywgUHJlZmVyTnVtYmVyKTsKKyAgICByZXN1bHQgPSBtZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVmYXVsdFZhbHVlKHRoaXMsIGV4ZWMsIFByZWZlck51bWJlcik7CiAgICAgbnVtYmVy
ID0gcmVzdWx0LnRvTnVtYmVyKGV4ZWMpOwogICAgIHJldHVybiAhcmVzdWx0LmlzU3RyaW5nKCk7
CiB9CkBAIC0xMzg2LDEyICsxMzkxLDEzIEBAIGNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZp
bmRQcm9wZXJ0eUgKIAogYm9vbCBKU09iamVjdDo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFR5cGVJbmZvIGluZm8gPSBz
dHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwogICAgIGlmIChpbmZvLmltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2
YWx1ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpKTsKICAgICBp
ZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZFRh
YmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKTsKLSAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVj
LCAiaW5zdGFuY2VvZiIgLCB0aGlzKSk7CisgICAgICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSkt
PmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVlKTsKKyAgICB2bS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJyb3IoZXhlYywgImluc3RhbmNlb2Yi
ICwgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTQxNSw4ICsxNDIxLDkgQEAg
Ym9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4ZWNTdAogCiBib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogeworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAoaXNWYWxp
ZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSkpKQorICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSh2
bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdp
dGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNob3VsZCBwcm9iYWJseQpAQCAtMTQyOSwxOCArMTQz
NiwxOSBAQCBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoCiB2b2lkIEpT
T2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2Rl
KQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFzZU9iamVjdChvYmplY3QpOwotICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIAog
ICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09i
amVjdChvYmplY3QtPnByb3RvdHlwZSgpKTsKICAgICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmIChw
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMoKSkgewotICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIGlm
IChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKSB7CisgICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywg
bW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgIEpT
VmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5l
eHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ1NCw3ICsxNDYyLDcg
QEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iagogICAgIC8vIEZJWE1F
OiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkg
aW50ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5
cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKICAgICAvLyB3aGljaCBhbG1vc3QgY2Vy
dGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXku
Ci0gICAgc3dpdGNoIChvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
IHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgYnJlYWs7CkBAIC0xNTEzLDE1ICsxNTIxLDE2IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93
blByb3BlcnR5TmFtZXMoSlNPYmoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAgICAgCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBv
YmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBKU09iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9k
ZSBtb2RlKQogewogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNz
SW5mbygpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSk7CiAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGJvb2wgY2FuQ2FjaGVQcm9w
ZXJ0aWVzRnJvbVN0cnVjdHVyZSA9ICFwcm9wZXJ0eU5hbWVzLnNpemUoKTsKLSAgICBvYmplY3Qt
PnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0cnVjdHVyZShleGVjLT52bSgpLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPnN0cnVjdHVyZSh2bSktPmdldFByb3Bl
cnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlm
IChjYW5DYWNoZVByb3BlcnRpZXNGcm9tU3RydWN0dXJlKQogICAgICAgICBwcm9wZXJ0eU5hbWVz
LnNldE51bUNhY2hlYWJsZVNsb3RzRm9yT2JqZWN0KG9iamVjdCwgcHJvcGVydHlOYW1lcy5zaXpl
KCkpOwpAQCAtMTU1Myw3ICsxNTYyLDcgQEAgdm9pZCBKU09iamVjdDo6c2VhbChWTSYgdm0pCiAg
ICAgaWYgKGlzU2VhbGVkKHZtKSkKICAgICAgICAgcmV0dXJuOwogICAgIHByZXZlbnRFeHRlbnNp
b25zKHZtKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24o
dm0sIHN0cnVjdHVyZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmZyZWV6
ZShWTSYgdm0pCkBAIC0xNTYxLDE0ICsxNTcwLDE0IEBAIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShW
TSYgdm0pCiAgICAgaWYgKGlzRnJvemVuKHZtKSkKICAgICAgICAgcmV0dXJuOwogICAgIHByZXZl
bnRFeHRlbnNpb25zKHZtKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZnJlZXpl
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVj
dHVyZTo6ZnJlZXplVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogfQogCiB2b2lkIEpT
T2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhWTSYgdm0pCiB7CiAgICAgZW50ZXJEaWN0aW9uYXJ5
SW5kZXhpbmdNb2RlKHZtKTsKICAgICBpZiAoaXNFeHRlbnNpYmxlKCkpCi0gICAgICAgIHNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSgpKSk7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpwcmV2ZW50
RXh0ZW5zaW9uc1RyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSkpKTsKIH0KIAogLy8gVGhpcyBw
cmVzZW50bHkgd2lsbCBmbGF0dGVuIHRvIGFuIHVuY2FjaGFibGUgZGljdGlvbmFyeTsgdGhpcyBp
cyBzdWl0YWJsZQpAQCAtMTU4MSwxMiArMTU5MCwxMiBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0
YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgLy8gSWYgdGhpcyBvYmplY3QncyBDbGFzc0luZm8gaGFz
IG5vIHN0YXRpYyBwcm9wZXJ0aWVzLCB0aGVuIG5vdGhpbmcgdG8gcmVpZnkhCiAgICAgLy8gV2Ug
Y2FuIHNhZmVseSBzZXQgdGhlIGZsYWcgdG8gYXZvaWQgdGhlIGV4cGVuc2l2ZSBjaGVjayBhZ2Fp
biBpbiB0aGUgZnV0dXJlLgogICAgIGlmICghY2xhc3NJbmZvKCktPmhhc1N0YXRpY1Byb3BlcnRp
ZXMoKSkgewotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgp
OworICAgICAgICBzdHJ1Y3R1cmUodm0pLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXN0cnVjdHVyZSgpLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpKQotICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6dG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSkpOworICAgIGlm
ICghc3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkKKyAgICAgICAgc2V0
U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSkpOwogCiAgICAgZm9yIChjb25zdCBDbGFzc0luZm8qIGluZm8g
PSBjbGFzc0luZm8oKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBhcmVudENsYXNzKSB7CiAgICAgICAg
IGNvbnN0IEhhc2hUYWJsZSogaGFzaFRhYmxlID0gaW5mby0+cHJvcEhhc2hUYWJsZShnbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKQEAgLTE1OTksMjQgKzE2MDgsMjUgQEAgdm9pZCBKU09i
amVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAgICAgICB9CiAgICAgfQogCi0gICAg
c3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKKyAgICBzdHJ1Y3R1cmUo
dm0pLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnJl
bW92ZURpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYg
KCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQorICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoIWlz
VmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgaWYgKHN0cnVj
dHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0
cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKKyAg
ICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHB1dERpcmVjdFVuZGVmaW5lZChv
ZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwg
cHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zm
c2V0KSk7CiAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7CkBAIC0xODQ1LDcgKzE4NTUs
NyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJ
bmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGksIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhpbmdTaGFwZSk7CisgICAgQVNTRVJU
KChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsK
ICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CiAgICAgCiAgICAgLy8gRm9y
IHVzIHRvIGdldCBoZXJlLCB0aGUgaW5kZXggaXMgZWl0aGVyIGdyZWF0ZXIgdGhhbiB0aGUgcHVi
bGljIGxlbmd0aCwgb3IgZ3JlYXRlciB0aGFuCkBAIC0xOTc0LDcgKzE5ODQsNyBAQCB2b2lkIEpT
T2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgLy8gaSBzaG91bGQgYmUgYSB2
YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9yLgog
ICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4
aW5nU2hvdWxkQmVTcGFyc2UoKSkgewogICAgICAgICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0xOTg3LDcgKzE5OTcsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAgICAgICAgICAgICAgZXhlYywgaSwg
dmFsdWUsIHNob3VsZFRocm93LCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+bmVlZHNT
bG93UHV0SW5kZXhpbmcoKSkgeworICAgICAgICBpZiAoc3RydWN0dXJlKGV4ZWMtPnZtKCkpLT5u
ZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CiAgICAgICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UgPSBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwg
MCwgaSArIDEpKTsKICAgICAgICAgICAgIHN0b3JhZ2UtPm1fdmVjdG9yW2ldLnNldCh2bSwgdGhp
cywgdmFsdWUpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcisrOwpA
QCAtMjA0Miw3ICsyMDUyLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRW
ZWN0bwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAgICAgLy8gaSBzaG91bGQgYmUg
YSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9y
LgotICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSk7CisgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpOwogICAgIEFT
U0VSVChhcnJheVN0b3JhZ2UoKSA9PSBzdG9yYWdlKTsKICAgICBBU1NFUlQoaSA+PSBzdG9yYWdl
LT52ZWN0b3JMZW5ndGgoKSB8fCBhdHRyaWJ1dGVzKTsKICAgICBBU1NFUlQoaSA8PSBNQVhfQVJS
QVlfSU5ERVgpOwpAQCAtMjEyNCw3ICsyMTM0LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW5kZXhCZXlvbmRWZWN0bwogICAgIGlmIChhdHRyaWJ1dGVzICYgKFJlYWRPbmx5IHwgQWNjZXNz
b3IpKQogICAgICAgICBub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjY2Vzc29ycyh2bSk7CiAgICAg
Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsK
ICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBhdHRyaWJ1dGVzKSB7CiAg
ICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJy
YXlTdG9yYWdlKApAQCAtMjEzNSw3ICsyMTQ1LDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW5kZXhCZXlvbmRWZWN0bwogICAgICAgICAgICAgcmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25k
VmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAgICAgICAgICAgICBleGVjLCBpLCB2
YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwgY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygp
KSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm5lZWRzU2xvd1B1dEluZGV4
aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNyZWF0ZUFycmF5
U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCgwLCAwLCBpICsgMSkpOwogICAg
ICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CkBAIC0yMjQ4LDcgKzIyNTgs
NyBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0OjpnZXROZXdWCiAgICAgdW5zaWdu
ZWQgdmVjdG9yTGVuZ3RoOwogICAgIHVuc2lnbmVkIGxlbmd0aDsKICAgICAKLSAgICBpZiAoaGFz
SW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgeworICAgIGlm
IChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgdmVjdG9y
TGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgICAgICBsZW5ndGggPSBt
X2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfSBlbHNlIHsKQEAgLTIyODcsNyArMjI5
Nyw3IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1lbnRzKEJ1dHRlcmYKIAogdW5zaWdu
ZWQgSlNPYmplY3Q6OmNvdW50RWxlbWVudHMoKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRF
WElOR19UWVBFUzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMzI2LDEwICsyMzM2LDExIEBAIGJv
b2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdW
ZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgobmV3TGVuZ3RoKTsKIAogICAgIC8vIEZh
c3QgY2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJbiB0aGVzZSBjYXNlcyBhIHJlYWxs
b2MgbWFrZXMgc2Vuc2UuCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1
cmUodm0pOwogICAgIGlmIChMSUtFTFkoIWluZGV4QmlhcykpIHsKICAgICAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3Jh
Z2UtPmJ1dHRlcmZseSgpLT5ncm93QXJyYXlSaWdodCgKLSAgICAgICAgICAgIHZtLCB0aGlzLCBz
dHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCisgICAg
ICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5
KCksIHRydWUsCiAgICAgICAgICAgICBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3Ro
KSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgICAgICBpZiAo
IW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNDMsNyArMjM1
NCw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKICAgICB1bnNp
Z25lZCBuZXdJbmRleEJpYXMgPSBzdGQ6Om1pbihpbmRleEJpYXMgPj4gMSwgTUFYX1NUT1JBR0Vf
VkVDVE9SX0xFTkdUSCAtIG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0
ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXplQXJyYXkoCiAgICAgICAgIHZtLCB0
aGlzLAotICAgICAgICBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJy
YXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksCisgICAgICAgIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0
aCksCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5l
d1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3QnV0dGVyZmx5KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzU3LDcgKzIzNjgsNyBAQCBib29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rv
ckxlbmd0aChWTSYgCiB2b2lkIEpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwot
ICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwg
aGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpIHx8
IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpIHx8
IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIEFTU0VSVChsZW5ndGggPiBtX2J1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgIAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxl
bmd0aCA9IHN0ZDo6bWluKApAQCAtMjM2NSwxMSArMjM3NiwxMiBAQCB2b2lkIEpTT2JqZWN0Ojpl
bnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgCiAgICAgICAgIE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5H
VEgpOwogICAgIHVuc2lnbmVkIG9sZFZlY3Rvckxlbmd0aCA9IG1fYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKTsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIG1fYnV0dGVyZmx5ID0gbV9idXR0
ZXJmbHktPmdyb3dBcnJheVJpZ2h0KAotICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlKCksIHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLAorICAgICAgICB2bSwgdGhpcywg
c3RydWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAg
IG9sZFZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSksCiAgICAgICAgIG5ld1Zl
Y3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgIGlmIChoYXNEb3VibGUo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgeworICAgIGlmIChoYXNEb3VibGUoaW5kZXhp
bmdUeXBlKCkpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG9sZFZlY3Rvckxlbmd0aDsg
aSA8IG5ld1ZlY3Rvckxlbmd0aDsgKytpKQogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKS5kYXRhKClbaV0gPSBRTmFOOwogICAgIH0KQEAgLTIzODMsMTYgKzIzOTUs
MTYgQEAgQnV0dGVyZmx5KiBKU09iamVjdDo6Z3Jvd091dE9mTGluZVN0b3JhZwogICAgIC8vIEl0
J3MgaW1wb3J0YW50IHRoYXQgdGhpcyBmdW5jdGlvbiBub3QgcmVseSBvbiBzdHJ1Y3R1cmUoKSwg
Zm9yIHRoZSBwcm9wZXJ0eQogICAgIC8vIGNhcGFjaXR5LCBzaW5jZSB3ZSBtaWdodCBoYXZlIGFs
cmVhZHkgbXV0YXRlZCB0aGUgc3RydWN0dXJlIGluLXBsYWNlLgogICAgIAotICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Z3Jvd1Byb3BlcnR5U3RvcmFnZSh2bSwgdGhpcywgc3RydWN0dXJlKCksIG9s
ZFNpemUsIG5ld1NpemUpOworICAgIHJldHVybiBtX2J1dHRlcmZseS0+Z3Jvd1Byb3BlcnR5U3Rv
cmFnZSh2bSwgdGhpcywgc3RydWN0dXJlKHZtKSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CiB9CiAKIGJv
b2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKICAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIGlmICghbWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkp
CisgICAgaWYgKCFtZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRo
aXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvKiBXb3JrYXJvdW5kLCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90IHNlYXJjaGVz
IHRoZSBwcm90b3R5cGUgY2hhaW4uIDotKCAqLwotICAgIGlmIChzbG90LnNsb3RCYXNlKCkgIT0g
dGhpcyAmJiBzbG90LnNsb3RCYXNlKCkgJiYgc2xvdC5zbG90QmFzZSgpLT5tZXRob2RUYWJsZSgp
LT50b1RoaXMoc2xvdC5zbG90QmFzZSgpLCBleGVjLCBOb3RTdHJpY3RNb2RlKSAhPSB0aGlzKQor
ICAgIGlmIChzbG90LnNsb3RCYXNlKCkgIT0gdGhpcyAmJiBzbG90LnNsb3RCYXNlKCkgJiYgc2xv
dC5zbG90QmFzZSgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+dG9UaGlzKHNsb3Quc2xvdEJh
c2UoKSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gdGhpcykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSkKICAgICAgICAgZGVzY3JpcHRvci5zZXRBY2Nl
c3NvckRlc2NyaXB0b3Ioc2xvdC5nZXR0ZXJTZXR0ZXIoKSwgc2xvdC5hdHRyaWJ1dGVzKCkpOwpA
QCAtMjQyMSw3ICsyNDMzLDcgQEAgc3RhdGljIGJvb2wgcHV0RGVzY3JpcHRvcihFeGVjU3RhdGUq
IGV4ZQogICAgICAgICAgICAgbmV3VmFsdWUgPSBvbGREZXNjcmlwdG9yLnZhbHVlKCk7CiAgICAg
ICAgIHRhcmdldC0+cHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlLCBhdHRyaWJ1
dGVzICYgfkFjY2Vzc29yKTsKICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAg
ICAgICAgICAgIHRhcmdldC0+c3RydWN0dXJlKCktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0
aWVzKCk7CisgICAgICAgICAgICB0YXJnZXQtPnN0cnVjdHVyZSh2bSktPnNldENvbnRhaW5zUmVh
ZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBhdHRy
aWJ1dGVzICY9IH5SZWFkT25seTsKQEAgLTI1MTEsNyArMjUyMyw3IEBAIGJvb2wgSlNPYmplY3Q6
OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAvLyBBIGdlbmVyaWMgZGVzY3JpcHRvciBp
cyBzaW1wbHkgY2hhbmdpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkK
ICAgICBpZiAoZGVzY3JpcHRvci5pc0dlbmVyaWNEZXNjcmlwdG9yKCkpIHsKICAgICAgICAgaWYg
KCFjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSkgewotICAgICAgICAgICAgbWV0
aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhl
YywgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNP
dmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0yNTI0LDcgKzI1MzYsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVP
d25Ob25JbmRleFByb3BlcnR5CiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2Vw
dGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSBhY2Nlc3MgbWVjaGFuaXNtIGZvciBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0
eS4iKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CiAKQEAgLTI1NDYsNyArMjU1OCw3
IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgfQog
ICAgICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3JpcHRvcikgJiYgIWRlc2Ny
aXB0b3IudmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBtZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3Vy
cmVudChjdXJyZW50KSwgY3VycmVudCk7CiAgICAgfQogCkBAIC0yNTc0LDcgKzI1ODYsNyBAQCBi
b29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgICAgIGdldHRlclNl
dHRlci0+c2V0R2V0dGVyKGV4ZWMtPnZtKCksIGRlc2NyaXB0b3IuZ2V0dGVyT2JqZWN0KCkpOwog
ICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgbWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywg
cHJvcGVydHlOYW1lKTsKKyAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICB1bnNpZ25lZCBhdHRycyA9IGRlc2Ny
aXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpOwogICAgIHB1dERpcmVj
dEFjY2Vzc29yKGV4ZWMsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRycyB8IEFjY2Vz
c29yKTsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbHVl
KQogewotICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCisgICAgaWYgKHZhbHVl
LmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpOwogICAgIHJldHVybiAwOwogfQpAQCAtMTMy
LDE0ICsxMzIsMTQgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5ndGgoKSBj
b25zdAogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGlu
ZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbV9i
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwogICAgIH0KICAgICAgICAgCiAgICAgdW5zaWduZWQg
Z2V0VmVjdG9yTGVuZ3RoKCkKICAgICB7Ci0gICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRp
ZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgaWYgKCFoYXNJbmRleGVk
UHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmV0dXJuIG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsKICAgICB9CkBAIC0xNTMsNyAr
MTUzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJvcGVydHlOYW1l
LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7
CiAgICAgfQogICAgICAgICAKICAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHB1dERpcmVj
dCogbWV0aG9kczoKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBj
YW5HZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgZ2V0
SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uZ2V0KCkuYXNJbnQzMigp
KTsKICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTIyNiw3
ICsyMjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIEpTVmFsdWUgdHJ5R2V0SW5kZXhRdWlj
a2x5KHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lE
RURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2NSw3ICsyNjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IHRyeUdldEluZGV4UXVpY2ts
eShpKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXMpOwotICAgICAgICBpZiAobWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90
QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90KSkKKyAgICAgICAgaWYgKG1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3Qp
KQogICAgICAgICAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgaSk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlKCk7CiAgICAgfQpAQCAtMjc5LDcgKzI3OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMwMSw3ICszMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5Rm9yUHV0RGlyZWN0KHVuc2lnbmVkIGkpCiAgICAg
ewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTgsNyArMzE4LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICB2b2lkIHNldEluZGV4UXVpY2tseShWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFs
dWUgdikKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmICghdi5pc0ludDMyKCkpIHsKQEAg
LTM2OSw3ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUlu
ZGV4KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKLSAgICAgICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6IHsK
ICAgICAgICAgICAgIHNldEluZGV4UXVpY2tseVRvVW5kZWNpZGVkKHZtLCBpLCB2KTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
Ym9vbCBoYXNTcGFyc2VNYXAoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19U
WVBFUzoKQEAgLTQzNSw3ICs0MzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgaW5T
cGFyc2VJbmRleGluZ01vZGUoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19U
WVBFUzoKQEAgLTQ5MSwzMSArNDkxLDM1IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGdldCBmdW5j
dGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCiAgICAgSlNWYWx1ZSBnZXREaXJl
Y3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogICAgIHsKLSAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlO
YW1lKTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2Fw
YWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJl
KHZtKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0s
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5p
bmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0
ID8gZ2V0RGlyZWN0KG9mZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgSlNWYWx1ZSBn
ZXREaXJlY3QoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0
cmlidXRlcykgY29uc3QKICAgICB7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0
cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7
CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgp
KTsKICAgICAgICAgcmV0dXJuIG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0ID8gZ2V0RGlyZWN0KG9m
ZnNldCkgOiBKU1ZhbHVlKCk7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgZ2V0RGlyZWN0
T2Zmc2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFj
aXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2
bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCiAgICAgUHJv
cGVydHlPZmZzZXQgZ2V0RGlyZWN0T2Zmc2V0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgewogICAgICAgICBKU0NlbGwqIHNwZWNp
ZmljOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKLSAgICAgICAgY2hlY2tPZmZz
ZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWMpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5s
aW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCkBAIC01OTIs
OCArNTk2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2VhbChWTSYpOwogICAgIHZvaWQgZnJlZXpl
KFZNJik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBwcmV2ZW50RXh0ZW5zaW9ucyhWTSYp
OwotICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNTZWFs
ZWQodm0pOyB9Ci0gICAgYm9vbCBpc0Zyb3plbihWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSgp
LT5pc0Zyb3plbih2bSk7IH0KKyAgICBib29sIGlzU2VhbGVkKFZNJiB2bSkgeyByZXR1cm4gc3Ry
dWN0dXJlKHZtKS0+aXNTZWFsZWQodm0pOyB9CisgICAgYm9vbCBpc0Zyb3plbihWTSYgdm0pIHsg
cmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzRnJvemVuKHZtKTsgfQogICAgIGJvb2wgaXNFeHRlbnNp
YmxlKCkgeyByZXR1cm4gc3RydWN0dXJlKCktPmlzRXh0ZW5zaWJsZSgpOyB9CiAgICAgYm9vbCBp
bmRleGluZ1Nob3VsZEJlU3BhcnNlKCkKICAgICB7CkBAIC02MTQsNyArNjE4LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmbGF0dGVuRGljdGlvbmFyeU9iamVjdChWTSYgdm0pCiAgICAgewotICAg
ICAgICBzdHJ1Y3R1cmUoKS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIHRoaXMpOwor
ICAgICAgICBzdHJ1Y3R1cmUodm0pLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgdGhp
cyk7CiAgICAgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0CkBA
IC02NDEsNyArNjQ1LDcgQEAgcHVibGljOgogICAgIC8vIGNvbnRpZ3VvdXMsIGFycmF5IHN0b3Jh
Z2UpLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVJbnQzMihWTSYgdm0pCiAgICAgewot
ICAgICAgICBpZiAoTElLRUxZKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
KQorICAgICAgICBpZiAoTElLRUxZKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpOwogICAgICAgICAgICAg
CiAgICAgICAgIHJldHVybiBlbnN1cmVJbnQzMlNsb3codm0pOwpAQCAtNjUzLDcgKzY1Nyw3IEBA
IHB1YmxpYzoKICAgICAvLyBvciBhcnJheSBzdG9yYWdlKS4KICAgICBDb250aWd1b3VzRG91Ymxl
cyBlbnN1cmVEb3VibGUoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNEb3Vi
bGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFz
RG91YmxlKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXNEb3VibGUoKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJl
RG91YmxlU2xvdyh2bSk7CkBAIC02NjMsNyArNjY3LDcgQEAgcHVibGljOgogICAgIC8vIGluZGV4
aW5nIHNob3VsZCBiZSBzcGFyc2Ugb3IgYmVjYXVzZSB3ZSdyZSBoYXZpbmcgYSBiYWQgdGltZS4K
ICAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW5zdXJlQ29udGlndW91cyhWTSYgdm0pCiAgICAgewot
ICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsKQEAgLTY3NCw3
ICs2NzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gYXR0ZW1wdHMgdG8gY29udmVydCBlYWNoIGRvdWJs
ZSB0byBhbiBpbnQzMi4KICAgICBDb250aWd1b3VzSlNWYWx1ZXMgcmFnZUVuc3VyZUNvbnRpZ3Vv
dXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3Vv
dXMoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29u
dGlndW91cygpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiByYWdlRW5zdXJlQ29udGln
dW91c1Nsb3codm0pOwpAQCAtNjg2LDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICAvLyBhbHJlYWR5
LgogICAgIEFycmF5U3RvcmFnZSogZW5zdXJlQXJyYXlTdG9yYWdlKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUo
KSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAg
ICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyh2bSk7CkBA
IC03MzQsNyArNzM4LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIHN0b3JhZ2UuIFRoaXMgd2lsbCBh
c3NlcnQgb3RoZXJ3aXNlLgogICAgIEFycmF5U3RvcmFnZSogYXJyYXlTdG9yYWdlKCkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKTsK
ICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICB9CiAgICAg
ICAgIApAQCAtNzQyLDcgKzc0Niw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBvYmplY3QgaXMgaW4g
YSBtb2RlIHdoZXJlIGl0IGhhcyBhcnJheSBzdG9yYWdlLgogICAgIEFycmF5U3RvcmFnZSogYXJy
YXlTdG9yYWdlT3JOdWxsKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAg
ICAgY2FzZSBBTExfQVJSQVlfU1RPUkFHRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJl
dHVybiBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgCkBAIC04
MDgsNyArODEyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZW5zdXJlTGVuZ3RoKFZNJiB2bSwg
dW5zaWduZWQgbGVuZ3RoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJB
WV9JTkRFWCk7Ci0gICAgICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBo
YXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIEFTU0VSVChoYXNDb250aWd1b3Vz
KGluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91Ymxl
KGluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAg
ICAgICAgIAogICAgICAgICBpZiAobV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpIDwgbGVuZ3Ro
KQogICAgICAgICAgICAgZW5zdXJlTGVuZ3RoU2xvdyh2bSwgbGVuZ3RoKTsKQEAgLTg0Niw3ICs4
NTAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBDb250aWd1b3VzSlNWYWx1ZXMgY3VycmVudEluZGV4
aW5nRGF0YSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3Vz
KCk7CkBAIC04NjMsNyArODY3LDcgQEAgcHJvdGVjdGVkOgogICAgIEpTVmFsdWUgZ2V0SG9seUlu
ZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAg
IGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdV
T1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzKClbaV0uZ2V0KCk7CkBAIC05MDMsNyArOTA3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
dW5zaWduZWQgY3VycmVudFJlbGV2YW50TGVuZ3RoKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
IGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfQ09OVElH
VU9VU19JTkRFWElOR19UWVBFUzoKQEAgLTk3NSw2ICs5NzksMTEgQEAgcHJpdmF0ZToKICAgICAK
IHByb3RlY3RlZDoKICAgICBCdXR0ZXJmbHkqIG1fYnV0dGVyZmx5OworCisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKK3ByaXZhdGU6CisgICAgdWludDMyX3QgbV9wYWRkaW5nOworI2VuZGlmCiB9Owog
CiAvLyBKU05vbkZpbmFsT2JqZWN0IGlzIGEgdHlwZSBvZiBKU09iamVjdCB0aGF0IGhhcyBzb21l
IGludGVybmFsIHN0b3JhZ2UsCkBAIC0xMTAxLDM1ICsxMTEwLDM1IEBAIGlubGluZSBzaXplX3Qg
SlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3QKIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzR2xv
YmFsT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCku
dHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBHbG9iYWxP
YmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNWYXJpYWJsZU9iamVjdCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA+PSBW
YXJpYWJsZU9iamVjdFR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA+PSBWYXJpYWJsZU9iamVjdFR5
cGU7CiB9CiAKIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QoKSBj
b25zdAogewotICAgIEpTVHlwZSB0eXBlID0gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
OworICAgIEpTVHlwZSB0eXBlID0gdGhpcy0+dHlwZSgpOwogICAgIHJldHVybiB0eXBlID09IE5h
bWVTY29wZU9iamVjdFR5cGUgfHwgdHlwZSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKIH0KIAog
CiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QoKSBjb25zdAogewotICAg
IHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gTmFtZVNjb3BlT2JqZWN0
VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IE5hbWVTY29wZU9iamVjdFR5cGU7CiB9CiAKIGlu
bGluZSBib29sIEpTT2JqZWN0Ojppc0FjdGl2YXRpb25PYmplY3QoKSBjb25zdAogewotICAgIHJl
dHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQWN0aXZhdGlvbk9iamVjdFR5
cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKIH0KIAogaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKKyAg
ICByZXR1cm4gdHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOwogfQogCiBpbmxpbmUgdm9pZCBK
U09iamVjdDo6c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQpAQCAtMTE5MSwxMCArMTIwMCwxMiBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmlubGluZUdldE93CiB7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljOwotICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMp
OwogICAgIGlmIChMSUtFTFkoaXNWYWxpZE9mZnNldChvZmZzZXQpKSkgewogICAgICAgICBKU1Zh
bHVlIHZhbHVlID0gZ2V0RGlyZWN0KG9mZnNldCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpCisg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1
ZS5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChz
bG90LCB2YWx1ZSwgYXR0cmlidXRlcywgb2Zmc2V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKQEAgLTEy
MTQsOSArMTIyNSwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6ZmFzdEdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCgpKQorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgaWYgKCFzdHJ1
Y3R1cmUodm0pLT50eXBlSW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpKQogICAg
ICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmlubGluZUdldE93blByb3BlcnR5U2xvdChleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4g
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKIH0KIAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rp
b24gdGhpcyBsYXJnZSBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZQpAQCAtMTIzOCw3ICsx
MjUwLDcgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eQogewogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlm
IChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSBvYmplY3QtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAoIXBy
b3RvdHlwZS5pc09iamVjdCgpKQpAQCAtMTI3MywxNSArMTI4NSwxNiBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgQVNTRVJUKCFIZWFwOjpoZWFwKHZhbHVl
KSB8fCBIZWFwOjpoZWFwKHZhbHVlKSA9PSBIZWFwOjpoZWFwKHRoaXMpKTsKICAgICBBU1NFUlQo
cHJvcGVydHlOYW1lLmFzSW5kZXgoKSA9PSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpOwogCi0g
ICAgaWYgKHN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkgewogICAgICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAg
SlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmli
dXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRl
cywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFs
aWRPZmZzZXQpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGN1cnJlbnRseSBhIHNwZWNp
ZmljIGZ1bmN0aW9uLCBhbmQgdGhlcmUgbm93IGVpdGhlciBpc24ndCwKICAgICAgICAgICAgIC8v
IG9yIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50LCB0aGVuIGRlc3BlY2lmeS4KICAgICAgICAg
ICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5jdGlvbiAmJiAoc3BlY2lmaWNGdW5jdGlvbiAhPSBj
dXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlKCktPmRl
c3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbih2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUtPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbih2bSwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgIGlmICgobW9kZSA9PSBQdXRNb2RlUHV0KSAmJiBjdXJyZW50QXR0
cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTMwMiwzMyArMTMxNSwzMyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJu
YWwoCiAKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAoc3RydWN0dXJlKCkt
PnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQotICAgICAgICAgICAgbmV3QnV0dGVyZmx5
ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkp
OwotICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKLSAg
ICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUoKSwgbmV3QnV0dGVy
Zmx5KTsKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwg
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZE5ld091
dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5h
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0s
IHN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKIAogICAgICAgICB2YWxpZGF0ZU9mZnNldChvZmZz
ZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7CiAgICAg
ICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0LCB2YWx1ZSk7CiAgICAgICAgIC8vIFNlZSBjb21tZW50
IG9uIHNldE5ld1Byb3BlcnR5IGNhbGwgYmVsb3cuCiAgICAgICAgIGlmICghc3BlY2lmaWNGdW5j
dGlvbikKICAgICAgICAgICAgIHNsb3Quc2V0TmV3UHJvcGVydHkodGhpcywgb2Zmc2V0KTsKICAg
ICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkKLSAgICAgICAgICAgIHN0cnVjdHVyZSgp
LT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICAgICAgc3RydWN0dXJl
LT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRD
YXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIGlmIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZSh0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQpKSB7CisgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0
eSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKKyAgICBpZiAoU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVu
Y3Rpb24sIG9mZnNldCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAg
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5OwotICAgICAgICBpZiAo
Y3VycmVudENhcGFjaXR5ICE9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSkKLSAgICAg
ICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBjdXJyZW50Q2Fw
YWNpdHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIGlmIChjdXJy
ZW50Q2FwYWNpdHkgIT0gbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQorICAgICAg
ICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBh
Y2l0eSwgbmV3U3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKIAogICAgICAgICB2YWxp
ZGF0ZU9mZnNldChvZmZzZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5pc1ZhbGlkT2Zm
c2V0KG9mZnNldCkpOwotICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVj
dHVyZSwgbmV3QnV0dGVyZmx5KTsKKyAgICAgICAgQVNTRVJUKG5ld1N0cnVjdHVyZS0+aXNWYWxp
ZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBu
ZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgICAgIHB1dERpcmVjdCh2bSwgb2Zmc2V0
LCB2YWx1ZSk7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBuZXcgcHJvcGVydHk7IHRyYW5zaXRpb25z
IHdpdGggc3BlY2lmaWMgdmFsdWVzIGFyZSBub3QgY3VycmVudGx5IGNhY2hhYmxlLAogICAgICAg
ICAvLyBzbyBsZWF2ZSB0aGUgc2xvdCBpbiBhbiB1bmNhY2hhYmxlIHN0YXRlLgpAQCAtMTMzOSw3
ICsxMzUyLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAg
ICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbjsKLSAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5h
bWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMs
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZz
ZXQpIHsKICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1
dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzYwLDcgKzEz
NzMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNl
ICgyKSBEZXNwZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1
Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUoKSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3Bl
cnR5TmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90
LCBkbyB0aGUgcHV0LCByZXR1cm4uCkBAIC0xMzcyLDcgKzEzODUsNyBAQCBpbmxpbmUgYm9vbCBK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQp
ICYmICFpc0V4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgdGhp
cy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlv
biwgb2Zmc2V0LCBzbG90LmNvbnRleHQoKSk7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKICAgICAKICAg
ICB2YWxpZGF0ZU9mZnNldChvZmZzZXQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRP
ZmZzZXQob2Zmc2V0KSk7CkBAIC0xNDA2LDcgKzE0MTksNyBAQCBpbmxpbmUgdm9pZCBKU09iamVj
dDo6c2V0U3RydWN0dXJlQW5kUmVhCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJl
QW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYgdm0sIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlKQogewogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nh
cnkoCi0gICAgICAgIHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U3Ry
dWN0dXJlKTsKKyAgICAgICAgdm0sIHN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCks
IG5ld1N0cnVjdHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJv
cGVydHkoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xNDM2LDE2ICsxNDQ5LDE3IEBAIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHIKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpICYmICEoYXR0cmlidXRlcyAm
IEFjY2Vzc29yKSk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBtX2J1dHRlcmZseTsK
LSAgICBpZiAoc3RydWN0dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQotICAg
ICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCkt
Pm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVT
dG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKLSAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0
ZXJmbHkodm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxs
R3Jvd091dE9mTGluZVN0b3JhZ2UoKSkKKyAgICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9m
TGluZVN0b3JhZ2Uodm0sIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJl
LT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7Cisg
ICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBzdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7
CiAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKIH0KIAogaW5saW5lIEpTVmFsdWUg
SlNPYmplY3Q6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSBwcmVmZXJyZWRUeXBlKSBjb25zdAogewotICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5k
ZWZhdWx0VmFsdWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlwZSk7CisgICAgcmV0dXJuIG1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZhdWx0VmFsdWUodGhpcywgZXhlYywgcHJlZmVycmVkVHlw
ZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIFJlZ2lzdGVyOjpmdW5jdGlvbigpIGNv
bnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgCiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOworICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CkBAIC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0
dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0KiBvYmpl
Y3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lvbiAx
NTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNTUgKzczLDU1IEBAIFN0cmluZyBKU1Byb3h5OjpjbGFzc05hbWUo
Y29uc3QgSlNPYmplY3QKIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQ
cm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTUHJveHk6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1Byb3h5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAgIHJldHVybiB0aGlz
T2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTUHJveHk6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNQcm94eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgp
LT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNs
b3QpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKIH0KIAogdm9pZCBKU1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxk
VGhyb3cpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
dGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKKyAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJv
dykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3Qp
OwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVmaW5l
T3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QtPnRh
cmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsKIH0K
IAogYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Byb3h5KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFy
Z2V0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdldCgp
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiBib29sIEpTUHJveHk6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNl
bGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5h
bWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywg
cHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBKU1Byb3h5OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1l
dGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgSlNQcm94eTo6Z2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAgIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0aGlzT2JqZWN0
LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
dGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVjU3QKIEpTT2JqZWN0KiBKU1Njb3BlOjpv
YmplY3RBdFNjb3BlKEpTU2NvcGUqIHNjb3BlKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBz
Y29wZTsKLSAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0g
V2l0aFNjb3BlVHlwZSkKKyAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkK
ICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1dpdGhTY29wZSo+KG9iamVjdCktPm9iamVjdCgpOwog
CiAgICAgcmV0dXJuIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybyksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3RoKTsg
fQpAQCAtMTc0LDYgKzE3NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9OwogCiAgICAg
cHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
KwogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICAgICAgICAgIAogICAgICAgICBi
b29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KQEAgLTQ5Nyw3
ICs0OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2Vs
bCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0KKyAg
ICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAm
JiB2LmFzQ2VsbCgpLT50eXBlKCkgPT0gU3RyaW5nVHlwZTsgfQogCiAgICAgLy8gLS0tIEpTVmFs
dWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDE1OTM3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTVHlwZSB7CitlbnVt
IEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFVuc3BlY2lmaWVkVHlwZSwKICAgICBVbmRlZmluZWRU
eXBlLAogICAgIEJvb2xlYW5UeXBlLApAQCAtNTUsNiArNTUsMTggQEAgZW51bSBKU1R5cGUgewog
ICAgIEVycm9ySW5zdGFuY2VUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVUeXBl
LAorICAgIEFyZ3VtZW50c1R5cGUsCisKKyAgICBJbnQ4QXJyYXlUeXBlLAorICAgIEludDE2QXJy
YXlUeXBlLAorICAgIEludDMyQXJyYXlUeXBlLAorICAgIFVpbnQ4QXJyYXlUeXBlLAorICAgIFVp
bnQ4Q2xhbXBlZEFycmF5VHlwZSwKKyAgICBVaW50MTZBcnJheVR5cGUsCisgICAgVWludDMyQXJy
YXlUeXBlLAorICAgIEZsb2F0MzJBcnJheVR5cGUsCisgICAgRmxvYXQ2NEFycmF5VHlwZSwKKyAg
ICBEYXRhVmlld1R5cGUsCiAKICAgICBOYW1lU2NvcGVPYmplY3RUeXBlLAogICAgIC8vIFZhcmlh
YmxlT2JqZWN0VHlwZSBtdXN0IGJlIGxlc3MgdGhhbiBNT1NUIG9mIHRoZSB0eXBlcyBvZiBpdHMg
c3ViY2xhc3NlcyBhbmQgb25seSBpdHMgc3ViY2xhc3Nlcy4KQEAgLTY0LDYgKzc2LDggQEAgZW51
bSBKU1R5cGUgewogICAgIEFjdGl2YXRpb25PYmplY3RUeXBlLAogfTsKIAorQ09NUElMRV9BU1NF
UlQoc2l6ZW9mKEpTVHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCBzaXplb2ZfanN0eXBlX2lzX29u
ZV9ieXRlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTU5Mzc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMTA7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUhhc1JhcmVEYXRhID0gMSA8PCAxMTsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1vcnRhbCA9IDEgPDwgMTI7CiAKICAg
ICBjbGFzcyBUeXBlSW5mbyB7CiAgICAgcHVibGljOgpAQCAtNjYsNyArNjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5cGUpOyB9Ci0gICAgICAgIGJvb2wgaXNPYmplY3Qo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPj0gT2JqZWN0VHlwZTsgfQorICAgICAgICBib29sIGlz
T2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNPYmplY3QodHlwZSgpKTsgfQorICAgICAgICBzdGF0
aWMgYm9vbCBpc09iamVjdChKU1R5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA+PSBPYmplY3RUeXBl
OyB9CiAgICAgICAgIGJvb2wgaXNGaW5hbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBGaW5hbE9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc051bWJlck9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJPYmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNO
YW1lKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IE5hbWVJbnN0YW5jZVR5cGU7IH0KQEAgLTg0
LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgcHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihQcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcpOyB9CiAgICAgICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KCkg
Y29uc3QgeyByZXR1cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3Qp
OyB9CiAgICAgICAgIGJvb2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBp
c1NldE9uRmxhZ3MyKFN0cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBib29sIHN0cnVj
dHVyZUlzSW1tb3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlz
SW1tb3J0YWwpOyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNldCgpCiAg
ICAgICAgIHsKQEAgLTk1LDYgKzk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVJbmZvLCBtX3R5cGUpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdHlwZWRlZiB1aW50OF90IElubGluZVR5cGVGbGFnczsKKyAgICAgICAgSW5saW5lVHlw
ZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKwogICAg
IHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAkocmV2
aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
KCk7CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPGludDMyX3Q+IEluZGV4VHJhaXRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTU5Mzc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDcsNyArMjA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RDb25zdAogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQgcHJvcGVydHkgbmFtZXMgb2YgYSB2YWx1ZSB0aGF0IGlz
IG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3Bl
cnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFy
Z3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMo
YXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBuYW1lcyA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTIy
MSw3ICsyMjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVl
c3RlZCBrZXlzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4gb2JqZWN0LiIpKSk7CiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBhc09iamVjdChleGVjLT5hcmd1
bWVudCgwKSktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwg
ZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgSlNBcnJh
eSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CiAgICAgc2l6ZV90IG51bVBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bVByb3BlcnRpZXM7IGkrKykKQEAgLTMyNSwxNCArMzI1LDE0IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7CiAgICAgQVNTRVJUKChkZXNjcmlwdG9yLmF0dHJpYnV0ZXMoKSAmIEFjY2Vz
c29yKSB8fCAoIWRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkpOwogICAgIEFTU0VS
VCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwotICAgIE8tPm1ldGhvZFRhYmxlKCktPmRlZmluZU93
blByb3BlcnR5KE8sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lKSwgZGVzY3Jp
cHRvciwgdHJ1ZSk7CisgICAgTy0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blBy
b3BlcnR5KE8sIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lKSwgZGVzY3JpcHRv
ciwgdHJ1ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShPKTsKIH0KIAogc3RhdGljIEpT
VmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qs
IEpTT2JqZWN0KiBwcm9wZXJ0aWVzKQogewogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnR5
TmFtZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGllcyksIGV4ZWMsIHByb3BlcnR5TmFt
ZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KHByb3BlcnRpZXMp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChw
cm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CiAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0eU5hbWVzLnNpemUoKTsKICAg
ICBWZWN0b3I8UHJvcGVydHlEZXNjcmlwdG9yPiBkZXNjcmlwdG9yczsKICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBtYXJrQnVmZmVyOwpAQCAtMzU1LDcgKzM1NSw3IEBAIHN0YXRpYyBKU1ZhbHVl
IGRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXQKICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewotICAgICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
c1tpXSwgZGVzY3JpcHRvcnNbaV0sIHRydWUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFt
ZXNbaV0sIGRlc2NyaXB0b3JzW2ldLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIH0KQEAgLTM5OSw3ICsz
OTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAKICAgICAv
LyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtb
R2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00MDksNyAr
NDA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAg
ICAvLyBiLiBJZiBkZXNjLltbQ29uZmlndXJhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tDb25m
aWd1cmFibGVdXSB0byBmYWxzZS4KICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2Up
OwogICAgICAgICAvLyBjLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwg
bWV0aG9kIG9mIE8gd2l0aCBQLCBkZXNjLCBhbmQgdHJ1ZSBhcyBhcmd1bWVudHMuCi0gICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAq
aXRlciwgZGVzYywgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUpOwog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iaik7CiAgICAgfQpAQCAtNDI5LDE0ICs0MjksMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9iamVjdC5mcmVl
emUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3Qob2JqKTsKIAotICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSAm
JiAhaGFzSW5kZXhlZFByb3BlcnRpZXMob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKSB7CisgICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpICYmICFoYXNJbmRleGVkUHJv
cGVydGllcyhvYmplY3QtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBvYmplY3QtPmZyZWV6
ZShleGVjLT52bSgpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAg
IH0KIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2Fs
bGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4K
QEAgLTQ1MCw3ICs0NTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAgICAgICAgIC8vIGMuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQg
ZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNldENvbmZpZ3Vy
YWJsZShmYWxzZSk7CiAgICAgICAgIC8vIGQuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHld
XSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50
cy4KLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmpl
Y3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAqaXRlciwgZGVz
YywgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CkBAIC00ODQsNyArNDg0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAgLy8gMi4gRm9y
IGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9w
ZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNTE0LDcgKzUxNCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDIuIEZv
ciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVB
cnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJv
cGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRv
ciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAg
ICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBkZXNjcmlwdG9yLnNldEdldHRlcihnZXQpOwog
ICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVlKTsKICAgICBkZXNjcmlwdG9yLnNldENv
bmZpZ3VyYWJsZSh0cnVlKTsKLSAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsK
KyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMTQzLDcgKzE0Myw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBkZXNjcmlw
dG9yLnNldFNldHRlcihzZXQpOwogICAgIGRlc2NyaXB0b3Iuc2V0RW51bWVyYWJsZSh0cnVlKTsK
ICAgICBkZXNjcmlwdG9yLnNldENvbmZpZ3VyYWJsZSh0cnVlKTsKLSAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlm
aWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSks
IGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVj
LCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlw
dG9yLCBmYWxzZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQpAQCAtMjE0LDE0ICsyMTQsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyhleGVjLCBTdHJpbmcodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyBBU0NJSUxpdGVyYWwo
IltvYmplY3QgVW5kZWZpbmVkXSIpIDogQVNDSUlMaXRlcmFsKCJbb2JqZWN0IE51bGxdIikpKSk7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZXhlYyk7CiAK
LSAgICBKU1N0cmluZyogcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPm9iamVjdFRv
U3RyaW5nVmFsdWUoKTsKKyAgICBKU1N0cmluZyogcmVzdWx0ID0gdGhpc09iamVjdC0+c3RydWN0
dXJlKGV4ZWMtPnZtKCkpLT5vYmplY3RUb1N0cmluZ1ZhbHVlKCk7CiAgICAgaWYgKCFyZXN1bHQp
IHsKLSAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld1N0cmluZyA9IFdURjo6dHJ5TWFrZVN0
cmluZygiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUodGhp
c09iamVjdCksICJdIik7CisgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdTdHJpbmcgPSBX
VEY6OnRyeU1ha2VTdHJpbmcoIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKTsKICAgICAgICAgaWYgKCFuZXdT
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1v
cnlFcnJvcihleGVjKSk7CiAKICAgICAgICAgcmVzdWx0ID0ganNOb250cml2aWFsU3RyaW5nKGV4
ZWMsIG5ld1N0cmluZy5yZWxlYXNlKCkpOwotICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLT52bSgpLCB0aGlzT2JqZWN0LCByZXN1bHQp
OworICAgICAgICB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPnNldE9iamVjdFRv
U3RyaW5nVmFsdWUoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgcmVzdWx0KTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OSwxMSArNjksMTEgQEAgSlNWYWx1ZSBqc1R5cGVTdHJpbmdGb3JWYWx1ZShWTSYgdm0s
IEpTRwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKICAgICAgICAgLy8gUmV0dXJuICJ1bmRlZmlu
ZWQiIGZvciBvYmplY3RzIHRoYXQgc2hvdWxkIGJlIHRyZWF0ZWQKICAgICAgICAgLy8gYXMgbnVs
bCB3aGVuIGRvaW5nIGNvbXBhcmlzb25zLgotICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVj
dHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCisgICAgICAgIGlm
IChhc09iamVjdCh2KS0+c3RydWN0dXJlKHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9i
YWxPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRT
dHJpbmcoKTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhc09iamVjdCh2KTsKLSAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQorICAgICAgICBp
ZiAob2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEp
ICE9IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MuZnVu
Y3Rpb25TdHJpbmcoKTsKICAgICB9CiAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5vYmplY3RT
dHJpbmcoKTsKQEAgLTg5LDE1ICs4OSwxNSBAQCBib29sIGpzSXNPYmplY3RUeXBlKENhbGxGcmFt
ZSogY2FsbEZyYW1lCiAgICAgaWYgKCF2LmlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gdi5pc051
bGwoKTsKIAotICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpOworICAgIEpTVHlwZSB0eXBlID0gdi5hc0NlbGwoKS0+dHlwZSgpOwogICAg
IGlmICh0eXBlID09IFN0cmluZ1R5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
dHlwZSA+PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJl
KCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpKQorICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZShjYWxsRnJhbWUtPnZtKCkp
LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7
CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKLSAgICAgICAgaWYgKG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2Fs
bFR5cGVOb25lKQorICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZShjYWxsRnJhbWUtPnZt
KCkpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTU5Mzc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTEsNiArMjExLDcgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzQWRkKENh
bGxGcmFtZSogYwogCiBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yQ2hh
aW5BY2Nlc3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBzbG90
QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eU9mZnNldCYgc2xv
dE9mZnNldCkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgSlNDZWxsKiBj
ZWxsID0gYmFzZS5hc0NlbGwoKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgICAgICAKQEAg
LTIxOCwxMCArMjE5LDEwIEBAIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5G
b3IKICAgICAgICAgaWYgKGNlbGwtPmlzUHJveHkoKSkKICAgICAgICAgICAgIHJldHVybiBJbnZh
bGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKGNlbGwtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLmhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCgpKQorICAgICAg
ICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5oYXNJbXB1cmVHZXRPd25Qcm9w
ZXJ0eVNsb3QoKSkKICAgICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAg
ICAgICAgICAgICAKLSAgICAgICAgSlNWYWx1ZSB2ID0gY2VsbC0+c3RydWN0dXJlKCktPnByb3Rv
dHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOworICAgICAgICBKU1ZhbHVlIHYgPSBjZWxsLT5zdHJ1
Y3R1cmUodm0pLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKIAogICAgICAgICAvLyBJ
ZiB3ZSBkaWRuJ3QgZmluZCBzbG90QmFzZSBpbiBiYXNlJ3MgcHJvdG90eXBlIGNoYWluLCB0aGVu
IGJhc2UKICAgICAgICAgLy8gbXVzdCBiZSBhIHByb3h5IGZvciBhbm90aGVyIG9iamVjdC4KQEAg
LTIzNiwxMCArMjM3LDEwIEBAIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5G
b3IKIAogICAgICAgICAvLyBTaW5jZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBs
b29wLCBpdCdzIGEgZ29vZCBiZXQgdGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRy
ZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgotICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKSB7CisgICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rp
b25hcnkoKSkgewogICAgICAgICAgICAgYXNPYmplY3QoY2VsbCktPmZsYXR0ZW5EaWN0aW9uYXJ5
T2JqZWN0KGNhbGxGcmFtZS0+dm0oKSk7CiAgICAgICAgICAgICBpZiAoc2xvdEJhc2UgPT0gY2Vs
bCkKLSAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChj
YWxsRnJhbWUtPnZtKCksIHByb3BlcnR5TmFtZSk7IAorICAgICAgICAgICAgICAgIHNsb3RPZmZz
ZXQgPSBjZWxsLT5zdHJ1Y3R1cmUodm0pLT5nZXQoY2FsbEZyYW1lLT52bSgpLCBwcm9wZXJ0eU5h
bWUpOyAKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICsrY291bnQ7CkBAIC0yNTAs
MTIgKzI1MSwxMyBAQCBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yCiAK
IGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIEpTQ2VsbCogYmFzZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAg
c2l6ZV90IGNvdW50ID0gMDsKICAgICB3aGlsZSAoMSkgewogICAgICAgICBpZiAoYmFzZS0+aXNQ
cm94eSgpKQogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQcm90b3R5cGVDaGFpbjsKICAgICAg
ICAgICAgIAotICAgICAgICBKU1ZhbHVlIHYgPSBiYXNlLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBl
Rm9yTG9va3VwKGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IGJhc2UtPnN0cnVjdHVy
ZSh2bSktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOwogICAgICAgICBpZiAodi5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBjb3VudDsKIApAQCAtMjYzLDcgKzI2NSw3IEBAIGlu
bGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oQ2EKIAogICAgICAgICAvLyBTaW5j
ZSB3ZSdyZSBhY2Nlc3NpbmcgYSBwcm90b3R5cGUgaW4gYSBsb29wLCBpdCdzIGEgZ29vZCBiZXQg
dGhhdCBpdAogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5
LgotICAgICAgICBpZiAoYmFzZS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQorICAgICAg
ICBpZiAoYmFzZS0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkpCiAgICAgICAgICAgICBh
c09iamVjdChiYXNlKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT52bSgpKTsK
IAogICAgICAgICArK2NvdW50OwpAQCAtMjcyLDYgKzI3NCw3IEBAIGlubGluZSBzaXplX3Qgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oQ2EKIAogaW5saW5lIGJvb2wgaXNQcm90b3R5cGVDaGFpbk5v
cm1hbGl6ZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGZvciAoOzspIHsK
ICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gUHJveHlUeXBlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgwLDcgKzI4Myw3IEBAIGlubGluZSBib29s
IGlzUHJvdG90eXBlQ2hhaW5Ob3JtYWxpemVkKEoKICAgICAgICAgaWYgKHYuaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIAotICAgICAgICBzdHJ1Y3R1cmUg
PSB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgc3RydWN0dXJlID0gdi5hc0NlbGwo
KS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAoc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAko
cmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVy
dHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwpAQCAtMjAyLDYgKzIwMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICNlbmRpZgogCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0
YWw7CisKIHByaXZhdGU6CiAgICAgUHJvcGVydHlUYWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxD
YXBhY2l0eSk7CiAgICAgUHJvcGVydHlUYWJsZShWTSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5
VGFibGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZp
c2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAko
d29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oTGVhZlR5cGUsIDApLCBpbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgREVDTEFSRV9JTkZPOwpAQCAtODUsNiArODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJlZ0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5T
dHJpbmcpOyB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9u
IDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU0NlbGw6OlN0cnVj
dHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgSlNDZWxsOjpTdHJ1
Y3R1cmVGbGFnczsKIAogcHVibGljOgogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE1
OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NSwxMyArMTU1LDE0IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3Rh
dGlzdGljcygpCiAKIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5m
bywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUs
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAgIDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVT
dHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURU
YWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlwZShpbmRleGluZ1R5
cGUpCisgICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZvKQogICAgICwgbV9nbG9iYWxPYmplY3Qodm0s
IHRoaXMsIGdsb2JhbE9iamVjdCwgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0Pjo6TWF5QmVO
dWxsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIHByb3RvdHlwZSkKICAgICAsIG1fY2xh
c3NJbmZvKGNsYXNzSW5mbykKICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSW5pdGlh
bGl6ZWRXYXRjaGluZykKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5
cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9pbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKQogICAg
ICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtp
bmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFs
c2UpCkBAIC0xODMsMTIgKzE4NCwxMyBAQCBjb25zdCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2lu
Zm8gPSB7ICJTCiAKIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKICAgICA6IEpTQ2VsbChD
cmVhdGluZ0Vhcmx5Q2VsbCkKKyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJ
RFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKDApCisgICAg
LCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVj
dHVyZUlzSW1tb3J0YWwpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywganNOdWxsKCkpCiAg
ICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0
KEluaXRpYWxpemVkV2F0Y2hpbmcpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAg
ICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAg
LCBtX2luZGV4aW5nVHlwZSgwKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9k
aWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVy
dHlUYWJsZShmYWxzZSkKQEAgLTIwNSwxMiArMjA3LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJl
KFZNJiB2bSkKIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUq
IHByZXZpb3VzKQogICAgIDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRl
SUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlwZShwcmV2aW91cy0+aW5kZXhpbmdUeXBlSW5j
bHVkaW5nSGlzdG9yeSgpKQorICAgICwgbV90eXBlSW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50
eXBlKCksIHByZXZpb3VzLT50eXBlSW5mbygpLmZsYWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURh
dGEpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlw
ZSgpKQogICAgICwgbV9jbGFzc0luZm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90
cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJbml0aWFsaXplZFdhdGNoaW5nKQogICAgICwgbV9vZmZz
ZXQoaW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlwZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCku
dHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5mbGFncygpICYgflN0cnVjdHVyZUhhc1JhcmVE
YXRhKQotICAgICwgbV9pbmRleGluZ1R5cGUocHJldmlvdXMtPmluZGV4aW5nVHlwZUluY2x1ZGlu
Z0hpc3RvcnkoKSkKICAgICAsIG1faW5saW5lQ2FwYWNpdHkocHJldmlvdXMtPm1faW5saW5lQ2Fw
YWNpdHkpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5k
KQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0yMjMsNiArMjI2LDcg
QEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1YwogICAgICwgbV9kaWRU
cmFuc2l0aW9uKHRydWUpCiAgICAgLCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZChwcmV2aW91cy0+
bV9zdGF0aWNGdW5jdGlvblJlaWZpZWQpCiB7CisgICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUlu
Zm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpOwogICAgIGlmIChwcmV2aW91cy0+dHlwZUluZm8o
KS5zdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpICYmIHByZXZpb3VzLT5yYXJlRGF0YSgpLT5uZWVkc0Ns
b25pbmcoKSkKICAgICAgICAgY2xvbmVSYXJlRGF0YUZyb20odm0sIHByZXZpb3VzKTsKICAgICBl
bHNlIGlmIChwcmV2aW91cy0+cHJldmlvdXNJRCgpKQpAQCAtMjMzLDYgKzIzNywxMyBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgICAgIG1fZ2xvYmFsT2Jq
ZWN0LnNldCh2bSwgdGhpcywgcHJldmlvdXMtPm1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKIH0KIAor
U3RydWN0dXJlOjp+U3RydWN0dXJlKCkKK3sKKyAgICBpZiAodHlwZUluZm8oKS5zdHJ1Y3R1cmVJ
c0ltbW9ydGFsKCkpCisgICAgICAgIHJldHVybjsKKyAgICBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZGVhbGxvY2F0ZUlEKHRoaXMsIG1fc3RydWN0dXJlSUQpOworfQorCiB2
b2lkIFN0cnVjdHVyZTo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCiB7CiAgICAgc3RhdGljX2Nhc3Q8
U3RydWN0dXJlKj4oY2VsbCktPlN0cnVjdHVyZTo6flN0cnVjdHVyZSgpOwpAQCAtMzU1LDYgKzM2
Niw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKIAogYm9vbCBT
dHJ1Y3R1cmU6OmFueU9iamVjdEluQ2hhaW5NYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBj
b25zdAogeworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdCgpLT52bSgpOwogICAgIGZvciAoY29u
c3QgU3RydWN0dXJlKiBjdXJyZW50ID0gdGhpczsgOykgewogICAgICAgICBpZiAoY3VycmVudC0+
bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTM2Myw3ICszNzUsNyBAQCBib29sIFN0cnVjdHVyZTo6YW55T2JqZWN0SW5DaGFpbk1heUlu
dGVyCiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIAotICAgICAgICBjdXJyZW50ID0gYXNPYmplY3QocHJvdG90eXBlKS0+
c3RydWN0dXJlKCk7CisgICAgICAgIGN1cnJlbnQgPSBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1
Y3R1cmUodm0pOwogICAgIH0KIH0KIApAQCAtMTAwOSw3ICsxMDIxLDcgQEAgYm9vbCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZQogICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgY3VycmVu
dCA9IHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIGN1cnJlbnQgPSBw
cm90b3R5cGUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAogICAgICAgICB1bnNp
Z25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTU5Mzc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDYgKzc4LDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXksIHVu
c2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7CisKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC05NSw2ICs5
Nyw4IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHB1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlSUQ7IH0KKwogICAgIHN0YXRpYyB2b2lkIGR1bXBT
dGF0aXN0aWNzKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgU3RydWN0dXJlKiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJvcGVydHlPZmZzZXQmLCBQ
dXRQcm9wZXJ0eVNsb3Q6OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6OlVua25vd25Db250ZXh0
KTsKQEAgLTMwMSw2ICszMDUsMjEgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisgICAgaW50MzJfdCBv
YmplY3RJbml0aWFsaXphdGlvbkZpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KCZtX2luZGV4aW5nVHlwZSk7CisgICAg
fQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCisgICAgeworICAg
ICAgICAvLyBXZSBsb2FkIG1fc3RydWN0dXJlSUQsIG1faW5kZXhpbmdUeXBlLCBhbmQgbV90eXBl
SW5mbyBpbiBhIHNpbmdsZQorICAgICAgICAvLyA2NC1iaXQgaW5zdHJ1Y3Rpb24sIHNvIHdlIG5l
ZWQgdG8gbWFrZSBzdXJlIHRoZXkncmUgcHJvcGVybHkgYWxpZ25lZC4KKyAgICAgICAgQVNTRVJU
KE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fc3RydWN0dXJlSUQpID09IDgpOworICAgICAg
ICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9pbmRleGluZ1R5cGUpID09IDEy
KTsKKyAgICAgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8p
ID09IDEzKTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fc3Ry
dWN0dXJlSUQpOworICAgIH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3By
b3RvdHlwZSk7CkBAIC00NjksNyArNDg4LDEzIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0
IGludCBzX21heFRyYW5zaXRpb25MZW5ndGhGb3JOb25FdmFsUHV0QnlJZCA9IDUxMjsKIAogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAz
OwotICAgICAgICAKKyAgICAKKyAgICAvLyBUaGVzZSBuZWVkIHRvIGJlIHByb3Blcmx5IGFsaWdu
ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgJ1N0cnVjdHVyZScKKyAgICAvLyBwYXJ0IG9mIHRo
ZSBvYmplY3QuCisgICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJRDsKKyAgICBJbmRleGluZ1R5
cGUgbV9pbmRleGluZ1R5cGU7CisgICAgVHlwZUluZm8gbV90eXBlSW5mbzsKKwogICAgIFdyaXRl
QmFycmllcjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVy
PFVua25vd24+IG1fcHJvdG90eXBlOwogICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwpAQCAtNDkzLDggKzUxOCw2IEBAIHByaXZh
dGU6CiAgICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3Rz
CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKLSAgICBUeXBlSW5mbyBtX3R5cGVJbmZv
OwotICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgICB1aW50OF90IG1faW5saW5l
Q2FwYWNpdHk7CiAgICAgCiAgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lv
biAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5n
ZXQoKTsgfQogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIHsg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsgfQor
ICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNjQsNiArNjcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7
CisKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkK
ICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisK
KyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUg
PHd0Zi9EYXRhTG9nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitTdHJ1Y3R1cmVJRFRhYmxlOjpT
dHJ1Y3R1cmVJRFRhYmxlKCkKKyAgICA6IG1fZmlyc3RGcmVlT2Zmc2V0KDApCisgICAgLCBtX3Rh
YmxlKG5ldyBTdHJ1Y3R1cmVPck9mZnNldFtzX2luaXRpYWxTaXplXSkKKyAgICAsIG1fc2l6ZSgw
KQorICAgICwgbV9jYXBhY2l0eShzX2luaXRpYWxTaXplKQoreworICAgIC8vIFdlIHByZS1hbGxv
Y2F0ZSB0aGUgZmlyc3Qgb2Zmc2V0IHNvIHRoYXQgdGhlIG51bGwgU3RydWN0dXJlCisgICAgLy8g
Y2FuIHN0aWxsIGJlIHJlcHJlc2VudGVkIGFzIHRoZSBTdHJ1Y3R1cmVJRCAnMCcuCisgICAgYWxs
b2NhdGVJRCgwKTsKK30KKworU3RydWN0dXJlSURUYWJsZTo6flN0cnVjdHVyZUlEVGFibGUoKQor
eworICAgIGRlbGV0ZSBbXSBtX3RhYmxlOworfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OnJl
c2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpCit7CisgICAgLy8gQ3JlYXRlIHRoZSBuZXcgdGFibGUu
CisgICAgU3RydWN0dXJlT3JPZmZzZXQqIG5ld1RhYmxlID0gbmV3IFN0cnVjdHVyZU9yT2Zmc2V0
W25ld0NhcGFjaXR5XTsKKworICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBvbGQgdGFi
bGUgdG8gdGhlIG5ldyB0YWJsZS4KKyAgICBtZW1jcHkobmV3VGFibGUsIG1fdGFibGUsIG1fY2Fw
YWNpdHkgKiBzaXplb2YoU3RydWN0dXJlT3JPZmZzZXQpKTsKKworICAgIC8vIFN0b3JlIGZlbmNl
IHRvIG1ha2Ugc3VyZSB3ZSd2ZSBjb3BpZWQgZXZlcnl0aGluZyBiZWZvcmUgZG9pbmcgdGhlIHN3
YXAuCisgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKworICAgIC8vIFN3YXAgdGhlIG9sZCBh
bmQgbmV3IHRhYmxlcy4KKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogb2xkVGFibGUgPSBtX3RhYmxl
OworICAgIG1fdGFibGUgPSBuZXdUYWJsZTsKKworICAgIC8vIFB1dCB0aGUgb2xkIHRhYmxlIChu
b3cgbGFiZWxlZCBhcyBuZXcpIGludG8gdGhlIGxpc3Qgb2Ygb2xkIHRhYmxlcy4KKyAgICBtX29s
ZFRhYmxlcy5hcHBlbmQob2xkVGFibGUpOworCisgICAgLy8gVXBkYXRlIHRoZSBjYXBhY2l0eS4K
KyAgICBtX2NhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7Cit9CisKK3ZvaWQgU3RydWN0dXJlSURUYWJs
ZTo6Zmx1c2hPbGRUYWJsZXMoKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29s
ZFRhYmxlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVsZXRlIFtdIG1fb2xkVGFibGVzW2ldOwor
ICAgIG1fb2xkVGFibGVzLmNsZWFyKCk7Cit9CisKK1N0cnVjdHVyZUlEIFN0cnVjdHVyZUlEVGFi
bGU6OmFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICBpZiAoIW1fZmlyc3RGcmVlT2Zmc2V0KSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fY2FwYWNpdHkgPD0gVUlOVF9NQVgpOworICAgICAgICBpZiAobV9zaXplID09IG1fY2FwYWNp
dHkpCisgICAgICAgICAgICByZXNpemUobV9jYXBhY2l0eSAqIDIpOworICAgICAgICBBU1NFUlQo
bV9zaXplIDwgbV9jYXBhY2l0eSk7CisKKyAgICAgICAgU3RydWN0dXJlT3JPZmZzZXQgbmV3RW50
cnk7CisgICAgICAgIG5ld0VudHJ5LnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKworICAgICAgICBT
dHJ1Y3R1cmVJRCByZXN1bHQgPSBtX3NpemU7CisgICAgICAgIG1fdGFibGVbcmVzdWx0XSA9IG5l
d0VudHJ5OworICAgICAgICBtX3NpemUrKzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBTdHJ1Y3R1cmVJRCByZXN1bHQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2Zp
cnN0RnJlZU9mZnNldCA9IG1fdGFibGVbbV9maXJzdEZyZWVPZmZzZXRdLm9mZnNldDsKKyAgICBt
X3RhYmxlW3Jlc3VsdF0uc3RydWN0dXJlID0gc3RydWN0dXJlOworICAgIHJldHVybiByZXN1bHQ7
CisjZWxzZQorICAgIHJldHVybiBzdHJ1Y3R1cmU7CisjZW5kaWYKK30KKwordm9pZCBTdHJ1Y3R1
cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUkVMRUFTRV9BU1NFUlQo
bV90YWJsZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJlID09IHN0cnVjdHVyZSk7CisgICAgbV90YWJs
ZVtzdHJ1Y3R1cmVJRF0ub2Zmc2V0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9maXJzdEZy
ZWVPZmZzZXQgPSBzdHJ1Y3R1cmVJRDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVy
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0cnVjdHVyZUlEKTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU3RydWN0dXJlSURUYWJsZV9oCisjZGVmaW5lIFN0cnVj
dHVyZUlEVGFibGVfaAorCisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJ1Y3R1cmU7CisKKyNpZiBV
U0UoSlNWQUxVRTY0KQordHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJRDsKKyNlbHNlCit0eXBl
ZGVmIFN0cnVjdHVyZSogU3RydWN0dXJlSUQ7CisjZW5kaWYKKworY2xhc3MgU3RydWN0dXJlSURU
YWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoK
KyAgICBTdHJ1Y3R1cmVJRFRhYmxlKCk7CisgICAgflN0cnVjdHVyZUlEVGFibGUoKTsKKworICAg
IHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxl
KTsgfQorCisgICAgU3RydWN0dXJlKiBnZXQoU3RydWN0dXJlSUQpOworICAgIHZvaWQgZGVhbGxv
Y2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0
ZUlEKFN0cnVjdHVyZSopOworCisgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpOworCitwcml2YXRl
OgorICAgIHZvaWQgcmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSk7CisgICAgCisgICAgdW5pb24g
U3RydWN0dXJlT3JPZmZzZXQgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICAg
ICAgU3RydWN0dXJlSUQgb2Zmc2V0OworICAgIH07CisKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNfaW5pdGlhbFNpemUgPSAyNTY7CisKKyAgICBWZWN0b3I8U3RydWN0dXJlT3JPZmZzZXQqPiBt
X29sZFRhYmxlczsKKyAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBTdHJ1Y3R1
cmVPck9mZnNldCogbV90YWJsZTsKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX2Nh
cGFjaXR5OworfTsKKworaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0
cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJu
IG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIHN0cnVj
dHVyZUlEOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3Ry
dWN0dXJlSURUYWJsZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Nyw2ICs0ODcsOSBAQCBw
dWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCitwcm90ZWN0ZWQ6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2YXRlOgogICAgIFNoYXJlZFN5bWJvbFRhYmxl
KFZNJiB2bSkKICAgICAgICAgOiBKU0NlbGwodm0sIHZtLnNoYXJlZFN5bWJvbFRhYmxlU3RydWN0
dXJlLmdldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJh
eVR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlUeXBlLmNwcAkocmV2aXNpb24gMTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisvKgogY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm9Gb3JUeXBlKFR5cGVkQXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBA
IC02MSw2ICs2Miw0MCBAQCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvclR5cGUoVHlwZWRB
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KKyov
CisKK0pTVHlwZSB0eXBlRm9yVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE5vdFR5cGVkQXJyYXk6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBVbnNwZWNpZmllZFR5
cGU7CisgICAgY2FzZSBUeXBlSW50ODoKKyAgICAgICAgcmV0dXJuIEludDhBcnJheVR5cGU7Cisg
ICAgY2FzZSBUeXBlVWludDg6CisgICAgICAgIHJldHVybiBVaW50OEFycmF5VHlwZTsKKyAgICBj
YXNlIFR5cGVVaW50OENsYW1wZWQ6CisgICAgICAgIHJldHVybiBVaW50OENsYW1wZWRBcnJheVR5
cGU7CisgICAgY2FzZSBUeXBlSW50MTY6CisgICAgICAgIHJldHVybiBJbnQxNkFycmF5VHlwZTsK
KyAgICBjYXNlIFR5cGVVaW50MTY6CisgICAgICAgIHJldHVybiBVaW50MTZBcnJheVR5cGU7Cisg
ICAgY2FzZSBUeXBlSW50MzI6CisgICAgICAgIHJldHVybiBJbnQzMkFycmF5VHlwZTsKKyAgICBj
YXNlIFR5cGVVaW50MzI6CisgICAgICAgIHJldHVybiBVaW50MzJBcnJheVR5cGU7CisgICAgY2Fz
ZSBUeXBlRmxvYXQzMjoKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheVR5cGU7CisgICAgY2Fz
ZSBUeXBlRmxvYXQ2NDoKKyAgICAgICAgcmV0dXJuIEZsb2F0NjRBcnJheVR5cGU7CisgICAgY2Fz
ZSBUeXBlRGF0YVZpZXc6CisgICAgICAgIHJldHVybiBEYXRhVmlld1R5cGU7CisKKyAgICBkZWZh
dWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm4gVW5zcGVjaWZpZWRUeXBlOworICAgIH0KK30KIAogY29uc3QgQ2xhc3NJbmZvKiBjb25zdHJ1
Y3RvckNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAkocmV2aXNpb24g
MTU5Mzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBUeXBlZEFycmF5VHlw
ZV9oCiAjZGVmaW5lIFR5cGVkQXJyYXlUeXBlX2gKIAorI2luY2x1ZGUgIkpTVHlwZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMCw4ICsx
MDEsOCBAQCBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKFR5cGVkQXJyYXlUeXBlCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgbG9nRWxlbWVudFNpemUodHlwZSk7CiB9CiAK
LWNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7CiBjb25z
dCBDbGFzc0luZm8qIGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7
CitKU1R5cGUgdHlwZUZvclR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAogaW5saW5l
IGJvb2wgaXNJbnQoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE1OTM3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsMTkgQEAgdXNp
bmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyNpZiAhVVNFKFBUSFJFQURf
R0VUU1BFQ0lGSUNfRElSRUNUKQorV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBWTTo6c19jdXJyZW50
Vk0gPSAwOworCit2b2lkIFZNOjppbml0aWFsaXplKCkKK3sKKyAgICBXVEY6OnRocmVhZFNwZWNp
ZmljS2V5Q3JlYXRlKCZzX2N1cnJlbnRWTSwgMCk7Cit9CisjZWxzZQordm9pZCBWTTo6aW5pdGlh
bGl6ZSgpCit7Cit9CisjZW5kaWYKKwogZXh0ZXJuIGNvbnN0IEhhc2hUYWJsZSBhcnJheUNvbnN0
cnVjdG9yVGFibGU7CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIGFycmF5UHJvdG90eXBlVGFibGU7
CiBleHRlcm4gY29uc3QgSGFzaFRhYmxlIGJvb2xlYW5Qcm90b3R5cGVUYWJsZTsKQEAgLTI5NCw2
ICszMDcsOCBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
Ly8gSW5pdGlhbGl6ZSB0aGlzIGxhc3QsIGFzIGEgZnJlZSB3YXkgb2YgYXNzZXJ0aW5nIHRoYXQg
Vk0gaW5pdGlhbGl6YXRpb24gaXRzZWxmCiAgICAgLy8gd29uJ3QgdXNlIHRoaXMuCiAgICAgbV90
eXBlZEFycmF5Q29udHJvbGxlciA9IGFkb3B0UmVmKG5ldyBTaW1wbGVUeXBlZEFycmF5Q29udHJv
bGxlcigpKTsKKworICAgIFZNOjpzZXRDdXJyZW50Vk0oMCk7CiB9CiAKIFZNOjp+Vk0oKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2
MSwxNCBAQAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2VuZGlmCiAKKyNpZiBPUyhE
QVJXSU4pCisjaW5jbHVkZSA8U3lzdGVtL3B0aHJlYWRfbWFjaGRlcC5oPgorCisjaWYgIWRlZmlu
ZWQoV1RGX1VTRV9QVEhSRUFEX0dFVF9TUEVDSUZJQ19ESVJFQ1QpICYmIGRlZmluZWQoX19QVEtf
RlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTEpCisjZGVmaW5lIFdURl9VU0VfUFRIUkVBRF9H
RVRTUEVDSUZJQ19ESVJFQ1QgMQorI2VuZGlmCisjZW5kaWYgLy8gT1MoREFSV0lOKQorCiBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKQEAgLTQ1NiwxMCArNDY0LDIwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkaXNjYXJkQWxsQ29kZSgpOwogCisgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsK
KyAgICAgICAgc3RhdGljIFZNKiBjdXJyZW50Vk0oKTsKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0
Q3VycmVudFZNKFZNKik7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25T
Y29wZTsKLSAgICAgICAgCisKKyNpZiBVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBjb25zdCBwdGhyZWFkX2tleV90IHNfY3Vy
cmVudFZNID0gX19QVEtfRlJBTUVXT1JLX0pBVkFTQ1JJUFRDT1JFX0tFWTE7CisjZWxzZQorICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgV1RGOjpUaHJlYWRTcGVjaWZpY0tleSBzX2N1
cnJlbnRWTTsKKyNlbmRpZgorCiAgICAgICAgIFZNKFZNVHlwZSwgSGVhcFR5cGUpOwogICAgICAg
ICBzdGF0aWMgVk0qJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3Jl
YXRlTmF0aXZlVGh1bmsoKTsKQEAgLTQ5OCw2ICs1MTYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHJldHVybiAmbV92bS0+aGVhcDsKICAgICB9CiAKKyAgICBpbmxpbmUgVk0qIFZNOjpj
dXJyZW50Vk0oKQorICAgIHsKKyNpZiBVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFZNKj4ocHRocmVhZF9nZXRzcGVjaWZpYyhz
X2N1cnJlbnRWTSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Vk0q
PihXVEY6OnRocmVhZFNwZWNpZmljR2V0KHNfY3VycmVudFZNKSk7CisjZW5kaWYKKyAgICB9Cisg
ICAgCisgICAgaW5saW5lIHZvaWQgVk06OnNldEN1cnJlbnRWTShWTSogdm0pCisgICAgeworI2lm
IFVTRShQVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyAgICAgICAgcHRocmVhZF9zZXRzcGVj
aWZpYyhzX2N1cnJlbnRWTSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0pKTsKKyNlbHNlCisg
ICAgICAgIFdURjo6dGhyZWFkU3BlY2lmaWNTZXQoc19jdXJyZW50Vk0sIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHZtKSk7CisjZW5kaWYKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gVk1faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwRGF0YS5oCShyZXZpc2lvbiAxNTkzNzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9XZWFrTWFwRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiBwcml2YXRlOgogICAgIFdlYWtNYXBEYXRhKFZNJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>217204</attachid>
            <date>2013-11-18 09:32:46 -0800</date>
            <delta_ts>2013-11-18 09:32:46 -0800</delta_ts>
            <desc>jsc benchmark results</desc>
            <filename>ToT_32Bit_SunSpiderLongSpiderV8SpiderOctaneKrakenJSRegress_Marks-Mac-Pro_20131116_1921_report.txt</filename>
            <type>text/plain</type>
            <size>36798</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIGFuZCBKU1JlZ3Jlc3Mgb24gTWFya3MtTWFjLVBybyAoTWFjUHJvNSwxKS4K
ClZNcyB0ZXN0ZWQ6CiJUb1QiIGF0IC9Wb2x1bWVzL0RhdGEvV2ViS2l0LXN2bi1jbGVhbi9PcGVu
U291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNjIChyMTU5Mzc1KQoiMzJCaXQiIGF0IC9Wb2x1
bWVzL0RhdGEvV2ViS2l0LXN2bi0wMS9PcGVuU291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2UvanNj
IChyMTU5Mzc1KQoKQ29sbGVjdGVkIDE2IHNhbXBsZXMgcGVyIGJlbmNobWFyay9WTSwgd2l0aCA0
IFZNIGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0
d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIg
Vk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljIHByZWNpc2VU
aW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxldmVsCnRpbWluZy4gUmVwb3J0aW5n
IGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMg
aW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICAgMzJCaXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3VuU3BpZGVyOgogICAzZC1jdWJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjEzMzErLTAuMTEzNyAg
ICAgISAgICAgIDYuNjYxOSstMC4wNzM2ICAgICAgICAhIGRlZmluaXRlbHkgMS4wODYyeCBzbG93
ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny40ODE3Ky0wLjA1NDAgICAgID8gICAgICA3LjU2OTIrLTAuMDQwNyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMTd4IHNsb3dlcgogICAzZC1yYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjUyMzIrLTAuMTEyNCAgICAgPyAgICAgIDcuNjYzNCstMC4xNDI5ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE4Nnggc2xvd2VyCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNjc2MystMC4wMjA0ICAgICA/ICAgICAgMS43
MTM0Ky0wLjA0NjMgICAgICAgID8gbWlnaHQgYmUgMS4wMjIxeCBzbG93ZXIKICAgYWNjZXNzLWZh
bm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi43MDIyKy0wLjA2NjMg
ICAgID8gICAgICA2LjczMjIrLTAuMDMyMiAgICAgICAgPwogICBhY2Nlc3MtbmJvZHkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjUyNzYrLTAuMDI5OCAgICAgPyAgICAg
IDMuNTcyMSstMC4wMzc2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNnggc2xvd2VyCiAgIGFjY2Vz
cy1uc2lldmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDE2MystMC4w
NzcyICAgICAgICAgICAgNC4zOTE4Ky0wLjA2NjIgICAgICAgIAogICBiaXRvcHMtM2JpdC1iaXRz
LWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjYwMjIrLTAuMDMyMyAgICAgICAg
ICAgIDEuNTc2MSstMC4wMzEwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2NnggZmFzdGVyCiAgIGJp
dG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODUzNist
MC4wOTk1ICAgICA/ICAgICAgNS45MDUwKy0wLjEwNTEgICAgICAgID8KICAgYml0b3BzLWJpdHdp
c2UtYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40MjEyKy0wLjA1MDMgICAg
ICAgICAgICAyLjM2NTIrLTAuMDU2MyAgICAgICAgICBtaWdodCBiZSAxLjAyMzd4IGZhc3Rlcgog
ICBiaXRvcHMtbnNpZXZlLWJpdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkz
MzgrLTAuMDUwOCAgICAgICAgICAgIDMuODU2MCstMC4wNDIxICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIwMnggZmFzdGVyCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNjI2MSstMC4wNDA1ICAgICAgICAgICAgMi41NzExKy0wLjA0MzcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjE0eCBmYXN0ZXIKICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC40OTI0Ky0wLjA1MzEgICAgICEgICAgICA0LjczMDMr
LTAuMDgwNCAgICAgICAgISBkZWZpbml0ZWx5IDEuMDUzMHggc2xvd2VyCiAgIGNyeXB0by1tZDUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzY2MSstMC4wNTQ5ICAg
ICA/ICAgICAgMi44MzkxKy0wLjA2NzQgICAgICAgID8gbWlnaHQgYmUgMS4wMjY0eCBzbG93ZXIK
ICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41
MTU2Ky0wLjA0NjUgICAgID8gICAgICAyLjU5NDUrLTAuMDQxNyAgICAgICAgPyBtaWdodCBiZSAx
LjAzMTR4IHNsb3dlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA5LjMyMTArLTAuMTc2MCAgICAgPyAgICAgIDkuNTUzNystMC4xNDIzICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI1MHggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDYuNzU0OCstMC4xMDEwICAgICAhICAgICAgNi45NDE0
Ky0wLjA3OTUgICAgICAgICEgZGVmaW5pdGVseSAxLjAyNzZ4IHNsb3dlcgogICBtYXRoLWNvcmRp
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjkxNjgrLTAuMDc3MiAg
ICAgXiAgICAgIDMuNTU3MistMC4wODAxICAgICAgICBeIGRlZmluaXRlbHkgMS4xMDExeCBmYXN0
ZXIKICAgbWF0aC1wYXJ0aWFsLXN1bXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OC41NzQwKy0wLjA2MDUgICAgICAgICAgICA4LjQ1NDArLTAuMDcyOCAgICAgICAgICBtaWdodCBi
ZSAxLjAxNDJ4IGZhc3RlcgogICBtYXRoLXNwZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjMyNTUrLTAuMDM1OSAgICAgPyAgICAgIDIuMzMyOCstMC4wNDQ5ICAg
ICAgICA/CiAgIHJlZ2V4cC1kbmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTAuMTcyOCstMC4xNzE0ICAgICA/ICAgICAxMC40MzMxKy0wLjEzOTEgICAgICAgID8gbWln
aHQgYmUgMS4wMjU2eCBzbG93ZXIKICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC40ODE4Ky0wLjA2OTkgICAgID8gICAgICA0LjQ5ODcrLTAuMDYz
MSAgICAgICAgPwogICBzdHJpbmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjY5MzgrLTAuMTIxNyAgICAgISAgICAgIDkuMTEzMSstMC4xMTMxICAgICAgICAh
IGRlZmluaXRlbHkgMS4wNDgyeCBzbG93ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMi4wNjU1Ky0wLjEyNzYgICAgID8gICAgIDEyLjM1NTIr
LTAuMjAyMCAgICAgICAgPyBtaWdodCBiZSAxLjAyNDB4IHNsb3dlcgogICBzdHJpbmctdW5wYWNr
LWNvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjU5NDMrLTAuMTk4MyAgICAg
ISAgICAgMjUuMTc1OCstMC4xNzk5ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjM2eCBzbG93ZXIK
ICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4y
Mzg3Ky0wLjM1ODggICAgIF4gICAgICA1Ljc3OTQrLTAuMDkwMCAgICAgICAgXiBkZWZpbml0ZWx5
IDEuMDc5NXggZmFzdGVyCgogICA8YXJpdGhtZXRpYz4gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjE4NTArLTAuMDMxNyAgICAgISAgICAgIDYuMjY2OCstMC4wMzAzICAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMTMyeCBzbG93ZXIKICAgPGdlb21ldHJpYz4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4wMTEwKy0wLjAyNzYgICAgID8gICAgICA1
LjA0NTMrLTAuMDI2OSAgICAgICAgPyBtaWdodCBiZSAxLjAwNjh4IHNsb3dlcgogICA8aGFybW9u
aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEzMTIrLTAuMDI1
NSAgICAgPyAgICAgIDQuMTM5NSstMC4wMjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDAyMHggc2xv
d2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgICAzMkJpdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIApMb25nU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxODE2Ljg0MzUrLTYuNDczMyAgICAgISAgIDIzNTgu
MzkwMistMTEuMzgyOSAgICAgICAhIGRlZmluaXRlbHkgMS4yOTgxeCBzbG93ZXIKICAgM2QtbW9y
cGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI1MC4xNTM1Ky0xLjE3
ODcgICAgID8gICAxMjUyLjIxNzQrLTEuMDUxMCAgICAgICAgPwogICAzZC1yYXl0cmFjZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjM4LjAxNjYrLTExLjA4MjQgICAgISAg
IDEyNjQuODg1NCstMi44NjAyICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjE3eCBzbG93ZXIKICAg
YWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgxMS4yNDA2
Ky05LjAwNDkgICAgICEgICAxODQ5LjQyNDIrLTEyLjQxNjAgICAgICAgISBkZWZpbml0ZWx5IDEu
MDIxMXggc2xvd2VyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1NDguNTYzNistNC42OTcyICAgICAgICAgIDU0My42MDYxKy0wLjU1ODcgICAgICAg
IAogICBhY2Nlc3MtbmJvZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjQ2
LjQ2NjgrLTIuMTAxMSAgICAgXiAgIDEyMzYuNDUwMSstMS42NjI3ICAgICAgICBeIGRlZmluaXRl
bHkgMS4wMDgxeCBmYXN0ZXIKICAgYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTM0My42NDYzKy0zLjM1MzEgICAgICAgICAxMzQyLjM2NDYrLTMuOTI0MyAg
ICAgICAgCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAxMDAuNDMzNSstMC4xNTMyICAgICAgICAgIDEwMC4zMjYxKy0wLjE0ODcgICAgICAgIAogICBi
aXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTA4LjA5NDcr
LTcuNDY5NiAgICAgPyAgICA1MTMuMDczMSstOC45NTkyICAgICAgICA/CiAgIGJpdG9wcy1uc2ll
dmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NzQuNjQwNCstMi4wODE0ICAg
ICAhICAgIDg4MS45ODczKy0xLjE5ODMgICAgICAgICEgZGVmaW5pdGVseSAxLjAwODR4IHNsb3dl
cgogICBjb250cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEy
LjMxNzgrLTIuMzQwNCAgICAgISAgIDExMjUuNTM1MystMi42NjY1ICAgICAgICAhIGRlZmluaXRl
bHkgMS4wMTE5eCBzbG93ZXIKICAgY3J5cHRvLWFlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTM4MC45MDk0Ky02LjMzMTkgICAgID8gICAxMzkwLjc1MjkrLTYuOTA0NSAg
ICAgICAgPwogICBjcnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOTk0LjIxMDQrLTEuNTY0MiAgICAgISAgIDEwNTcuODQxOCstMS44MzgyICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wNjQweCBzbG93ZXIKICAgY3J5cHRvLXNoYTEgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQwOS43MTQwKy0yMy43MzEwICAgICEgICAxNDQ0LjYzNjYrLTIu
NzgzMyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDI0OHggc2xvd2VyCiAgIGRhdGUtZm9ybWF0LXRv
ZnRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NjYuMDg1MCstNC41Nzk2ICAgICAh
ICAgIDk4Ny42NzE3Ky01LjMxMTEgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjN4IHNsb3dlcgog
ICBkYXRlLWZvcm1hdC14cGFyYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTc5LjIx
OTMrLTExLjg5NjAgICAgISAgIDEyMDMuNDE3MSstOC45Nzc3ICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMjA1eCBzbG93ZXIKICAgbWF0aC1jb3JkaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTQ4Mi42MzEzKy03LjIwNDYgICAgIF4gICAxMzczLjAwNDUrLTUwLjc1MzcgICAg
ICAgXiBkZWZpbml0ZWx5IDEuMDc5OHggZmFzdGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTAuNjQ2MSstMS4yMjA2ICAgICBeICAgMTA4NC44
OTQ4Ky0wLjk4MTEgICAgICAgIF4gZGVmaW5pdGVseSAxLjAwNTN4IGZhc3RlcgogICBtYXRoLXNw
ZWN0cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTA3LjU4MTYrLTAuNzI3
MSAgICAgPyAgIDE1MDcuODU3NSstMC43MDk2ICAgICAgICA/CiAgIHN0cmluZy1iYXNlNjQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MzAuNjQ3NistMS4wMjM4ICAgICAhICAg
IDQ0MC40MTE2Ky0xLjk5MjkgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjd4IHNsb3dlcgogICBz
dHJpbmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODQwLjI2MDQr
LTIuMDM1OCAgICAgISAgICA4ODQuNzM1OSstMy41MDEwICAgICAgICAhIGRlZmluaXRlbHkgMS4w
NTI5eCBzbG93ZXIKICAgc3RyaW5nLXRhZ2Nsb3VkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMxNy4wOTc3Ky0wLjcxMzAgICAgICEgICAgMzIxLjExNTMrLTEuMDkxNCAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDEyN3ggc2xvd2VyCgogICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMDY1Ljg4MjcrLTEuMTg5NyAgICAgISAgIDEwOTguMzkw
OSstMi4wMTU0ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMzA1eCBzbG93ZXIKICAgPGdlb21ldHJp
Yz4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkxNS40MDkzKy0wLjc5OTcg
ICAgICEgICAgOTM0LjUyMjErLTAuOTQ4MiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDIwOXggc2xv
d2VyCiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
NjAuNzkzNystMC41OTc0ICAgICAhICAgIDY2OC4yNzg2Ky0wLjU4NjAgICAgICAgICEgZGVmaW5p
dGVseSAxLjAxMTN4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICAgMzJCaXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKVjhTcGlkZXI6CiAgIGNyeXB0byAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjYuMjEyMSstMC4xNjIz
ICAgICAhICAgICA2Ny4xMzYxKy0wLjIwMzIgICAgICAgICEgZGVmaW5pdGVseSAxLjAxNDB4IHNs
b3dlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgzLjQwOTArLTAuMjU0NyAgICAgISAgICAgODUuNjY0OSstMC4zOTE1ICAgICAgICAhIGRlZmlu
aXRlbHkgMS4wMjcweCBzbG93ZXIKICAgZWFybGV5LWJveWVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1OC41NDg2Ky0wLjMzMDcgICAgICEgICAgIDU5LjM0MjIrLTAuMzU0
MyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDEzNnggc2xvd2VyCiAgIHJheXRyYWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMuNzYyMistMC4yMDU3ICAgICBeICAg
ICAzMi40NzU4Ky0wLjEyOTIgICAgICAgIF4gZGVmaW5pdGVseSAxLjAzOTZ4IGZhc3RlcgogICBy
ZWdleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5Ljk1MTAr
LTAuMTk4NCAgICAgISAgICAgODEuMjk2NSstMC4yODI5ICAgICAgICAhIGRlZmluaXRlbHkgMS4w
MTY4eCBzbG93ZXIKICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5NC4wNDQzKy0wLjcxODcgICAgIF4gICAgIDkwLjIzODArLTAuNDk1MyAgICAgICAg
XiBkZWZpbml0ZWx5IDEuMDQyMnggZmFzdGVyCiAgIHNwbGF5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzguODI5OCstMC4zNzM0ICAgICAhICAgICA0MC4xOTA4
Ky0wLjIxODUgICAgICAgICEgZGVmaW5pdGVseSAxLjAzNTF4IHNsb3dlcgoKICAgPGFyaXRobWV0
aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NC45NjUzKy0wLjA4NjMg
ICAgID8gICAgIDY1LjE5MjArLTAuMTc0OCAgICAgICAgPyBtaWdodCBiZSAxLjAwMzV4IHNsb3dl
cgogICA8Z2VvbWV0cmljPiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYx
LjExOTYrLTAuMTAyNiAgICAgPyAgICAgNjEuMzM5NystMC4xNDk2ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDAzNnggc2xvd2VyCiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTcuMDUwNCstMC4xNTA1ICAgICA/ICAgICA1Ny4xNTA5Ky0wLjEyOTYgICAg
ICAgID8gbWlnaHQgYmUgMS4wMDE4eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAgICAgICAg
IDMyQml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk9jdGFuZSBhbmQg
Vjh2NzoKICAgZW5jcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjM5MjEzKy0wLjAwMDQ2ICAgICEgICAgIDAuMzk1NTYrLTAuMDAwNzIgICAgICAgISBkZWZp
bml0ZWx5IDEuMDA4OHggc2xvd2VyCiAgIGRlY3J5cHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy4xNjA5OSstMC4wMDY3NyAgICAhICAgICA3LjIyMzA4Ky0wLjAw
OTA0ICAgICAgICEgZGVmaW5pdGVseSAxLjAwODd4IHNsb3dlcgogICBkZWx0YWJsdWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuNDg4ODUrLTAuMDA0NjkgICAgXiAg
ICAgMC40Nzg4OSstMC4wMDI2MSAgICAgICBeIGRlZmluaXRlbHkgMS4wMjA4eCBmYXN0ZXIKICAg
ZWFybGV5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjcyNjIy
Ky0wLjAwMzUzICAgICEgICAgIDAuNzM0MzYrLTAuMDAyODMgICAgICAgISBkZWZpbml0ZWx5IDEu
MDExMnggc2xvd2VyCiAgIGJveWVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMC4zMzk5NCstMC4wNDEzOCAgICAhICAgIDEwLjQyNTY5Ky0wLjA0MDk5ICAgICAg
ICEgZGVmaW5pdGVseSAxLjAwODN4IHNsb3dlcgogICByYXl0cmFjZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyICAgICAgIDMuNjAyNTMrLTAuMDM1NDcgICAgXiAgICAgMy4zNzY0
MistMC4wMjYwNSAgICAgICBeIGRlZmluaXRlbHkgMS4wNjcweCBmYXN0ZXIKICAgcmVnZXhwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDI1LjkzNzAzKy0wLjA2NzQ5
ICAgICEgICAgMjYuMjk0NTIrLTAuMDgxMjcgICAgICAgISBkZWZpbml0ZWx5IDEuMDEzOHggc2xv
d2VyCiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAg
MC4yNTk3OSstMC4wMDI4NSAgICBeICAgICAwLjI0ODE3Ky0wLjAwMTU1ICAgICAgIF4gZGVmaW5p
dGVseSAxLjA0Njh4IGZhc3RlcgogICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgyICAgICAgIDAuNTQyNTIrLTAuMDAyNDIgICAgISAgICAgMC41Njc0OSstMC4wMDMw
NSAgICAgICAhIGRlZmluaXRlbHkgMS4wNDYweCBzbG93ZXIKICAgbmF2aWVyLXN0b2tlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICA5LjAwNDkzKy0wLjAwOTA1ICAgID8gICAg
IDkuMDEyOTcrLTAuMDExMjIgICAgICAgPwogICBjbG9zdXJlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAuMzMwMDUrLTAuMDA3MjYgICAgPyAgICAgMC4zMzUxOSst
MC4wMDc5MyAgICAgICA/IG1pZ2h0IGJlIDEuMDE1Nnggc2xvd2VyCiAgIGpxdWVyeSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy44MDc1MCstMC40NTA3NSAgICA/
ICAgICAzLjg1OTM2Ky0wLjQzNTI5ICAgICAgID8gbWlnaHQgYmUgMS4wMTM2eCBzbG93ZXIKICAg
Z2JlbXUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDYxLjQzMDQ3
Ky0wLjc5NDk2ICAgID8gICAgNjEuOTk2MTcrLTAuODU5ODcgICAgICAgPwogICBtYW5kcmVlbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAxNDkuOTI5MjkrLTAuMTc4OTkg
ICAgICAgIDE0OS44ODA4NSstMC4xMzE3MCAgICAgICAKICAgcGRmanMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDg1LjExNzczKy0wLjIwMDQzICAgICEgICAgODgu
Mjc3NDgrLTAuNDQyMjAgICAgICAgISBkZWZpbml0ZWx5IDEuMDM3MXggc2xvd2VyCiAgIGJveDJk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAyOS45MzQ0MSstMC4x
Mzg1NyAgICAhICAgIDMwLjI4NzQxKy0wLjE3Nzg1ICAgICAgICEgZGVmaW5pdGVseSAxLjAxMTh4
IHNsb3dlcgoKVjh2NzoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2LjE0MzE2Ky0wLjAwOTgyICAgICEgICAgIDYuMTcwOTgrLTAuMDExNDcgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDA0NXggc2xvd2VyCiAgIDxnZW9tZXRyaWM+ICogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wMDk2NystMC4wMDQ5NiAgICBeICAgICAxLjk5
NjQxKy0wLjAwMzUxICAgICAgIF4gZGVmaW5pdGVseSAxLjAwNjZ4IGZhc3RlcgogICA8aGFybW9u
aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzgwNTgrLTAuMDAz
NDUgICAgXiAgICAgMC43NzAxNCstMC4wMDIyNSAgICAgICBeIGRlZmluaXRlbHkgMS4wMTM2eCBm
YXN0ZXIKCk9jdGFuZSBpbmNsdWRpbmcgVjh2NzoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjA0ODE1Ky0wLjA1MzUwICAgICEgICAgMjkuMzc3
NDYrLTAuMDY1NTUgICAgICAgISBkZWZpbml0ZWx5IDEuMDExM3ggc2xvd2VyCiAgIDxnZW9tZXRy
aWM+ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43MTM4OCstMC4wMjI2
MCAgICA/ICAgICA1LjcyMjQ5Ky0wLjAyNTYzICAgICAgID8gbWlnaHQgYmUgMS4wMDE1eCBzbG93
ZXIKICAgPGhhcm1vbmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
LjA4NTkzKy0wLjAwNDQwICAgICAgICAgIDEuMDc1ODgrLTAuMDA1NjkgICAgICAgICBtaWdodCBi
ZSAxLjAwOTN4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICAgMzJCaXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKS3Jha2VuOgogICBhaS1hc3RhciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzNS40NjkrLTMuNDI3ICAgICAg
ISAgICAgNDQyLjIzMistMC41MzkgICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTU1eCBzbG93ZXIK
ICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTQu
MzMzKy0wLjMzOCAgICAgICEgICAgIDE5OC41MzYrLTAuMzcyICAgICAgICAgISBkZWZpbml0ZWx5
IDEuMDIxNnggc2xvd2VyCiAgIGF1ZGlvLWRmdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMjQ0LjM4MystMS40MjMgICAgICA/ICAgICAyNDUuOTU1Ky0yLjU5MSAgICAg
ICAgID8KICAgYXVkaW8tZmZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMTkuMzc5Ky0wLjM2MSAgICAgIF4gICAgIDExNy44NTYrLTAuMzM1ICAgICAgICAgXiBkZWZp
bml0ZWx5IDEuMDEyOXggZmFzdGVyCiAgIGF1ZGlvLW9zY2lsbGF0b3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjEyLjI2MCstMi41MzIgICAgICAhICAgICAyMjEuNDUwKy0zLjUx
NiAgICAgICAgICEgZGVmaW5pdGVseSAxLjA0MzN4IHNsb3dlcgogICBpbWFnaW5nLWRhcmtyb29t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNy4xNjQrLTAuOTA1ICAgICAgICAg
ICAgMjM2Ljg0MistMS4zMzAgICAgICAgICAKICAgaW1hZ2luZy1kZXNhdHVyYXRlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMzEuMTQ1Ky0wLjE2NiAgICAgIF4gICAgIDEyOC41NDEr
LTAuMTI4ICAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDIwM3ggZmFzdGVyCiAgIGltYWdpbmctZ2F1
c3NpYW4tYmx1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzU1LjA5NCstMC41MzkgICAg
ICA/ICAgICAzNTUuMjIwKy0xLjEwMyAgICAgICAgID8KICAganNvbi1wYXJzZS1maW5hbmNpYWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjYuMDA2Ky0wLjIyMyAgICAgICEgICAgICA2
Ni45MDcrLTAuMTIzICAgICAgICAgISBkZWZpbml0ZWx5IDEuMDEzNnggc2xvd2VyCiAgIGpzb24t
c3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3LjI0OSstMC40
NTYgICAgICBeICAgICAgODUuOTYwKy0wLjQ1NSAgICAgICAgIF4gZGVmaW5pdGVseSAxLjAxNTB4
IGZhc3RlcgogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA3NC41NDArLTAuMzQ3ICAgICAgISAgICAgIDc1Ljk3MystMC4yNTggICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wMTkyeCBzbG93ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWNjbSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgODAuNjA5Ky0xLjM0MCAgICAgID8gICAgICA4Mi4yMTgrLTEu
MTQ0ICAgICAgICAgPyBtaWdodCBiZSAxLjAyMDB4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlwdG8t
cGJrZGYyICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNS42MjErLTEuNTU4ICAgICAgISAg
ICAgMjE4Ljc1OSstMS4yNTcgICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTQ2eCBzbG93ZXIKICAg
c3RhbmZvcmQtY3J5cHRvLXNoYTI1Ni1pdGVyYXRpdmUgICAgICAgICAgICAgICAgICAgNzUuNjQ3
Ky0wLjE3MiAgICAgID8gICAgICA3NS43MTgrLTAuMjIyICAgICAgICAgPwoKICAgPGFyaXRobWV0
aWM+ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODAuNjM2Ky0wLjMxOCAg
ICAgICEgICAgIDE4Mi4yOTgrLTAuMjQwICAgICAgICAgISBkZWZpbml0ZWx5IDEuMDA5Mnggc2xv
d2VyCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTUxLjE5OSstMC4yNTYgICAgICAhICAgICAxNTIuMzMxKy0wLjEzMCAgICAgICAgICEgZGVmaW5p
dGVseSAxLjAwNzV4IHNsb3dlcgogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEyNy43NTQrLTAuMzQxICAgICAgISAgICAgMTI4LjU4MistMC4yMTkg
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMDY1eCBzbG93ZXIKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAgICAgICAgICAgICAg
ICAgICAgIDMyQml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkpTUmVn
cmVzczoKICAgYWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxOC45MjQ0Ky0wLjA4NjQgICAgICAgICAgIDE4Ljg1ODgrLTAuMDcyOSAgICAgICAgCiAgIGFs
aWFzZWQtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgIDAuODU1Nist
MC4wMjk0ICAgICAgICAgICAgMC44NTM5Ky0wLjAyMjQgICAgICAgIAogICBhbGxvY2F0ZS1iaWct
b2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjk3OTIrLTAuMDgyNiAgICAg
ICAgICAgIDEuOTQ2NSstMC4wNTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE2OHggZmFzdGVyCiAg
IGFyaXR5LW1pc21hdGNoLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODI2
OSstMC4wMjUzICAgICAgICAgICAgMC44MTAzKy0wLjAxNTIgICAgICAgICAgbWlnaHQgYmUgMS4w
MjA0eCBmYXN0ZXIKICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAg
ICAgICAgICAgNy42NzE0Ky0wLjA5MTggICAgICEgICAgICA3Ljk0MzgrLTAuMDY0NiAgICAgICAg
ISBkZWZpbml0ZWx5IDEuMDM1NXggc2xvd2VyCiAgIGFycmF5LW5vbmFycmF5LXBvbHltb3JocGlj
LWFjY2VzcyAgICAgICAgICAgICAgICAgNTUuNzUxNCstMTkuMDI5MCAgICAgICAgICA0OC40MTYz
Ky0wLjIxMzYgICAgICAgICAgbWlnaHQgYmUgMS4xNTE1eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1k
b3VibGUtYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43ODM4Ky0wLjA0NjEgICAg
ID8gICAgICA0LjgyNjUrLTAuMDU0NSAgICAgICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1pbmNy
ZW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAzLjU4NjkrLTAuMDI4NiAgICAgPyAgICAgIDMu
NjM3OSstMC4wMzQwICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0Mnggc2xvd2VyCiAgIGFycmF5LXdp
dGgtZG91YmxlLW11bC1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNzQyMCstMC4wNjI4
ICAgICA/ICAgICAgNS43NzM4Ky0wLjAzMzggICAgICAgID8KICAgYXJyYXktd2l0aC1kb3VibGUt
c3VtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi42NTU5Ky0wLjA2ODIgICAgID8gICAg
ICA2LjY1OTcrLTAuMDc4MyAgICAgICAgPwogICBhcnJheS13aXRoLWludDMyLWFkZC1zdWIgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LjY5MDArLTAuMDY4OSAgICAgPyAgICAgIDguNjkzOSst
MC4wNTkyICAgICAgICA/CiAgIGFycmF5LXdpdGgtaW50MzItb3ItZG91YmxlLXN1bSAgICAgICAg
ICAgICAgICAgICAgIDYuNjYwMystMC4wNjY5ICAgICA/ICAgICAgNi42NjY3Ky0wLjA2ODIgICAg
ICAgID8KICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbGFyZ2UtbG9uZy1saXZlZCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4LjA4
MzcrLTAuNDA3OCAgICAgISAgICAgOTkuNzcyMystMC43NzE2ICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMTcyeCBzbG93ZXIKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbG9uZy1saXZlZCAg
ICAgICAgICAgICAyNC41Nzk5Ky0wLjEzMzIgICAgICEgICAgIDI1LjU0MDErLTAuMzUwNyAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDM5MXggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDMyQXJyYXkt
Ynl0ZU9mZnNldCAgICAgICAgICAgICAgICAgIDcuNTI3NSstMC4wNDM1ICAgICBeICAgICAgNy4x
NTEwKy0wLjA1NzIgICAgICAgIF4gZGVmaW5pdGVseSAxLjA1MjZ4IGZhc3RlcgogICBBcnJheUJ1
ZmZlci1JbnQ4QXJyYXktYWxsb2MtaHVnZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzYuMTkxNystMi40MTA4ICAgICA/
ICAgIDE3Ny42NTg4Ky0xLjA5MjIgICAgICAgID8KICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFs
bG9jLWxhcmdlLWxvbmctbGl2ZWQtZnJhZ21lbnRlZCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1Ljg0NTErLTAuNjE0NiAgICAgICAgICAx
MzUuNzE5NystMC4zNjM4ICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jLWxh
cmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwMS43NDMwKy0wLjQ5NDMgICAgICEgICAgMTAzLjMyNjcrLTAuNjYyNyAg
ICAgICAgISBkZWZpbml0ZWx5IDEuMDE1Nnggc2xvd2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJh
eS1hbGxvYy1sb25nLWxpdmVkLWJ1ZmZlciAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM5LjQ0MTgrLTAuNDgwMyAgICAgISAgICAgNDAuOTcw
OCstMC4xMzg5ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMzg4eCBzbG93ZXIKICAgQXJyYXlCdWZm
ZXItSW50OEFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAyMy40OTc1Ky0wLjExOTEg
ICAgICEgICAgIDI0LjUzNjArLTAuNjk3MSAgICAgICAgISBkZWZpbml0ZWx5IDEuMDQ0Mnggc2xv
d2VyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAg
MjAuNzUyNSstMC4xMjU1ICAgICAhICAgICAyMS4yMTU5Ky0wLjE0MzYgICAgICAgICEgZGVmaW5p
dGVseSAxLjAyMjN4IHNsb3dlcgogICBhc21qc19ib29sX2J1ZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5LjU0NDcrLTAuMDQ5MiAgICAgISAgICAgIDkuODI0OSstMC4wNzYx
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjk0eCBzbG93ZXIKICAgYmFzaWMtc2V0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy43OTQyKy0wLjI3MDUgICAgID8gICAg
IDE4LjIxMTErLTAuMjU2MiAgICAgICAgPyBtaWdodCBiZSAxLjAyMzR4IHNsb3dlcgogICBiaWct
aW50LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjY3MjArLTAu
MDU4MSAgICAgICAgICAgIDQuNTg4OSstMC4wNTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4MXgg
ZmFzdGVyCiAgIGJvb2xlYW4tdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNzMxMystMC4wMzM3ICAgICA/ICAgICAgMy43NTI3Ky0wLjAzNDEgICAgICAgID8KICAg
YnJhbmNoLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xMzYy
Ky0wLjAzNTIgICAgID8gICAgICA0LjE3NDArLTAuMDM2OSAgICAgICAgPwogICBjYXN0LWludC10
by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjkzMjkrLTAuMDk3MCAg
ICAgISAgICAgMTIuMzc5MSstMC4wOTIwICAgICAgICAhIGRlZmluaXRlbHkgMS4wMzc0eCBzbG93
ZXIKICAgY2VsbC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
My42MzI0Ky0wLjEzMTMgICAgIF4gICAgIDEyLjgwNDcrLTAuMjY1MSAgICAgICAgXiBkZWZpbml0
ZWx5IDEuMDY0NnggZmFzdGVyCiAgIGNmZy1zaW1wbGlmeSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMuMzA2NCstMC4wMjk0ICAgICAgICAgICAgMy4yOTc4Ky0wLjAyNzAg
ICAgICAgIAogICBjbXBlcS1vYmotdG8tb2JqLW90aGVyICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDExLjgyNDMrLTAuMjUwNiAgICAgXiAgICAgMTAuMzM2MSstMC4zNzUyICAgICAgICBeIGRl
ZmluaXRlbHkgMS4xNDQweCBmYXN0ZXIKICAgY29uc3RhbnQtdGVzdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNy4zOTY4Ky0wLjA1MDggICAgID8gICAgICA3LjM5NzErLTAu
MDUzNSAgICAgICAgPwogICBEYXRhVmlldy1jdXN0b20tcHJvcGVydGllcyAgICAgICAgICAgICAg
ICAgICAgICAgMTAzLjcwNTMrLTAuNDE4NCAgICAgISAgICAxMDYuMDM2NCstMC4zNTkxICAgICAg
ICAhIGRlZmluaXRlbHkgMS4wMjI1eCBzbG93ZXIKICAgZGVsYXktdGVhci1vZmYtYXJndW1lbnRz
LXN0cmljdG1vZGUgICAgICAgICAgICAgICAgMi45NTExKy0wLjAxNzggICAgID8gICAgICAyLjk1
MTErLTAuMDI0NCAgICAgICAgPwogICBkZXN0cnVjdHVyaW5nLWFyZ3VtZW50cy1sZW5ndGggICAg
ICAgICAgICAgICAgICAgMTQwLjM0MTYrLTEuMzA1NSAgICAgISAgICAxNDcuMzQ4MSstMC40NDQ3
ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNDk5eCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1hcmd1
bWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4yMDY4Ky0wLjA3MzcgICAgID8gICAg
ICA3LjI4NTErLTAuMDU2MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBkZXN0
cnVjdHVyaW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjE2NzIrLTAu
MTA1MSAgICAgICAgICAgIDcuMTUwOSstMC4wNzQ3ICAgICAgICAKICAgZGlyZWN0LWFyZ3VtZW50
cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgMC43NjQwKy0wLjAyMjYgICAgICAg
ICAgICAwLjc0NjYrLTAuMDE4MiAgICAgICAgICBtaWdodCBiZSAxLjAyMzN4IGZhc3RlcgogICBk
b3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgICA5LjI4NDQr
LTAuMDY1NSAgICAgICAgICAgIDkuMjE2NistMC4wNjI0ICAgICAgICAKICAgZG91YmxlLXBvbGx1
dGlvbi1wdXRieW9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgNC44MjE0Ky0wLjA1MjggICAg
ICAgICAgICA0Ljc2ODErLTAuMDYwOSAgICAgICAgICBtaWdodCBiZSAxLjAxMTJ4IGZhc3Rlcgog
ICBlbXB0eS1zdHJpbmctcGx1cy1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY3
NjArLTAuMTYxOSAgICAgPyAgICAgIDguNzY3MistMC4xODE2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDEwNXggc2xvd2VyCiAgIGVtc2NyaXB0ZW4tY3ViZTJoYXNoICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzguNDgxNystMS45Mjc3ICAgICA/ICAgICAzOC42NzI5Ky0xLjkwMjQgICAgICAg
ID8KICAgZW1zY3JpcHRlbi1tZW1vcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzU4
NC4yMzg4Ky0zMi44NjYyICAgICEgICA3OTAwLjE5NzcrLTQxLjU3MDIgICAgICAgISBkZWZpbml0
ZWx5IDEuMDQxN3ggc2xvd2VyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1nZXRieXZhbCAgICAgICAg
ICAgICAgICAgICAgICAgIDEuNjkzMCstMC4wNDk1ICAgICA/ICAgICAgMS43MTE5Ky0wLjA1MTMg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTEyeCBzbG93ZXIKICAgZXh0ZXJuYWwtYXJndW1lbnRzLXB1
dGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMi40NTc1Ky0wLjA1MzYgICAgICEgICAgICAy
LjU4MzQrLTAuMDQxNCAgICAgICAgISBkZWZpbml0ZWx5IDEuMDUxMnggc2xvd2VyCiAgIEZsb2F0
MzJBcnJheS1tYXRyaXgtbXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzYzMSstMC4w
NjMxICAgICAhICAgICAgNS41NDU0Ky0wLjA1MzcgICAgICAgICEgZGVmaW5pdGVseSAxLjAzNDB4
IHNsb3dlcgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAgICAg
ICAgIDc5LjQyOTArLTAuNjkzMSAgICAgISAgICAgODIuNzI3MCstMC45NjAyICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wNDE1eCBzbG93ZXIKICAgRmxvYXQ2NEFycmF5LWFsbG9jLWxvbmctbGl2ZWQg
ICAgICAgICAgICAgICAgICAgICA5Mi40MzcyKy0wLjU0NTYgICAgIF4gICAgIDg4LjQxNjgrLTAu
ODUxOCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMDQ1NXggZmFzdGVyCiAgIEZsb2F0NjRBcnJheS10
by1JbnQxNkFycmF5LXNldCAgICAgICAgICAgICAgICAgICAgOTcuNDgzNystMC44MDYxICAgICAh
ICAgICA5OS42ODg0Ky0wLjQ2MTQgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjZ4IHNsb3dlcgog
ICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjI3
MTYrLTAuMjE1OSAgICAgISAgICAgMjEuNjU3NCstMC4xMzQ0ICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMTgxeCBzbG93ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcyAgICAgICAgICAg
ICAgICAgICAgICAgNy4wODcyKy0wLjE2NzYgICAgICEgICAgICA3LjU3NjgrLTAuMTEzNyAgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDY5MXggc2xvd2VyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWtl
eXMgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDMzMystMC4wNzM5ICAgICA/ICAgICAgMy4x
MzgwKy0wLjA1NjEgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ1eCBzbG93ZXIKICAgZm9yLW9mLWl0
ZXJhdGUtYXJyYXktdmFsdWVzICAgICAgICAgICAgICAgICAgICAgICAgMi43Mjk5Ky0wLjA4MDAg
ICAgICAgICAgICAyLjcyMDMrLTAuMDgyMiAgICAgICAgCiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjg2NSstMC4wMjYxICAgICBeICAgICAg
Mi41ODU0Ky0wLjAyNjMgICAgICAgIF4gZGVmaW5pdGVseSAxLjAzOTF4IGZhc3RlcgogICBmdW5j
dGlvbi10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjE5NTArLTAu
MDYyNCAgICAgPyAgICAgIDQuMzI2OCstMC4wODQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMxNHgg
c2xvd2VyCiAgIGdldC1ieS1pZC1jaGFpbi1mcm9tLXRyeS1ibG9jayAgICAgICAgICAgICAgICAg
ICAgIDYuMjcxNSstMC4wNzQ5ICAgICAgICAgICAgNi4yMTgxKy0wLjA3NzAgICAgICAgIAogICBn
ZXQtYnktaWQtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjUyMjEr
LTAuMTkyNSAgICAgISAgICAgMTkuODY5NystMC4xMTMxICAgICAgICAhIGRlZmluaXRlbHkgMS4w
MTc4eCBzbG93ZXIKICAgZ2V0LWJ5LWlkLXNlbGYtb3ItcHJvdG8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAxOS44MzE2Ky0wLjUzMjQgICAgID8gICAgIDIwLjQzNzkrLTAuMTIxMiAgICAgICAg
PyBtaWdodCBiZSAxLjAzMDZ4IHNsb3dlcgogICBnZXRfY2FsbGVlX21vbm9tb3JwaGljICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzLjc5NjYrLTAuMTE1MyAgICAgISAgICAgIDQuMzk5MCst
MC4wODc2ICAgICAgICAhIGRlZmluaXRlbHkgMS4xNTg3eCBzbG93ZXIKICAgZ2V0X2NhbGxlZV9w
b2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy40ODY4Ky0wLjA0NDUgICAg
ICAgICAgICAzLjQ1NTcrLTAuMDUwMyAgICAgICAgCiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRl
LWtleXMgICAgICAgICAgICAgICAgICAgICAgMzYuMzY3OCstMC40ODIyICAgICAhICAgICAzOC42
MTkxKy0wLjE4NTggICAgICAgICEgZGVmaW5pdGVseSAxLjA2MTl4IHNsb3dlcgogICBIYXNoTWFw
LXB1dC1nZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5Ljc5NDgrLTAuNjgx
MCAgICAgISAgICAgNTIuODI1NystMC4xOTczICAgICAgICAhIGRlZmluaXRlbHkgMS4wNjA5eCBz
bG93ZXIKICAgSGFzaE1hcC1zdHJpbmctcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAg
ICA0NC4zNzEwKy0wLjM4NDYgICAgICEgICAgIDQ1Ljk3MDYrLTAuNDYzOCAgICAgICAgISBkZWZp
bml0ZWx5IDEuMDM2MXggc2xvd2VyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQuNzE2NystMC4xMDU1ICAgICAgICAgICAxNC42NDE4Ky0wLjA2
MjcgICAgICAgIAogICBpbXVsLWludC1vbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEyLjU1NjkrLTAuMTY1MCAgICAgISAgICAgMTMuOTkzNystMC4wNzIyICAgICAgICAh
IGRlZmluaXRlbHkgMS4xMTQ0eCBzbG93ZXIKICAgaW11bC1taXhlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxOC4zODkzKy0wLjA3NDcgICAgID8gICAgIDE4LjQ0OTIr
LTAuMTEzMSAgICAgICAgPwogICBpbi1mb3VyLWNhc2VzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIxLjQzNjQrLTAuMDczMSAgICAgXiAgICAgMTkuODY0MystMC4wODQ0ICAg
ICAgICBeIGRlZmluaXRlbHkgMS4wNzkxeCBmYXN0ZXIKICAgaW4tb25lLWNhc2UtZmFsc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4xNDQ4Ky0wLjA4MjMgICAgID8gICAgIDEw
LjE4NDgrLTAuMTIxMSAgICAgICAgPwogICBpbi1vbmUtY2FzZS10cnVlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEwLjA2NTMrLTAuMTE2MyAgICAgPyAgICAgMTAuMzIwNystMC4x
NTYzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1NHggc2xvd2VyCiAgIGluLXR3by1jYXNlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuODY5MystMC4xMTc2ICAgICBeICAg
ICAxMC42NDA5Ky0wLjA3NTUgICAgICAgIF4gZGVmaW5pdGVseSAxLjAyMTV4IGZhc3RlcgogICBp
bmRleGVkLXByb3BlcnRpZXMtaW4tb2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAzLjg4Nzcr
LTAuMDQwOCAgICAgXiAgICAgIDMuNzYxNystMC4wNDI3ICAgICAgICBeIGRlZmluaXRlbHkgMS4w
MzM1eCBmYXN0ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1hY2Nlc3MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS4zNjc2Ky0wLjAyNjcgICAgICAgICAgICAxLjMyMTYrLTAuMDM1NiAgICAgICAg
ICBtaWdodCBiZSAxLjAzNDh4IGZhc3RlcgogICBpbmxpbmUtYXJndW1lbnRzLWxvY2FsLWVzY2Fw
ZSAgICAgICAgICAgICAgICAgICAgIDE3LjkwODMrLTAuMTM1NSAgICAgISAgICAgMTguNjg5OCst
MC4xNDA3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wNDM2eCBzbG93ZXIKICAgaW5saW5lLWdldC1z
Y29wZWQtdmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS45MzA5Ky0wLjA2MTUgICAg
ICAgICAgICA1LjkwMDUrLTAuMDYzNCAgICAgICAgCiAgIGlubGluZWQtcHV0LWJ5LWlkLXRyYW5z
aXRpb24gICAgICAgICAgICAgICAgICAgICAgMTIuMjM3MistMC4wODE2ICAgICAgICAgICAxMi4y
MDEzKy0wLjExMzEgICAgICAgIAogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAg
ICAgICAgICAgICAgICAgICA4LjE2NjkrLTAuMDczMSAgICAgPyAgICAgIDguMTk2OCstMC4wNjEw
ICAgICAgICA/CiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1ieS12YWwgICAgICAg
ICAgICAgMzEuMjQ1NSstMC4xMzE4ICAgICBeICAgICAyOS44MDE0Ky0wLjEzMjUgICAgICAgIF4g
ZGVmaW5pdGVseSAxLjA0ODV4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5
LXZhbCAgICAgICAgICAgICAgICAgICA5LjAxNzgrLTAuMDgxNSAgICAgPyAgICAgIDkuMDQ5MSst
MC4wODgxICAgICAgICA/CiAgIGludC1vci1vdGhlci1hZGQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuMzQ0NistMC4wNDUxICAgICBeICAgICAgOS4xODMwKy0wLjA1MzkgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjAxNzZ4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4t
Z2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA1LjYwNjYrLTAuMDU3MSAgICAgPyAgICAgIDUu
NjM1OSstMC4wNjUyICAgICAgICA/CiAgIGludC1vci1vdGhlci1tYXgtdGhlbi1nZXQtYnktdmFs
ICAgICAgICAgICAgICAgICAgIDcuMzYxOCstMC4xMjk0ICAgICA/ICAgICAgNy41NDg0Ky0wLjEy
NjIgICAgICAgID8gbWlnaHQgYmUgMS4wMjUzeCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW1pbi10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNi40MDM1Ky0wLjA4MDUgICAgID8gICAg
ICA2LjQzNDMrLTAuMDY3NCAgICAgICAgPwogICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5
LXZhbCAgICAgICAgICAgICAgICAgICA1LjIyNDQrLTAuMDU1NCAgICAgXiAgICAgIDUuMDcyMist
MC4wNDMyICAgICAgICBeIGRlZmluaXRlbHkgMS4wMzAweCBmYXN0ZXIKICAgaW50LW9yLW90aGVy
LW11bC10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNS41NDAyKy0wLjA1MDkgICAg
ICAgICAgICA1LjQ4NDIrLTAuMDQ5MiAgICAgICAgICBtaWdodCBiZSAxLjAxMDJ4IGZhc3Rlcgog
ICBpbnQtb3Itb3RoZXItbmVnLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA3LjA2
NzErLTAuMDMzOCAgICAgICAgICAgIDYuOTkzMystMC4wNjM4ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEwNXggZmFzdGVyCiAgIGludC1vci1vdGhlci1uZWctemVyby10aGVuLWdldC1ieS12YWwgICAg
ICAgICAgICAgMzAuNDMzOSstMC4xODQxICAgICBeICAgICAyOS40Mjc1Ky0wLjEwNzcgICAgICAg
IF4gZGVmaW5pdGVseSAxLjAzNDJ4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItc3ViLXRoZW4tZ2V0
LWJ5LXZhbCAgICAgICAgICAgICAgICAgICA5LjEwMTErLTAuMDYwMSAgICAgXiAgICAgIDguNzIx
OSstMC4wNTkxICAgICAgICBeIGRlZmluaXRlbHkgMS4wNDM1eCBmYXN0ZXIKICAgaW50LW9yLW90
aGVyLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zNzEwKy0wLjA0OTAg
ICAgICEgICAgICA3LjY3NzArLTAuMDgwMyAgICAgICAgISBkZWZpbml0ZWx5IDEuMDQxNXggc2xv
d2VyCiAgIGludC1vdmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUuNDkyNystMC4wNDMwICAgICAgICAgICAgNS40OTIzKy0wLjAyOTAgICAgICAgIAogICBJbnQx
NkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgIDYyLjc1MDUrLTAu
Mjk1OCAgICAgXiAgICAgNTguMzU2NystMC4xOTczICAgICAgICBeIGRlZmluaXRlbHkgMS4wNzUz
eCBmYXN0ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAg
ICAgICA0MC4yMTA2Ky0wLjA5MTkgICAgID8gICAgIDQwLjM2MzArLTAuMDcwMCAgICAgICAgPwog
ICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5Ljg1
MjIrLTAuMTE0MyAgICAgICAgICAgMzkuODI5MistMC4xMDY5ICAgICAgICAKICAgSW50MTZBcnJh
eS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS43NzgxKy0wLjAyNDQg
ICAgID8gICAgICAxLjc5NjYrLTAuMDQzNyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDR4IHNsb3dl
cgogICBJbnQxNkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDc1
LjczMDArLTAuNDE4OSAgICAgPyAgICAgNzYuNzM3OSstMC45ODQ5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMDEzM3ggc2xvd2VyCiAgIEludDMyQXJyYXktYWxsb2MtaHVnZS1sb25nLWxpdmVkICAgICAg
ICAgICAgICAgICA2MjAuNzgwMCstMi45NjYxICAgICAgICAgIDYyMC41NTY5Ky0yLjI0NTYgICAg
ICAgIAogICBJbnQzMkFycmF5LWFsbG9jLWh1Z2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NjQ4LjgzODQrLTIuMjYwMCAgICAgPyAgICA2NTMuNDE1NystMy4wNzE3ICAgICAgICA/CiAgIElu
dDMyQXJyYXktYWxsb2MtbGFyZ2UtbG9uZy1saXZlZCAgICAgICAgICAgICAgICA4MjIuNjI1OCst
MS42MTU2ICAgICA/ICAgIDgyNC4yMTkxKy0xLjM3NjUgICAgICAgID8KICAgSW50MzJBcnJheS1h
bGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNi4zMzk3Ky0wLjQ1OTQgICAg
ICAgICAgIDM2LjE5NTErLTAuMzMwNyAgICAgICAgCiAgIEludDMyQXJyYXktYWxsb2MtbG9uZy1s
aXZlZCAgICAgICAgICAgICAgICAgICAgICAgNjkuNTYxMCstMC4yNTgxICAgICA/ICAgICA2OS43
NzA4Ky0wLjc3NDUgICAgICAgID8KICAgSW50MzJBcnJheS1hbGxvYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMy41MzQzKy0wLjA0OTYgICAgID8gICAgICAzLjU0NjYrLTAuMDU3
NCAgICAgICAgPwogICBJbnQzMkFycmF5LUludDhBcnJheS12aWV3LWFsbG9jICAgICAgICAgICAg
ICAgICAgIDExLjUwMTkrLTAuMTc2MiAgICAgPyAgICAgMTEuNzYzOSstMC4xMzQ3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDIyOHggc2xvd2VyCiAgIGludDUyLXNwaWxsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkuNTcxNystMC4xMDYyICAgICAhICAgICAxMC4yOTUyKy0w
LjE3MDQgICAgICAgICEgZGVmaW5pdGVseSAxLjA3NTZ4IHNsb3dlcgogICBJbnQ4QXJyYXktYWxs
b2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgIDU4LjQ1ODQrLTAuMzg5NCAgICAg
XiAgICAgNTcuMTE3NCstMC40MDM1ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMjM1eCBmYXN0ZXIK
ICAgSW50OEFycmF5LWxvYWQtd2l0aC1ieXRlTGVuZ3RoICAgICAgICAgICAgICAgICAgICAgNC4y
MjY0Ky0wLjA1ODkgICAgICAgICAgICA0LjIyNTQrLTAuMDI0NiAgICAgICAgCiAgIEludDhBcnJh
eS1sb2FkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTk0MystMC4wNDU5
ICAgICAhICAgICAgNC4yNzkxKy0wLjAzNjggICAgICAgICEgZGVmaW5pdGVseSAxLjAyMDJ4IHNs
b3dlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEyLjkwMTkrLTAuMDcyNSAgICAgPyAgICAgMTIuOTM0MistMC4wODUzICAgICAgICA/CiAgIGlu
dGVnZXItbW9kdWxvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNzM0Nist
MC4wMzE4ICAgICA/ICAgICAgMS43NjE1Ky0wLjAzNTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTU1
eCBzbG93ZXIKICAgbGFyZ2UtaW50LWNhcHR1cmVkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNy40NzgxKy0wLjE1OTAgICAgICEgICAgICA3Ljc5MzArLTAuMTExNCAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDQyMXggc2xvd2VyCiAgIGxhcmdlLWludC1uZWcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjEuMzYwNistMC4wOTExICAgICAhICAgICAyMS43ODI5Ky0w
LjEzNDQgICAgICAgICEgZGVmaW5pdGVseSAxLjAxOTh4IHNsb3dlcgogICBsYXJnZS1pbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjI2OTcrLTAuMDczNyAgICAg
ISAgICAgMTkuNjg5MCstMC4xMzg3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjE4eCBzbG93ZXIK
ICAgbG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4x
MjAxKy0wLjEzMTkgICAgICAgICAgICA4Ljk1MjIrLTAuMDg0MiAgICAgICAgICBtaWdodCBiZSAx
LjAxODh4IGZhc3RlcgogICBtYWtlLWluZGV4ZWQtc3RvcmFnZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjUxNDgrLTAuMTA2NSAgICAgPyAgICAgIDMuNTk3MCstMC4wOTA0ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDIzNHggc2xvd2VyCiAgIG1ha2Utcm9wZS1jc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuOTI1OSstMC4wOTMwICAgICAgICAgICAgNC44ODc3
Ky0wLjA5NzkgICAgICAgIAogICBtYXJzYWdsaWEtbGFyZ2VyLWludHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDk4LjU1MzArLTAuMTQzNyAgICAgICAgICAgOTguNDM4MCstMC4yMzI1ICAg
ICAgICAKICAgbWFyc2FnbGlhLW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0My44NjM0Ky0wLjQ5MjUgICAgICAgICAgIDQzLjUzMjkrLTAuMDk0NiAgICAgICAgCiAgIG1h
cnNhZ2xpYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjkuNDU0Myst
MC43MDUyICAgICAgICAgIDQyOS4wNjExKy0wLjI5NDMgICAgICAgIAogICBtZXRob2Qtb24tbnVt
YmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1Ljk2NTArLTAuMDk2NCAgICAg
ISAgICAgMjguMzYxMCstMC4xODU3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wOTIzeCBzbG93ZXIK
ICAgbmVnYXRpdmUtemVyby1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
NzgzKy0wLjAxMTIgICAgID8gICAgICAwLjM4MDYrLTAuMDIyMiAgICAgICAgPwogICBuZWdhdGl2
ZS16ZXJvLW1vZHVsbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM3MzErLTAuMDIy
NCAgICAgPyAgICAgIDAuMzg3MCstMC4wMjExICAgICAgICA/IG1pZ2h0IGJlIDEuMDM3M3ggc2xv
d2VyCiAgIG5lZ2F0aXZlLXplcm8tbmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuMzU3OSstMC4wMTUxICAgICA/ICAgICAgMC4zNTg4Ky0wLjAyMzAgICAgICAgID8KICAgbmVz
dGVkLWZ1bmN0aW9uLXBhcnNpbmctcmFuZG9tICAgICAgICAgICAgICAgICAgIDMxOS4xOTUzKy04
Ljg4MDAgICAgICAgICAgMzE1LjM2NTUrLTkuMjA4NSAgICAgICAgICBtaWdodCBiZSAxLjAxMjF4
IGZhc3RlcgogICBuZXN0ZWQtZnVuY3Rpb24tcGFyc2luZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDM3LjQ1NDYrLTAuODAyMCAgICAgPyAgICAgMzcuNzIxNSstMC43Mzg3ICAgICAgICA/CiAg
IG5ldy1hcnJheS1idWZmZXItZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTk4
MistMC4wNDg4ICAgICA/ICAgICAgMy4yMTI0Ky0wLjA2MjkgICAgICAgID8KICAgbmV3LWFycmF5
LWJ1ZmZlci1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC43MzMzKy0wLjExNjIg
ICAgID8gICAgICA4Ljg1NDMrLTAuMTAzMyAgICAgICAgPyBtaWdodCBiZSAxLjAxMzl4IHNsb3dl
cgogICBuZXctYXJyYXktZGVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIz
LjY1MDMrLTAuMDg4NSAgICAgPyAgICAgMjMuNjcyOSstMC4wODU1ICAgICAgICA/CiAgIG5ldy1h
cnJheS1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuMzY3MSstMC4w
NTI4ICAgICA/ICAgICAgNS40MTEzKy0wLjA3MTYgICAgICAgID8KICAgbnVtYmVyLXRlc3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42NzE3Ky0wLjA1MDIgICAgID8g
ICAgICAzLjY4NTcrLTAuMDQxMyAgICAgICAgPwogICBvYmplY3QtY2xvc3VyZS1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDExLjA0MjkrLTAuMDg3MyAgICAgXiAgICAgMTAuNDI5
MCstMC4wODE2ICAgICAgICBeIGRlZmluaXRlbHkgMS4wNTg5eCBmYXN0ZXIKICAgb2JqZWN0LXRl
c3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4wMjQ2Ky0wLjAzOTQg
ICAgID8gICAgICA0LjEwNjMrLTAuMDc4NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dl
cgogICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0
LjM5MzQrLTAuNzI0MCAgICAgICAgICAgNzMuNjAzOSstMC44Mjc3ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwN3ggZmFzdGVyCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTcuNjY2MistMC4wNDcwICAgICA/ICAgICAxNy43NTExKy0wLjE5MDkgICAg
ICAgID8KICAgcG9seXZhcmlhbnQtbW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAg
ICAgOS45OTk4Ky0wLjA3OTkgICAgIF4gICAgICA5LjM1MDYrLTAuMDgxOCAgICAgICAgXiBkZWZp
bml0ZWx5IDEuMDY5NHggZmFzdGVyCiAgIHB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYuMDUxMCstMC4xOTgwICAgICAgICAgICAxNS44MzQ0Ky0wLjE2
NDYgICAgICAgICAgbWlnaHQgYmUgMS4wMTM3eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1p
bmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDguNzMyNSstMC4xMTQ3ICAgICAhICAgICAgOS4xMzU5
Ky0wLjIzMDEgICAgICAgICEgZGVmaW5pdGVseSAxLjA0NjJ4IHNsb3dlcgogICByYXJlLW9zci1l
eGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Ljc5MjcrLTAuMDc3NyAg
ICAgPyAgICAgMTYuODI1NystMC4wOTkxICAgICAgICA/CiAgIHJlZ2lzdGVyLXByZXNzdXJlLWZy
b20tb3NyICAgICAgICAgICAgICAgICAgICAgICAgMjUuOTE1OSstMC4wOTMwICAgICA/ICAgICAy
Ni4wMDc1Ky0wLjExODUgICAgICAgID8KICAgc2ltcGxlLWFjdGl2YXRpb24tZGVtbyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyOS4wMzQ3Ky0wLjA3NTAgICAgID8gICAgIDI5LjE1NzErLTAu
MTU5MiAgICAgICAgPwogICBzbG93LWFycmF5LXByb2ZpbGUtY29udmVyZ2VuY2UgICAgICAgICAg
ICAgICAgICAgICAzLjU0MDQrLTAuMTM3NCAgICAgPyAgICAgIDMuNTUxNSstMC4xMDYwICAgICAg
ICA/CiAgIHNsb3ctY29udmVyZ2VuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuOTU5OCstMC4wMzYyICAgICA/ICAgICAgMi45ODE4Ky0wLjA1MTUgICAgICAgID8KICAgc3Bh
cnNlLWNvbmRpdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4yMTA0Ky0w
LjAzNDcgICAgICAgICAgICAxLjE2MTkrLTAuMDE2NCAgICAgICAgICBtaWdodCBiZSAxLjA0MTd4
IGZhc3RlcgogICBzcGxpY2UtdG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDYzLjUzNTkrLTAuMDk2OSAgICAgISAgICAgNjQuMTU1MystMC4xMzA5ICAgICAgICAhIGRl
ZmluaXRlbHkgMS4wMDk3eCBzbG93ZXIKICAgc3RlcGFub3ZfY29udGFpbmVyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOTcyNi40NzM4Ky02Mi40NDQ0ICAgICAgICA5NjczLjA0OTgrLTI0
LjUyNzUgICAgICAgCiAgIHN0cmluZy1jb25jYXQtb2JqZWN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuMzA4NCstMC4wOTM2ICAgICA/ICAgICAgMi4zMjMyKy0wLjA5NDUgICAgICAg
ID8KICAgc3RyaW5nLWNvbmNhdC1wYWlyLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi4yMDYyKy0wLjA3NTYgICAgID8gICAgICAyLjMyMzMrLTAuMTA1MyAgICAgICAgPyBtaWdodCBi
ZSAxLjA1MzF4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LXBhaXItc2ltcGxlICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjk5ODUrLTAuMTM2MCAgICAgPyAgICAgMTQuMjEyOSstMC4yMDY3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIHN0cmluZy1jb25jYXQtc2ltcGxlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuOTc5MystMC4xNjExICAgICA/ICAgICAxNC4x
NzY3Ky0wLjE0MDUgICAgICAgID8gbWlnaHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgc3RyaW5nLWNv
bnMtcmVwZWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44MTM5Ky0wLjA3NzYg
ICAgID8gICAgICA4LjgyNjQrLTAuMTAwMyAgICAgICAgPwogICBzdHJpbmctY29ucy10b3dlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjMyNjkrLTAuMTA1NyAgICAgICAgICAg
IDkuMzExNCstMC4xMDQxICAgICAgICAKICAgc3RyaW5nLWVxdWFsaXR5ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzNS40NzQ2Ky0wLjA4MjYgICAgID8gICAgIDM1LjQ5MjYrLTAu
MzE5NiAgICAgICAgPwogICBzdHJpbmctZ2V0LWJ5LXZhbC1iaWctY2hhciAgICAgICAgICAgICAg
ICAgICAgICAgIDEwLjk4NDIrLTAuMTkxNiAgICAgPyAgICAgMTEuMTUxOSstMC4xNzIyICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFsLW91dC1vZi1i
b3VuZHMtaW5zYW5lICAgICAgICAgICAgIDQuODI1NistMC4wNjM2ICAgICAhICAgICAgNS41NDU2
Ky0wLjIyNTggICAgICAgICEgZGVmaW5pdGVseSAxLjE0OTJ4IHNsb3dlcgogICBzdHJpbmctZ2V0
LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICA0LjQ3NTgrLTAuMDQ5NCAg
ICAgISAgICAgIDQuNTc2MystMC4wNDc0ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMjI1eCBzbG93
ZXIKICAgc3RyaW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NC4wNjY4Ky0wLjAyNjcgICAgICEgICAgICA0LjMxMzgrLTAuMDQyNSAgICAgICAgISBkZWZpbml0
ZWx5IDEuMDYwN3ggc2xvd2VyCiAgIHN0cmluZy1oYXNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMzQ3NistMC4wMzE5ICAgICA/ICAgICAgMi4zNTc1Ky0wLjAyOTAg
ICAgICAgID8KICAgc3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkgICAgICAgICAgICAgICAgICAg
ICAgICAzMi4wMjAwKy0wLjM5NTQgICAgIF4gICAgIDMwLjk2MTUrLTAuMDU2MiAgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDM0MnggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtYXJpdGggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDAuODAxMSstMC4xNTk1ICAgICBeICAgICA0MC40MjI1Ky0w
LjEwNTEgICAgICAgIF4gZGVmaW5pdGVseSAxLjAwOTR4IGZhc3RlcgogICBzdHJpbmctc3ViICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyLjA5MzErLTAuMjYzNyAgICAg
XiAgICAgODAuOTE3MCstMC43MzA3ICAgICAgICBeIGRlZmluaXRlbHkgMS4wMTQ1eCBmYXN0ZXIK
ICAgc3RyaW5nLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42
MTcyKy0wLjA0MTQgICAgID8gICAgICAzLjYzODkrLTAuMDMzNSAgICAgICAgPwogICBzdHJpbmct
dmFyLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4Ljk0MTgrLTAuMjY5
MyAgICAgXiAgICAgNTguMzMwMSstMC4xMDExICAgICAgICBeIGRlZmluaXRlbHkgMS4wMTA1eCBm
YXN0ZXIKICAgc3RydWN0dXJlLWhvaXN0LW92ZXItdHJhbnNpdGlvbnMgICAgICAgICAgICAgICAg
ICAgMi44MzQ4Ky0wLjAzOTQgICAgID8gICAgICAyLjg1ODErLTAuMDU1MSAgICAgICAgPwogICBz
d2l0Y2gtY2hhci1jb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk0MDgr
LTAuMDI5NiAgICAgICAgICAgIDIuOTEzOCstMC4wMjkyICAgICAgICAKICAgc3dpdGNoLWNoYXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44Mjk0Ky0wLjAzODcgICAg
ID8gICAgICA2LjkxNzUrLTAuMDU5OSAgICAgICAgPyBtaWdodCBiZSAxLjAxMjl4IHNsb3dlcgog
ICBzd2l0Y2gtY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjQw
MTMrLTAuMDY4MyAgICAgPyAgICAgIDcuNTQ2MSstMC4wODczICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE5Nnggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhciAgICAgICAgICAgICAg
ICAgICAgICAgMTcuODMwMistMC4wODgyICAgICAhICAgICAxOS4yNjcwKy0wLjY5ODkgICAgICAg
ICEgZGVmaW5pdGVseSAxLjA4MDZ4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDE3Ljg2MDkrLTAuMDkxNCAgICAgICAgICAgMTcuODQ3
MSstMC4wODU2ICAgICAgICAKICAgc3dpdGNoLXN0cmluZy1iYXNpYy12YXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNy41NjgyKy0wLjEwNDAgICAgICEgICAgIDE4LjA3NzErLTAuMDYyMCAg
ICAgICAgISBkZWZpbml0ZWx5IDEuMDI5MHggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkuMzU3OSstMC4zNDU1ICAgICBeICAgICAx
Ni4zNjcxKy0wLjM1NzYgICAgICAgIF4gZGVmaW5pdGVseSAxLjE4Mjd4IGZhc3RlcgogICBzd2l0
Y2gtc3RyaW5nLWJpZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgIDI0LjY1NzArLTAu
MDY0OSAgICAgISAgICAgMjUuMDkxMCstMC4wNjM0ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTc2
eCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAg
ICAgICAxOS4yNjk1Ky0wLjExNDggICAgICEgICAgIDE5Ljg2MDcrLTAuMTEwOSAgICAgICAgISBk
ZWZpbml0ZWx5IDEuMDMwN3ggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyICAg
ICAgICAgICAgICAgICAgICAgICAgMTQuMzM3NistMC4wNzg5ICAgICAhICAgICAxNC42NjIwKy0w
LjEwNzkgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMjZ4IHNsb3dlcgogICBzd2l0Y2gtc3RyaW5n
LXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LjQ0MDIrLTAuMTAwOSAgICAg
ISAgICAgMTQuNjU3MCstMC4xMDM3ICAgICAgICAhIGRlZmluaXRlbHkgMS4wMTUweCBzbG93ZXIK
ICAgc3dpdGNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4w
NzQwKy0wLjYxMzYgICAgID8gICAgIDEyLjE1NzcrLTAuNjM5NiAgICAgICAgPwogICB0ZWFyLW9m
Zi1hcmd1bWVudHMtc2ltcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAxLjkwMjUrLTAuMDI2
MyAgICAgPyAgICAgIDEuOTA0OSstMC4wMzM1ICAgICAgICA/CiAgIHRlYXItb2ZmLWFyZ3VtZW50
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDEwOSstMC4wMzE4ICAgICAgICAg
ICAgMy4wMDk3Ky0wLjAzNzggICAgICAgIAogICB0ZW1wb3JhbC1zdHJ1Y3R1cmUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE3LjM5NDIrLTAuMDUzMSAgICAgPyAgICAgMTcuNDQ2Nist
MC4yMzAyICAgICAgICA/CiAgIHRvLWludDMyLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTguNDQ3OCstMC4wNDU0ICAgICA/ICAgICAxOC41MzQyKy0wLjExMjAgICAg
ICAgID8KICAgdW5kZWZpbmVkLXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy44MDA0Ky0wLjAyOTggICAgID8gICAgICAzLjg0MTgrLTAuMDQ5MCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMDl4IHNsb3dlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEzNC42MDA1Ky0wLjI5NzcgICAgICEgICAgMTM2LjIwMDYrLTAuMjk3
MiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDExOXggc2xvd2VyCiAgIDxnZW9tZXRyaWM+ICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuMzQ1NystMC4wNDUzICAgICA/ICAg
ICAxMi40MjEyKy0wLjAzODMgICAgICAgID8gbWlnaHQgYmUgMS4wMDYxeCBzbG93ZXIKICAgPGhh
cm1vbmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC45MDA1Ky0w
LjA1NDAgICAgID8gICAgICA0LjkyNDUrLTAuMDU5NiAgICAgICAgPyBtaWdodCBiZSAxLjAwNDl4
IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICAgMzJCaXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKQWxsIGJlbmNobWFya3M6CiAgIDxhcml0aG1ldGljPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODguMzM1MSstMC4yMzE2ICAgICAh
ICAgIDE5Mi4xNDQ1Ky0wLjIwOTkgICAgICAgICEgZGVmaW5pdGVseSAxLjAyMDJ4IHNsb3dlcgog
ICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjY5
MzQrLTAuMDU2OCAgICAgISAgICAgMTcuODE2MSstMC4wNDkzICAgICAgICAhIGRlZmluaXRlbHkg
MS4wMDY5eCBzbG93ZXIKICAgPGhhcm1vbmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4wNzk5Ky0wLjAyNjAgICAgICAgICAgICA0LjA3NzcrLTAuMDMxNCAgICAg
ICAgICBtaWdodCBiZSAxLjAwMDV4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgICAg
MzJCaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBvZiBw
cmVmZXJyZWQgbWVhbnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDAuNDk0MistMC4wODUxICAgICAhICAgICA0MC44NjEzKy0wLjA4MDQgICAg
ICAgICEgZGVmaW5pdGVseSAxLjAwOTF4IHNsb3dlcgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217205</attachid>
            <date>2013-11-18 09:38:44 -0800</date>
            <delta_ts>2014-02-25 12:58:44 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-123195-20131118093841.patch</filename>
            <type>text/plain</type>
            <size>427848</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMiBA
QAorMjAxMy0xMC0zMSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6cGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmJyYW5jaFB0cldpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6Y2FuSnVt
cFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnJldmVydEp1bXBSZXBsYWNl
bWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6
OnN0b3JlOCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmJyYW5jaDMyV2l0
aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJBUk12Nzo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRy
ZXNzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Ojpi
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpjYW5K
dW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODY6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVz
cyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246OmdldFVudXNlZFJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246OnN0b3JlOCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6bW92Yl9ybSk6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoK
KyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpBcnJheVBy
b2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6YWRkcmVz
c09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6b2Jz
ZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZn
L0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9E
RkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hX
ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoU3Ry
dWN0dXJlUHRyKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQpOgorICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NS
RXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZv
ck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3Ry
aW5nT25DZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmlu
YWxPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVP
YmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlU3RyaW5nT3JTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0TG9hZFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0
ZUpTQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVh
bGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0
T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZUNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUFycmF5aWZ5VG9TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlUHV0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6ZXF1YWxOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNBcnJheVR5
cGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpoYXNDbGFzc0luZm8pOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3RPck90aGVy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9i
amVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAg
ICAgICAgKiBmdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpj
b21waWxlU3R1YldpdGhPU1JFeGl0U3RhY2ttYXApOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGVTdHViV2l0aG91dE9TUkV4aXRTdGFja21hcCk6CisgICAgICAgICogaGVhcC9HQ0Fzc2VydGlv
bnMuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xs
ZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0
dXJlSURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlND
OjpNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9KU1N0
YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTdGFjazo6fkpTU3RhY2spOgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFu
Y2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAgICogaml0L0pJ
VENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29y
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5lcmF0b3I6Omdl
bmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNoZWNrU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKToKKyAgICAgICAgKEpTQzo6
SklUOjpicmFuY2hTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpicmFuY2hTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2NoZWNrX2hhc19pbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pc19zdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0X29iamVjdF9vcl90aGlzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfdG9fdGhpcyk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3By
aW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9qZXFfbnVsbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9qbmVxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRT
bG93X29wX2VxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9uZXEpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXh0X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMp
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF90b19zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0SW50VHlwZWRBcnJheUdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0Rmxv
YXRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFy
cmF5UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRC
eVZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9nZXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2dldF9ieV9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2spOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAg
ICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdExvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0ludGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk5vdFR5cGUpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwYXRjaEJ5SWRTZWxmQWNjZXNzKToKKyAgICAgICAg
KEpTQzo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6cmVwbGFj
ZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6
CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxk
R2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjplbWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAg
ICAoSlNDOjplbWl0UHV0VHJhbnNpdGlvblN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNo
SW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAoSlNDOjpyZXNl
dEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1dEJ5SUQpOgorICAgICAgICAqIGppdC9T
cGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6
OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJ
VDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3MpOgorICAgICAgICAqIGppdC9UaHVua0dl
bmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1
dGFibGVCYXNlOjppc0Z1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpjbGVhckNvZGVWaXJ0dWFsKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJs
ZTo6dW5saW5rQ2FsbHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAg
ICAgKEpTQzo6SlNDZWxsOjpjbGVhclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1l
L0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAg
ICAoSlNDOjpKU0NlbGw6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp0
eXBlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppbmRleGluZ1R5cGUpOgorICAgICAgICAoSlND
OjpKU0NlbGw6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0Nl
bGw6OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0dldHRlclNldHRlcik6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aXNQcm94eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNB
UElWYWx1ZVdyYXBwZXIpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnNldFN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6bWV0aG9kVGFibGUpOgorICAgICAgICAoSlNDOjpKU0NlbGw6
OmZhc3RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0NlbGw6OmNsYXNzSW5mbyk6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmdldENhbGxhYmxlT2JqZWN0U2xvdyk6
CisgICAgICAgIChKU0M6OkpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChKU0M6
OkpTT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVudGVyRGlj
dGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsSW5kZXhlZFN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3JlYXRlQXJyYXlT
dG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKToKKyAg
ICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhv
dXRDb3B5aW5nRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQz
MlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZW5lcmljQ29udmVydERvdWJsZVRvQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3Jh
Z2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y29udmVydENvbnRpZ3VvdXNUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMlNsb3cpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlRG91YmxlU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVDb250aWd1b3VzU2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVBcnJheVN0b3JhZ2VTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmVuc3VyZUFycmF5
U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdE5vbkluZGV4QWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVu
Z3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RJ
bmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXROZXdW
ZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291bnRFbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OmdldEpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0VmVjdG9y
TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldEluZGV4UXVpY2tseSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1
cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5U3RvcmFnZU9y
TnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmN1cnJl
bnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aXNBY3Rp
dmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJbnN0YW5jZSk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6
CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0U2NvcGUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6
CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0M6OlR5cGVJbmZv
Ojppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9ydGFs
KToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86OmlubGluZVR5cGVGbGFncyk6CisgICAgICAgICog
cnVudGltZS9NYXBEYXRhLmg6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFw
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJl
OjppZCk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6b2JqZWN0SW5pdGlhbGl6YXRpb25GaWVs
ZHMpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJ
RFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6flN0cnVjdHVyZUlEVGFi
bGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcyk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZUlEVGFibGU6OmFsbG9jYXRlSUQpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRh
YmxlOjpkZWFsbG9jYXRlSUQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6YmFzZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmdldCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xU
YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha01hcERhdGEuaDoKKwogMjAxMy0xMS0xOCAg
QmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgogCiAgICAgICAgIEFkZCBt
aXNzaW5nIGxvYWQ4L2JyYW5jaDggd2l0aCBBYnNvbHV0ZUFkZHJlc3MgcGFyYW1ldGVyIHRvIE1J
UFMgcG9ydC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDE2LDYgKzQxNiw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgcnVudGltZS9TdHJpbmdSZWN1cnNpb25DaGVja2VyLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0
dXJlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisgICAgcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCiAgICAg
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKICAgICBydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTEwMyw2ICsxMTAzLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlubGluZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
QVBJU2hpbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNo
aW1zLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJ
U2hpbXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTEgKzU0LDMwIEBAIHByb3RlY3RlZDoKICAg
ICBJZGVudGlmaWVyVGFibGUqIG1fZW50cnlJZGVudGlmaWVyVGFibGU7CiB9OwogCisvLyBXZSBu
ZWVkIHRoaXMgY2xhc3Mgc28gdGhhdCB3ZSBjYW4gbW9yZSBlYXNpbHkgY29udHJvbCB3aGVuIHdl
IHNldCB0aGUgdGhyZWFkIGxvY2FsIFZNIGZpZWxkLgorY2xhc3MgU2NvcGVkVGhyZWFkTG9jYWxW
TSB7CitwdWJsaWM6CisgICAgU2NvcGVkVGhyZWFkTG9jYWxWTShWTSogY3VycmVudFZNKQorICAg
ICAgICA6IG1fcHJldmlvdXNWTShWTTo6Y3VycmVudFZNKCkpCisgICAgeworICAgICAgICBWTTo6
c2V0Q3VycmVudFZNKGN1cnJlbnRWTSk7CisgICAgfQorCisgICAgflNjb3BlZFRocmVhZExvY2Fs
Vk0oKQorICAgIHsKKyAgICAgICAgVk06OnNldEN1cnJlbnRWTShtX3ByZXZpb3VzVk0pOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBWTSogbV9wcmV2aW91c1ZNOworfTsKKwogY2xhc3MgQVBJRW50
cnlTaGltIDogcHVibGljIEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrIHsKIHB1YmxpYzoKICAgICAv
LyBOb3JtYWwgQVBJIGVudHJ5CiAgICAgQVBJRW50cnlTaGltKEV4ZWNTdGF0ZSogZXhlYywgYm9v
bCByZWdpc3RlclRocmVhZCA9IHRydWUpCiAgICAgICAgIDogQVBJRW50cnlTaGltV2l0aG91dExv
Y2soJmV4ZWMtPnZtKCksIHJlZ2lzdGVyVGhyZWFkKQorICAgICAgICAsIG1fdGhyZWFkTG9jYWxW
TSgmZXhlYy0+dm0oKSkKICAgICAgICAgLCBtX2xvY2tIb2xkZXIoZXhlYy0+dm0oKS5leGNsdXNp
dmVUaHJlYWQgPyAwIDogZXhlYykKICAgICB7CiAgICAgfQpAQCAtNjYsNiArODUsNyBAQCBwdWJs
aWM6CiAgICAgLy8gSlNQcm9wZXJ0eU5hbWVBY2N1bXVsYXRvciBvbmx5IGhhcyBhIHZtLgogICAg
IEFQSUVudHJ5U2hpbShWTSogdm0sIGJvb2wgcmVnaXN0ZXJUaHJlYWQgPSB0cnVlKQogICAgICAg
ICA6IEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKHZtLCByZWdpc3RlclRocmVhZCkKKyAgICAgICAg
LCBtX3RocmVhZExvY2FsVk0odm0pCiAgICAgICAgICwgbV9sb2NrSG9sZGVyKHZtLT5leGNsdXNp
dmVUaHJlYWQgPyAwIDogdm0pCiAgICAgewogICAgIH0KQEAgLTc3LDYgKzk3LDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBTY29wZWRUaHJlYWRMb2NhbFZNIG1fdGhyZWFkTG9j
YWxWTTsKICAgICBKU0xvY2tIb2xkZXIgbV9sb2NrSG9sZGVyOwogfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NiArMTAyLDcgQEAgLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKQogCiAt
ICh2b2lkKXNldEV4Y2VwdGlvbjooSlNWYWx1ZSAqKXZhbHVlCiB7CisgICAgSlNDOjpBUElFbnRy
eVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAgaWYgKHZhbHVlKQogICAgICAg
ICBtX2V4Y2VwdGlvbi5zZXQodG9KUyhtX2NvbnRleHQpLT52bSgpLCB0b0pTKEpTVmFsdWVUb09i
amVjdChtX2NvbnRleHQsIHZhbHVlSW50ZXJuYWxWYWx1ZSh2YWx1ZSksIDApKSk7CiAgICAgZWxz
ZQpAQCAtMjQ0LDE0ICsyNDUsMTMgQEAgLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxs
YmFja0RhdAogCiAtIChKU1ZhbHVlICopd3JhcHBlckZvck9iakNPYmplY3Q6KGlkKW9iamVjdAog
ewotICAgIC8vIExvY2sgYWNjZXNzIHRvIG1fd3JhcHBlck1hcAotICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2sodG9KUyhtX2NvbnRleHQpKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNo
aW0odG9KUyhtX2NvbnRleHQpKTsKICAgICByZXR1cm4gW21fd3JhcHBlck1hcCBqc1dyYXBwZXJG
b3JPYmplY3Q6b2JqZWN0XTsKIH0KIAogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JKU09iamVjdDoo
SlNWYWx1ZVJlZil2YWx1ZQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodG9KUyhtX2Nv
bnRleHQpKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhtX2NvbnRleHQp
KTsKICAgICByZXR1cm4gW21fd3JhcHBlck1hcCBvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6dmFs
dWVdOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE2ICs2OCwyMCBAQCBKU0NvbnRleHRH
cm91cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKCiAKIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxl
YXNlKEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQogewotICAgIElkZW50aWZpZXJUYWJsZSogc2F2
ZWRJZGVudGlmaWVyVGFibGU7CisvLyAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRlbnRpZmll
clRhYmxlOwogICAgIFZNJiB2bSA9ICp0b0pTKGdyb3VwKTsKIAorLyoKICAgICB7Ci0gICAgICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICAgICAgc2F2ZWRJZGVudGlmaWVyVGFibGUgPSB3
dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSh2bS5pZGVudGlmaWVyVGFi
bGUpOworKi8KKyAgICAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbSgmdm0pOworLy8gICAgICAg
IHNhdmVkSWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlm
aWVyVGFibGUodm0uaWRlbnRpZmllclRhYmxlKTsKICAgICAgICAgdm0uZGVyZWYoKTsKKy8qCiAg
ICAgfQogCiAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoc2F2
ZWRJZGVudGlmaWVyVGFibGUpOworKi8KIH0KIAogc3RhdGljIGJvb2wgaW50ZXJuYWxTY3JpcHRU
aW1lb3V0Q2FsbGJhY2soRXhlY1N0YXRlKiBleGVjLCB2b2lkKiBjYWxsYmFja1B0ciwgdm9pZCog
Y2FsbGJhY2tEYXRhKQpAQCAtMTY1LDcgKzE2OSw3IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVs
ZWFzZShKU0dsb2JhbENvbnQKICAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRlbnRpZmllclRh
YmxlOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICB7Ci0gICAgICAgIEpT
TG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4
ZWMpOwogCiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIHNhdmVkSWRlbnRp
ZmllclRhYmxlID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUodm0u
aWRlbnRpZmllclRhYmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5h
Z2VkVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01h
bmFnZWRWYWx1ZS5tbQkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU01hbmFnZWRWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgIkFQSUNhc3QuaCIKKyNpbXBvcnQg
IkFQSVNoaW1zLmgiCiAjaW1wb3J0ICJIZWFwLmgiCiAjaW1wb3J0ICJKU0NvbnRleHRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiSlNWYWx1ZUludGVybmFsLmgiCkBAIC0xOTEsNiArMTkyLDcgQEAgLSAo
aWQpaW5pdFdpdGhWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlCiAgICAgICAgIHJldHVybiBzZWxmOwog
CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKFt2YWx1ZS5jb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCk7CiAgICAgSlNDOjpXZWFrPEpTQzo6SlNHbG9iYWxPYmplY3Q+IHdlYWsoZ2xvYmFs
T2JqZWN0LCBtYW5hZ2VkVmFsdWVIYW5kbGVPd25lcigpLCBzZWxmKTsKICAgICBtX2dsb2JhbE9i
amVjdC5zd2FwKHdlYWspOwpAQCAtMjEyLDYgKzIxNCw3IEBAIC0gKEpTVmFsdWUgKil2YWx1ZQog
ICAgIGlmIChtX3dlYWtWYWx1ZS5pc0NsZWFyKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
SlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAg
IEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKICAgICBKU0NvbnRleHQgKmNvbnRl
eHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOnRvR2xvYmFsUmVm
KGV4ZWMpXTsKICAgICBKU0M6OkpTVmFsdWUgdmFsdWU7CiAgICAgaWYgKG1fd2Vha1ZhbHVlLmlz
UHJpbWl0aXZlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09i
amVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNiwxMCArNTA2LDExIEBAIGJvb2wgSlNP
YmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0
KQorYm9vbCBKU09iamVjdElzRnVuY3Rpb24oSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
b2JqZWN0KQogewogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
QVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKGN0eCkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwogICAgIEpTQ2VsbCogY2VsbCA9IHRvSlMob2JqZWN0KTsKICAgICByZXR1cm4gY2VsbC0+bWV0
aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2VsbCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsK
QEAgLTYwNSwxMiArNjA2LDEyIEBAIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5
UHJvcGUKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgRXhlY1N0
YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7
CiAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKIAorICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZXMg
PSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJheSh2bSk7CiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgYXJyYXkodm0pOwogICAgIGpzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5h
bWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCShyZXZpc2lvbiAxNTk0MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY5Miw2ICs2OTIsOCBAQCBzdGF0aWMgaWQgY29udGFpbmVyVmFsdWVUb09iamVjdChKU0dsb2Jh
CiAgICAgICAgICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFi
bGVEaWN0aW9uYXJ5IGNsYXNzXV0pOwogICAgICAgICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSA9IChOU011dGFibGVEaWN0aW9uYXJ5ICopY3VycmVudC5vYmpjOwogCisgICAg
ICAgICAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CisKICAg
ICAgICAgICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lQXJyYXkgPSBKU09i
amVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQsIGpzKTsKICAgICAgICAgICAgIHNpemVfdCBs
ZW5ndGggPSBKU1Byb3BlcnR5TmFtZUFycmF5R2V0Q291bnQocHJvcGVydHlOYW1lQXJyYXkpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNp
b24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYwMyw2ICs2MDMsNyBAQCBpZCB0cnlVbndyYXBPYmpjT2JqZWN0
KEpTR2xvYmFsQ29udGV4dFJlCiAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwogICAgIEpT
T2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0LCB2YWx1ZSwgJmV4Y2Vw
dGlvbik7CiAgICAgQVNTRVJUKCFleGNlcHRpb24pOworICAgIEpTQzo6QVBJRW50cnlTaGltIGVu
dHJ5U2hpbSh0b0pTKGNvbnRleHQpKTsKICAgICBpZiAodG9KUyhvYmplY3QpLT5pbmhlcml0cyhK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q+OjppbmZvKCkpKQog
ICAgICAgICByZXR1cm4gKGlkKUpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4o
dG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgpOwogICAgIGlmIChpZCB0YXJnZXQgPSB0cnlV
bndyYXBDb25zdHJ1Y3RvcihvYmplY3QpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE1LDYgKzEw
MTUsNyBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgSlNWYWx1ZSAqbXlDdXN0
b21Qcm9wZXJ0eSA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZ2V0TGFzdE5vZGVJbkNoYWlu
KHJvb3QpLm15Q3VzdG9tUHJvcGVydHkiXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJNeSBjdXN0
b20gcHJvcGVydHkgPT0gNDIiLCBbbXlDdXN0b21Qcm9wZXJ0eSBpc051bWJlcl0gJiYgW215Q3Vz
dG9tUHJvcGVydHkgdG9JbnQzMl0gPT0gNDIpOwogICAgIH0KKyAgICBOU0xvZyhAImRvbmUgd2l0
aCB0ZXN0Iik7CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC02NTMsNiArNjUzLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAiIC8+DQogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuY3BwIiAvPg0KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uY3BwIiAvPg0KKyAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURUYWJsZS5jcHAiIC8+DQogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xUYWJsZS5jcHAiIC8+DQog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUZXN0UnVubmVyVXRpbHMuY3BwIiAv
Pg0KQEAgLTEyNjYsNiArMTI2Nyw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cnVjdHVyZS5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cnVjdHVyZVJhcmVEYXRhLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YUlubGluZXMuaCIgLz4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIiAv
Pg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBj
b3B5KQpAQCAtNzUzLDYgKzc1Myw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFN0cnVjdHVyZUNoYWluLmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
DQogICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RydWN0dXJlSURUYWJsZS5jcHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0K
KyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5
bWJvbFRhYmxlLmNwcCI+DQogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQogICAgIDwv
Q2xDb21waWxlPg0KQEAgLTIyNzksNiArMjI4Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFN0cnVjdHVyZUlEVGFibGUuaCI+DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcxMSw2
ICs3MTEsOCBAQAogCQkyQTQ4RDE5MTE3NzIzNjVCMDBDNjVBNUYgLyogQVBJQ2FsbGJhY2tGdW5j
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIx
MUI1NzQxNzZBMjI0RDAwMEUyQTIzIC8qIEFQSUNhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJ
MkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE3QTU4RUUxODA4
QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OworCQkyQUQzNTNEOTE4MTVDMTBCMDA2
MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQzNTNENzE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJl
SURUYWJsZS5jcHAgKi87IH07CisJCTJBRDM1M0RBMTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQUQzNTNEODE4MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBRDg5MzJCMTdFMzg2
OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFw
SXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMzcxRDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8qIGxp
YnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAqLzsgfTsKIAkJNDEzNTlD
RjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEMjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyog
RGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKQEAgLTE5NjUsNiArMTk2Nyw4IEBACiAJCTJBMjgyNUNG
MTgzNDFGMkQwMDg3RkJBOSAvKiBEZWxheWVkUmVsZWFzZVNjb3BlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERlbGF5ZWRSZWxlYXNlU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkE2RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVm
ZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlckdDLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFEMzUzRDcxODE1QzEwQjAwNjFFODE3
IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RydWN0dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBRDM1M0Q4MTgxNUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRp
b25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9u
U2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAw
RUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7
IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk0
NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjg3LDYgKzM2OTEsOCBAQAogCQkJCUE3OTBERDY4
MTgyRjQ5OTcwMDU4ODgwNyAvKiBTZXRJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCUE3OTBE
RDY5MTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmNwcCAqLywKIAkJCQlBNzkwREQ2
QTE4MkY0OTk3MDA1ODg4MDcgLyogSlNTZXRJdGVyYXRvci5oICovLAorCQkJCTJBRDM1M0Q3MTgx
NUMxMEIwMDYxRTgxNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLywKKwkJCQkyQUQzNTNEODE4
MTVDMTBCMDA2MUU4MTcgLyogU3RydWN0dXJlSURUYWJsZS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQxODAsNiArNDE4Niw3
IEBACiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTA4NjIwMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVh
a3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYzNTE3QURCNUYzMDA1QUIxNzQgLyog
QXJyYXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBRDM1M0RBMTgxNUMxMEIwMDYxRTgx
NyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRUEwODYyMTE4MkI3
QTA0MDBGNkQ4NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
N0E4QUYzNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlCdWZmZXJWaWV3LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01NTM5LDYgKzU1NDYsNyBAQAogCQkJCTE0N0YzOUQ0MTA3RUMzNzYw
MDQyN0E0OCAvKiBKU09iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDgyQjdFNDBBNDMw
NzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdGOTkz
NjAwRkQ3MzI1MTAwQTBCMkQwIC8qIEpTT05PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MkFEMzUzRDkxODE1QzEwQjAwNjFFODE3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTVGNkU2OTUwRTVCNUY5NzAwOTFFODYwIC8qIEpTUHJvZmlsZXJQcml2YXRl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMTg0RTFBMTdCRURCRDMwMDdDQjYzQSAvKiBKU1By
b21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MxNUY2NUQxN0MxOTlDRTAwNzk0RDQwIC8q
IEpTUHJvbWlzZUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsNyArNDE3LDcg
QEAgcHVibGljOgogCiAgICAgLy8gRGF0YUxhYmVsMzI6CiAgICAgLy8KLSAgICAvLyBBIERhdGFM
YWJlbFB0ciBpcyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFp
bmluZyBhIHBvaW50ZXIgdG8gYmUKKyAgICAvLyBBIERhdGFMYWJlbDMyIGlzIHVzZWQgdG8gcmVm
ZXIgdG8gYSBsb2NhdGlvbiBpbiB0aGUgY29kZSBjb250YWluaW5nIGEgMzItYml0IGNvbnN0YW50
IHRvIGJlCiAgICAgLy8gcGF0Y2hlZCBhZnRlciB0aGUgY29kZSBoYXMgYmVlbiBnZW5lcmF0ZWQu
CiAgICAgY2xhc3MgRGF0YUxhYmVsMzIgewogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUZW1wbGF0
ZUFzc2VtYmxlclR5cGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
OSw2ICszNTksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFu
Y2hQdHJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkp
OwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRh
TGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyV2l0aFBhdGNoKGNv
bmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpKTsKKyAgICB9CisKICNpZiAh
Q1BVKEFSTV9UUkFESVRJT05BTCkKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQog
ICAgIHsKQEAgLTM3NCw2ICszNzksMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IFBhdGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwgcmVnLCBpbW0pKTsKICAgICB9CisKKyAgICBQ
YXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFBhdGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwgYWRkcmVzcywgaW1tKSk7CisgICAgfQogI2Vu
ZGlmCiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTTY0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTg2LDYgKzIxODYsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoNjQoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgQUxXQVlT
X0lOTElORSBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRp
YWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgZGF0YUxhYmVs
ID0gRGF0YUxhYmVsMzIodGhpcyk7CisgICAgICAgIG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0
VmFsdWUsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAg
ICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCA9IFRydXN0ZWRJbW1Q
dHIoMCkpCiAgICAgewogICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKQEAgLTIy
MTgsNiArMjIyNSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJl
c3VsdCk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMldpdGhQ
YXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzIm
IGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMy
KDApKQorICAgIHsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CisgICAgICAg
IEp1bXAgcmVzdWx0ID0gYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVmdCwgZGF0YUxhYmVsLCBp
bml0aWFsUmlnaHRWYWx1ZSk7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKKyAgICB9CisKICAgICBQYXRj
aGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNo
YWJsZSA9IHRydWU7CkBAIC0yMjgzLDYgKzIyOTgsNyBAQCBwdWJsaWM6CiAgICAgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpIHsgcmV0dXJuIGdldENhY2hlZERhdGFUZW1w
UmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsgfQogCiAgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJl
cGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIg
bGFiZWwpCiAgICAgewpAQCAtMjI5NSw2ICsyMzExLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9j
YXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29k
ZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExB
VEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBh
dGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQq
IGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIHJlZW1pdEluaXRpYWxNb3ZlV2l0aFBhdGNo
KGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGluaXRpYWxWYWx1ZSk7CkBAIC0yMzA1
LDYgKzIzMjcsMTEgQEAgcHVibGljOgogICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0o
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBBZGRyZXNzLCBpbnQzMl90
KQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFuY2goQVJNNjRBc3NlbWJs
ZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxNTk0
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtNzM5LDYgKzczOSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCisgICAgdm9pZCBz
dG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIHN0
b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CisgICAgfQorICAgIAogICAgIHZv
aWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIHN0b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CkBAIC03NTYsNiArNzYx
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mp
OwogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNz
IGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7
CiAgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpAQCAtMTY5
Nyw2ICsxNzA4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KICAgICAKKyAgICBB
TFdBWVNfSU5MSU5FIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBp
bml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIGxvYWQz
MihsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdp
dGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKKyAgICB9CisgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2hQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQg
PSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9
IHRydWU7CkBAIC0xNzI5LDYgKzE3NDcsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0
Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9
IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0
cnVlOworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQs
IGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hh
YmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAg
fQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAgIHBh
ZEJlZm9yZVBhdGNoKCk7CkBAIC0xNzcyLDYgKzE3OTgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0
ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKQEAgLTE3OTUsMTEgKzE4
MjIsMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoKTsKICAg
ICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMikKKyAgICB7
CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgICAgICByZXR1cm4gQ29k
ZUxvY2F0aW9uTGFiZWwoKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFi
ZWwsIEFkZHJlc3MsIHZvaWQqKQogICAgIHsKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRG
T1JNKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9Q
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCwgQWRkcmVzcywgaW50
MzJfdCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIH0K
KwogI2lmIFVTRShNQVNNX1BST0JFKQogICAgIHN0cnVjdCBDUFVTdGF0ZSB7CiAgICAgICAgICNk
ZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJl
dmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDYgKzI0NiwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkp
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
MzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBw
YWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2ltX2ZvcmNlMzIoaW5p
dGlhbFJpZ2h0VmFsdWUubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSk7CisgICAgICAg
IGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fz
c2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgRGF0YUxhYmVs
UHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlhbFZhbHVlLCBJbXBsaWNp
dEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CkBAIC0y
NjYsNiArMjc0LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBs
YWJlbCkKICAgICB7CkBAIC0yODgsNiArMjk3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGxhYmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwogICAgIH0KICAgICAKKyAgICBzdGF0
aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25B
ZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgY29u
c3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG1vZFJNQnl0ZXMgPSAx
OworICAgICAgICBjb25zdCBpbnQgb2Zmc2V0Qnl0ZXMgPSAwOworICAgICAgICBjb25zdCBpbnQg
aW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IG9wY29k
ZUJ5dGVzICsgbW9kUk1CeXRlcyArIG9mZnNldEJ5dGVzICsgaW1tZWRpYXRlQnl0ZXM7CisgICAg
ICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CisgICAg
ICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKKyAgICB9CisgICAg
CiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0
Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCByZWcsIHZv
aWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVt
cFRvX2NtcGxfaXJfZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCks
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHJlZyk7CkBAIC0yOTks
NiArMzE5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9f
Y21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgMCwgYWRkcmVzcy5iYXNlKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFk
ZHJlc3MgYWRkcmVzcywgaW50MzJfdCBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQoIWFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9f
Y21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgaW5p
dGlhbFZhbHVlLCAwLCBhZGRyZXNzLmJhc2UpOworICAgIH0KKwogI2lmIFVTRShNQVNNX1BST0JF
KQogICAgIC8vIEZvciBkZXRhaWxzIGFib3V0IHByb2JlKCksIHNlZSBjb21tZW50IGluIE1hY3Jv
QXNzZW1ibGVyWDg2XzY0LmguCiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBh
cmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNp
b24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDYsNiArNjA2LDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIFg4NlJlZ2lzdGVyczo6ZWN4OwogICAgIH0KIAorICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVySUQgZ2V0VW51c2VkUmVnaXN0ZXIoQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3MuYmFzZSAhPSBYODZSZWdpc3RlcnM6OmVh
eCkKKyAgICAgICAgICAgIHJldHVybiBYODZSZWdpc3RlcnM6OmVheDsKKworICAgICAgICBpZiAo
YWRkcmVzcy5iYXNlICE9IFg4NlJlZ2lzdGVyczo6ZWJ4KQorICAgICAgICAgICAgcmV0dXJuIFg4
NlJlZ2lzdGVyczo6ZWJ4OworCisgICAgICAgIEFTU0VSVChhZGRyZXNzLmJhc2UgIT0gWDg2UmVn
aXN0ZXJzOjplY3gpOworICAgICAgICByZXR1cm4gWDg2UmVnaXN0ZXJzOjplY3g7CisgICAgfQor
CiAgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAg
IHsKICNpZiBDUFUoWDg2KQpAQCAtNjI1LDYgKzYzNywyNSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmJfcm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAKKyAgICB2b2lkIHN0b3JlOChSZWdp
c3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyNpZiBDUFUoWDg2KQorICAgICAg
ICAvLyBPbiAzMi1iaXQgeDg2IHdlIGNhbiBvbmx5IHN0b3JlIGZyb20gdGhlIGZpcnN0IDQgcmVn
aXN0ZXJzOworICAgICAgICAvLyBlc3AuLmVkaSBhcmUgbWFwcGVkIHRvIHRoZSAnaCcgcmVnaXN0
ZXJzIQorICAgICAgICBpZiAoc3JjID49IDQpIHsKKyAgICAgICAgICAgIC8vIFBpY2sgYSB0ZW1w
b3JhcnkgcmVnaXN0ZXIuCisgICAgICAgICAgICBSZWdpc3RlcklEIHRlbXAgPSBnZXRVbnVzZWRS
ZWdpc3RlcihhZGRyZXNzKTsKKworICAgICAgICAgICAgLy8gU3dhcCB0byB0aGUgdGVtcG9yYXJ5
IHJlZ2lzdGVyIHRvIHBlcmZvcm0gdGhlIHN0b3JlLgorICAgICAgICAgICAgc3dhcChzcmMsIHRl
bXApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92Yl9ybSh0ZW1wLCBhZGRyZXNzLm9mZnNl
dCwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIHN3YXAoc3JjLCB0ZW1wKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJf
cm0oc3JjLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICAgICB2b2lk
IHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBhZGRyZXNzKQogICAgIHsKICNpZiBD
UFUoWDg2KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksNiArMTE5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGltbSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKICAgICB9CisKKyAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzb3Vy
Y2UsIHZvaWQqIGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoc291cmNlID09IFg4NlJlZ2lz
dGVyczo6ZWF4KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwg
c2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMzIoc291cmNlLCBzY3JhdGNoUmVn
aXN0ZXIpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJ
bW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAgewpAQCAtNTkyLDYgKzYwMiwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICAgfQogCisgICAgRGF0
YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyIGluaXRpYWxWYWx1ZSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9pNjRyKGluaXRpYWxWYWx1ZS5tX3ZhbHVlLCBkZXN0KTsKKyAgICAgICAg
cmV0dXJuIERhdGFMYWJlbFB0cih0aGlzKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaFB0cldp
dGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxh
YmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChp
bml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKQEAgLTYwNCw2ICs2MjEsMTggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lz
dGVyKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVk
SW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAg
ICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXBsX2ltX2ZvcmNlMzIo
aW5pdGlhbFJpZ2h0VmFsdWUubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQuYmFzZSk7CisgICAg
ICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICBub3AoKTsKKyAgICAg
ICAgbm9wKCk7CisgICAgICAgIG5vcCgpOworICAgICAgICBub3AoKTsKKyAgICAgICAgcmV0dXJu
IEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAg
IERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1
ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRhTGFiZWxQdHIg
bGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKQEAg
LTY1Miw2ICs2ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZ2lzdGVySUQgc2NyYXRjaFJl
Z2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBzY3JhdGNoUmVnaXN0ZXI7IH0KIAogICAgIHN0
YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgc3RhdGljIENvZGVM
b2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2Nh
dGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC02NjMsMTYgKzY5MywzNiBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAg
ICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2gzMldp
dGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgewor
ICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgb3Bjb2Rl
Qnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAg
ICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXMgKyBpbW1lZGlh
dGVCeXRlczsKKyAgICAgICAgQVNTRVJUKHRvdGFsQnl0ZXMgPj0gbWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMp
OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIg
bGFiZWwpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9u
UmVnaXN0ZXIobGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0
YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gc3RhcnRPZkJyYW5jaDMyV2l0
aFBhdGNoT25SZWdpc3RlcihsYWJlbCk7CisgICAgfQogICAgIAogICAgIHN0YXRpYyB2b2lkIHJl
dmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRpYWxWYWx1ZSkK
ICAgICB7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0
cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisgICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJlc3MsIGludDMy
X3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1w
VG9fY21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwg
aW5pdGlhbFZhbHVlLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0
aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3Zx
X2k2NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9j
YXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlz
aW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0
cldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CiAgICAgfQorCisgICAgc3RhdGljIENvZGVMb2Nh
dGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2Rl
TG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVs
KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFi
ZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAg
ewpAQCAtMTc2LDYgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVj
dGlvblN0YXJ0LCBhZGRyZXNzLCB2YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCByZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVs
IGluc3RydWN0aW9uU3RhcnQsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3MsIGludDMy
X3QgdmFsdWUpCisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCBhZGRy
ZXNzLCB2YWx1ZSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxv
Y2s7CiAjaWYgRU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1OTQy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9FYkdiLCBzcmMsIGJhc2UsIGluZGV4LCBz
Y2FsZSwgb2Zmc2V0KTsKICAgICB9CisKKyAgICB2b2lkIG1vdmJfcm0oUmVnaXN0ZXJJRCBzcmMs
IGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVy
Lm9uZUJ5dGVPcChPUF9NT1ZfRWJHYiwgc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0KICAgICAK
ICAgICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAx
NTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzYsMjQgKzc2LDI1IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMo
UHJpbnRTdHJlYW0mIG91dCwgQXIKIAogdm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlKQorICAgIGlmICghbV9sYXN0U2Vl
blN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9vYnNlcnZlZEFycmF5
TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAg
ICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVj
dHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVjdHVyZUlEKTsKKyAgICBtX29ic2VydmVk
QXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsK
ICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZwogICAgICAgICAmJiBo
YXNUd29Pck1vcmVCaXRzU2V0KG1fb2JzZXJ2ZWRBcnJheU1vZGVzKSkgewotICAgICAgICBtX29i
c2VydmVkQXJyYXlNb2RlcyA9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVj
dHVyZSk7CisgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gYXJyYXlNb2RlRnJvbVN0cnVj
dHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgICAgIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1
bmluZyA9IHRydWU7CiAgICAgfQogICAgIAogICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzIHw9Ci0gICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOworICAg
ICAgICBsYXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCk7CiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFn
bG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJl
KQotICAgICAgICAmJiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVy
ZShtX2xhc3RTZWVuU3RydWN0dXJlKSkKKyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKQorICAgICAgICAmJiAhZ2xvYmFsT2Jq
ZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkpCiAg
ICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzID0gZmFsc2U7Ci0gICAgbV9sYXN0
U2VlblN0cnVjdHVyZSA9IDA7CisgICAgbV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAog
Q1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpJ
VExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDE1OTQyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6
CiAgICAgQXJyYXlQcm9maWxlKCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0
dXJlKDApCisgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZUlEKDApCiAgICAgICAgICwgbV9t
YXlTdG9yZVRvSG9sZShmYWxzZSkKICAgICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAg
ICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQpAQCAtMTQ3LDcgKzE0
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKLSAgICAg
ICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVy
ZUlEKDApCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShmYWxzZSkKICAgICAgICAgLCBtX291
dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2Vz
KGZhbHNlKQpAQCAtMTU5LDE0ICsxNTksMTQgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAg
IAotICAgIFN0cnVjdHVyZSoqIGFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkgeyByZXR1cm4g
Jm1fbGFzdFNlZW5TdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNl
ZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBB
cnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJh
eU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAm
bV9tYXlTdG9yZVRvSG9sZTsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyBy
ZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJl
ID0gc3RydWN0dXJlOworICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUt
PmlkKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNv
bnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqKTsKQEAgLTE4OCw3ICsxODgsNyBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
MSkpOyB9CiAgICAgCiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKLSAgICBTdHJ1Y3R1
cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVj
dHVyZUlEOwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZTsgLy8gVGhpcyBmbGFnIG1heSBiZWNv
bWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBl
bmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5n
IHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGlu
ZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cg
anVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0
T2ZCb3VuZHM7CiAgICAgYm9vbCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lv
biAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY5Niw2ICs2OTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjb25zdGFudEJ1ZmZlckFzVmVjdG9yKGluZGV4KS5kYXRhKCk7CiAgICAgfQogCisgICAgSGVh
cCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcDsgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQogCiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZp
c2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBU
eXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENo
aWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAK
ICAgICBERUNMQVJFX0lORk87CiB9OwpAQCAtNTQ1LDcgKzU0NSw3IEBAIHByaXZhdGU6CiAKIHBy
b3RlY3RlZDoKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCShyZXZpc2lv
biAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgpIFwKICAgICBtYWNy
byhKU0FycmF5QnVmZmVyVmlld19tb2RlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdf
dmVjdG9yKSBcCi0gICAgbWFjcm8oSlNDZWxsX3N0cnVjdHVyZSkgXAorICAgIG1hY3JvKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fZXhlY3V0YWJsZSkgXAogICAg
IG1hY3JvKEpTRnVuY3Rpb25fc2NvcGVDaGFpbikgXAogICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRl
cmZseSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsMjMgKzEyMiwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGlmICht
X29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFTU0VSVChtX3N0cnVj
dHVyZSk7CiAgICAgICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgKLSAgICAgICAg
ICAgICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1B0cigKLSAgICAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgIGppdCwg
aml0LT5tX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBtX3N0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8g
QWxhcywgd2UgbmVlZCB0byByZWxvYWQgdGhlIHN0cnVjdHVyZSBiZWNhdXNlIHNpbGVudCBzcGls
bGluZyBkb2VzIG5vdCBzYXZlCi0gICAgICAgICAgICAvLyB0ZW1wb3Jhcmllcy4gTm9yIHdvdWxk
IGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28uIEVpdGhlciB3YXkgd2UncmUgdGFsa2luZwot
ICAgICAgICAgICAgLy8gYWJvdXQgYSBsb2FkLgotICAgICAgICAgICAgaml0LT5tX2ppdC5sb2Fk
UHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BSKTsKLSAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSBraW5kIG9m
IGFycmF5IHN0b3JhZ2UgdGhhdCB3ZSB3YW50ZWQgdG8gZ2V0LgogICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24gY2hlY2ssIHdoaWNoIHdpbGwg
cmVzdWx0IGluIHRoZSAKICAgICAgICAgICAgIC8vIGJ5dGVjb2RlIG9wZXJhdGlvbiBjb3JyZXNw
b25kaW5nIHRvIHRoaXMgYXJyYXlpZmljYXRpb24gYmVpbmcgcmVleGVjdXRlZC4KICAgICAgICAg
ICAgIC8vIFRoYXQncyBmaW5lLCBzaW5jZSBhcnJheWlmaWNhdGlvbiBpcyBub3QgdXNlci12aXNp
YmxlLgogICAgICAgICAgICAgaml0LT5tX2ppdC5sb2FkOCgKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3N0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5
cGVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BSKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBt
X3N0cnVjdHVyZUdQUik7CiAgICAgICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgK
ICAgICAgICAgICAgICAgICBqaXQsIGppdC0+anVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSht
X3N0cnVjdHVyZUdQUiwgbV9hcnJheU1vZGUpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUK
ICAgICAvLyAgIHZlcnNpb25zIG9mIHRob3NlIG5vZGVzIHRoYXQgYmFja3dhcmQtZXhpdCBpbnN0
ZWFkLCBidXQgSSdtIG5vdCBjb252aW5jZWQKICAgICAvLyAgIG9mIHRoZSBzb3VuZG5lc3MuCiAg
ICAgLy8KLSAgICAvLyAtIFNvbWUgbm9kZXMgbGllLCBhbmQgY2xhaW0gdGhhdCB0aGV5IGRvIG5v
dCByZWFkIHRoZSBKU0NlbGxfc3RydWN0dXJlLgorICAgIC8vIC0gU29tZSBub2RlcyBsaWUsIGFu
ZCBjbGFpbSB0aGF0IHRoZXkgZG8gbm90IHJlYWQgdGhlIEpTQ2VsbF9zdHJ1Y3R1cmVJRC4KICAg
ICAvLyAgIFRoZXNlIGFyZSBub2RlcyB0aGF0IHVzZSB0aGUgc3RydWN0dXJlIGluIGEgd2F5IHRo
YXQgZG9lcyBub3QgZGVwZW5kIG9uCiAgICAgLy8gICB0aGluZ3MgdGhhdCBjaGFuZ2UgdW5kZXIg
c3RydWN0dXJlIHRyYW5zaXRpb25zLgogICAgIC8vCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyAgIHNtYWxsIGhhY2tpbmcu
CiAgICAgCiAgICAgaWYgKGVkZ2VzVXNlU3RydWN0dXJlKGdyYXBoLCBub2RlKSkKLSAgICAgICAg
cmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQp
OwogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoK
QEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBDaGVja0FycmF5OgogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKICAg
ICBjYXNlIEluc3RhbmNlT2Y6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAg
ICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBjYXNlIENoZWNrRXhlY3V0YWJsZToKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIAogICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgogICAgIGNhc2UgUGhhbnRvbVB1dFN0cnVjdHVyZToKLSAgICAgICAgd3JpdGUoSlND
ZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToK
QEAgLTQ0MSw5ICs0NDEsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICByZWFkKEpT
Q2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKLSAg
ICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1
Y3R1cmVJRCk7CiAgICAgICAgIHdyaXRlKEpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAgICAgIHJl
YWQoR0NTdGF0ZSk7CiAgICAgICAgIHdyaXRlKEdDU3RhdGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTU5NDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDMsNyArMjQzLDI5IEBAIHB1YmxpYzoKICAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFr
UHRyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3RydWN0dXJlKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxl
ZnQsIFRydXN0ZWRJbW0zMih3ZWFrU3RydWN0dXJlLT5pZCgpKSk7CisgICAgICAgIGFkZFdlYWtS
ZWZlcmVuY2Uod2Vha1N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQor
ICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0LCB3ZWFrU3RydWN0dXJlKTsK
KyNlbmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgSnVtcCBicmFu
Y2hTdHJ1Y3R1cmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vs
c2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNp
Y0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKQogICAgIHsKICAgICAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxv
d2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlz
aXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNSw4ICsxMzUsOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3Qg
CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhp
dC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwogICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7
CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaDIpOwogICAgICAgICAgICAg
ICAgIG1faml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNoMik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNp
b24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw5ICsxMjgsOSBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCk7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9h
ZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihB
c3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gxLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6
OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIG1faml0
Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwogICAgICAgICAg
ICAgICAgIG1faml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRy
ZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1OTQyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4ZWNT
dGF0ZSogZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVlLCBz
dHJpY3QpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChvYmpl
Y3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMjIxLDEyICsyMjEsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UbwogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVDYXBhY2l0
eSkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25z
dHJ1Y3RUeXBlSlMpOworICAgIEFTU0VSVChqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9y
KS0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogI2VuZGlm
CiAgICAgCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGpzQ2FzdDxKU0Z1
bmN0aW9uKj4oY29uc3RydWN0b3IpLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBh
Y2l0eSktPnN0cnVjdHVyZSgpKTsKQEAgLTM5MSw4ICszOTEsOCBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGFycmF5LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCiAgICAgaWYgKGluZGV4ID49IDApIHsK
ICAgICAgICAgYXJyYXktPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgaW5kZXgsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpLCB0cnVlKTsKQEAgLTQwMCwxNCArNDAwLDE0IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbEJleW8KICAgICB9CiAgICAgCiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QodHJ1ZSk7Ci0gICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dCgKKyAg
ICBhcnJheS0+bWV0aG9kVGFibGUodm0pLT5wdXQoCiAgICAgICAgIGFycmF5LCBleGVjLCBJZGVu
dGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSks
IHNsb3QpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgaW50
MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMp
OworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwogICAgIAogICAgIGlmIChpbmRleCA+PSAwKSB7CiAgICAgICAgIGFy
cmF5LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSwgZmFsc2UpOwpAQCAtNDE1LDE0ICs0MTUsMTQgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsQmV5bwogICAgIH0KICAgICAKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChmYWxzZSk7Ci0gICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dCgKKyAgICBhcnJheS0+
bWV0aG9kVGFibGUodm0pLT5wdXQoCiAgICAgICAgIGFycmF5LCBleGVjLCBJZGVudGlmaWVyOjpm
cm9tKGV4ZWMsIGluZGV4KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHNsb3QpOwog
fQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBhcnJheSwgaW50MzJfdCBp
bmRleCwgZG91YmxlIHZhbHVlKQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAg
IAogICAgIEpTVmFsdWUganNWYWx1ZSA9IEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUs
IHZhbHVlKTsKICAgICAKQEAgLTQzMiwxNCArNDMyLDE0IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXREb3VibGVCeVYKICAgICB9CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QodHJ1ZSk7Ci0gICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPnB1dCgKKyAgICBhcnJheS0+bWV0
aG9kVGFibGUodm0pLT5wdXQoCiAgICAgICAgIGFycmF5LCBleGVjLCBJZGVudGlmaWVyOjpmcm9t
KGV4ZWMsIGluZGV4KSwganNWYWx1ZSwgc2xvdCk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGFycmF5LCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpCiB7
Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCiAgICAgSlNWYWx1ZSBqc1ZhbHVl
ID0gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdmFsdWUpOwogICAgIApAQCAtNDQ5
LDcgKzQ0OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVYKICAg
ICB9CiAgICAgCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZmFsc2UpOwotICAgIGFycmF5LT5t
ZXRob2RUYWJsZSgpLT5wdXQoCisgICAgYXJyYXktPm1ldGhvZFRhYmxlKHZtKS0+cHV0KAogICAg
ICAgICBhcnJheSwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCksIGpzVmFsdWUs
IHNsb3QpOwogfQogCkBAIC04NDksNyArODQ5LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVy
YXRpb25SZWFsbG9jYXRlQgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCi0gICAgQVNTRVJUKCFvYmplY3QtPnN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICBBU1NFUlQoIW9iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBvYmplY3QtPmdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCAwLCBpbml0aWFsT3V0T2ZMaW5lQ2Fw
YWNpdHkpOwogICAgIG9iamVjdC0+c2V0QnV0dGVyZmx5V2l0aG91dENoYW5naW5nU3RydWN0dXJl
KHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdCk7CkBA
IC04NjAsNyArODYwLDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRl
QgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOwogCi0gICAgQnV0dGVyZmx5KiByZXN1bHQgPSBvYmplY3QtPmdyb3dP
dXRPZkxpbmVTdG9yYWdlKHZtLCBvYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0
eSgpLCBuZXdTaXplKTsKKyAgICBCdXR0ZXJmbHkqIHJlc3VsdCA9IG9iamVjdC0+Z3Jvd091dE9m
TGluZVN0b3JhZ2Uodm0sIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgbmV3U2l6ZSk7CiAgICAgb2JqZWN0LT5zZXRCdXR0ZXJmbHlXaXRob3V0Q2hhbmdpbmdTdHJ1
Y3R1cmUocmVzdWx0KTsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVzdWx0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjc1LDcgKzI3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25a
ZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBU
cnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAt
MzQwLDcgKzM0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBy
ZXN1bHRHUFIpOwogICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIGlu
dmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogICAgCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwpAQCAtMTE2MSwxOCArMTE2MSwx
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogCi0gICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IApAQCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dEVxdWFsaQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7
CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAg
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMjM4LDEwICsxMjM4LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLApAQCAtMTI2
NiwxMCArMTI2NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmpl
CiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdo
dENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xMzQ1
LDEwICsxMzQ1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTEzNzIsMTAgKzEzNzIsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
b3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9
IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQ
YXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTQ5MCwxMCArMTQ5MCwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKIAog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CkBAIC0xNjIwLDEwICsxNjIwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RP
ck90aGVyQnIKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
CiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwg
bm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LApAQCAtMzE1NCw3ICszMTU0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9q
aXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5
UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxVGFnR1BS
LCByZXN1bHRUYWdHUFIpOwpAQCAtMzE4Nyw3ICszMTg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQ
dHIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAg
ICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRH
UFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0zNTU0LDcgKzM1
NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRoaXNWYWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0aGlzVmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlz
VmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCB0ZW1wR1BSKTsK
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBAIC0zODU2LDEy
ICszODU2LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBCYWRDYWNoZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5n
cHIoKSksIDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKICAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+
c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAgCkBAIC0zODkyLDcgKzM4OTIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPSyA9IG1faml0
LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5n
cHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+c3Ry
dWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5j
aFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1
cmUoKSkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlzT0subGluaygm
bV9qaXQpOwogI2Vsc2UKQEAgLTM5MjEsNyArMzkyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIG5vZGUt
PnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLCBXcml0ZUJhcnJpZXJGb3JH
ZW5lcmljQWNjZXNzKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRh
dGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3
U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAg
ICAgICAgYnJlYWs7CkBAIC00MTAxLDcgKzQxMDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7
CiAKICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZScuCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7
CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQu
YnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7
CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MTMwLDcgKzQxMzAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQu
Z3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTQxNzQsNyArNDE3NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
dmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0Lmdwcigp
KTsKICAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIApAQCAtNDIyOCw3ICs0
MjI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+
Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBH
UFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhwYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQogICAgICAgICAg
ICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAx
NTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsMTIgKzI3MywxNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3Rl
R2xvYmFsT2JqZWN0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsK
IAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAg
IG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGFy
Z0dQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7Cisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0
LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSk7CiAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVzdGVk
SW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdEdQUik7CiAgICAgICAgIG5vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CkBAIC0yODcsNiArMjkwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKICAg
ICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihvcGVyYW5kLT5jb2RlT3JpZ2luKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIs
IHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUds
b2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoaW52ZXJ0ID8gSklUQ29t
cGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQ
UiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwogICAgIH0KQEAgLTMzNywxNiAr
MzQxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICB9
IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3Bl
cmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoVGVz
dDgoSklUQ29tcGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKKyAg
ICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSwgCisgICAgICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKIAogICAgICAg
ICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG9wZXJhbmQtPmNvZGVPcmlnaW4pKSwgbG9jYWxHbG9iYWxPYmplY3RH
UFIpOworICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwg
c2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9j
YWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFr
ZW4gOiB0YWtlbik7CiAgICAgfQpAQCAtMTUyMCw0MSArMTUyOCwzNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAgICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBERkdfVFlQRV9DSEVD
SygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlKHRoaXMpOwotICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigp
OwotCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCks
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BS
KSwgbm9kZS0+Y2hpbGQxKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAK
LSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiks
IG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0K
ICAgICAKQEAgLTE1NzcsMzcgKzE1ODAsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgR1BSUmVn
IG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmU7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9
IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBv
aW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3Rp
bGxWYWxpZCgpOwogCi0gICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZh
bGlkKSB7Ci0gICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxs
IHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgotICAgICAg
ICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGlu
ZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgotICAgICAgICBHUFJUZW1wb3JhcnkgcmVh
bFN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUp
OwotICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQotCiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTYxOSwyMSArMTYxMSwyMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgLy8gV2Uga25vdyB0aGF0
IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYg
KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmln
aHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhv
cDJHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwog
ICAgIH0KICAgICAKQEAgLTE2ODAsMzcgKzE2NzEsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAg
R1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmU7Ci0gICAgR1BSUmVnIHN0cnVjdHVy
ZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAgCi0gICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkID0KKyAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50VmFsaWQgPSAKICAgICAgICAgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJ
c1N0aWxsVmFsaWQoKTsKIAotICAgIGlmICghbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRWYWxpZCkgewotICAgICAgICAvLyBUaGUgbWFzcXVlcmFkZXMgYXMgdW5kZWZpbmVkIGNhc2Ug
d2lsbCB1c2UgdGhlIHN0cnVjdHVyZSByZWdpc3Rlciwgc28gYWxsb2NhdGUgaXQgaGVyZS4KLSAg
ICAgICAgLy8gRG8gdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiB0byBhdm9pZCBicmFu
Y2hpbmcgYXJvdW5kIGEgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KLSAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlYWxTdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0
dXJlKTsKLSAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIH0KLQog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAg
IERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogCkBAIC0xNzIyLDIxICsxNzAyLDIwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAvLyBXZSBrbm93IHRo
YXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkp
OwogICAgIH0KICAgICAKQEAgLTE4NTMsNiArMTgzMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9
IEludmFsaWRHUFJSZWc7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2g7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwogCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkID0KICAgICAgICAgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRJc1N0aWxsVmFsaWQoKTsKQEAgLTE4NjEsMzIgKzE4NDIsMzQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAvLyBUaGUgbWFzcXVlcmFkZXMg
YXMgdW5kZWZpbmVkIGNhc2Ugd2lsbCB1c2UgdGhlIHN0cnVjdHVyZSByZWdpc3Rlciwgc28gYWxs
b2NhdGUgaXQgaGVyZS4KICAgICAgICAgLy8gRG8gdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBmdW5j
dGlvbiB0byBhdm9pZCBicmFuY2hpbmcgYXJvdW5kIGEgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSByZWFsU2NyYXRjaCh0aGlzKTsKICAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1
Y3R1cmUpOworICAgICAgICBzY3JhdGNoLmFkb3B0KHJlYWxTY3JhdGNoKTsKICAgICAgICAgc3Ry
dWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOworICAgICAgICBzY3JhdGNoR1BSID0gc2NyYXRj
aC5ncHIoKTsKICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2Us
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotCiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSh2YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsIAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgCkBAIC0yMDA1LDMxICsxOTg4LDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRP
YmplY3RPck90aGVyQnIKIHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlVXNl
LCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIHZhbHVlR1BSID0g
dmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOworICAg
IEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOworCisgICAgaWYgKCFtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOworICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVh
bFN0cnVjdHVyZSk7CisgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAg
ICB9CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5j
aFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNT
dGlsbFZhbGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNl
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKLSAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVz
dDgoSklUQ29tcGlsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6WmVybywgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLAog
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2Ny
YXRjaEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPmNv
ZGVPcmlnaW4pKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5r
KCZtX2ppdCk7CkBAIC0zNDc0LDcgKzM0NjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQ
Uik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxy
ZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRpdmUubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CkBAIC0zNTAxLDEwICszNDk3
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewogICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9IG1faml0LmJyYW5jaFRl
c3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIG9wMUdQUiwg
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
Ci0gICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgICAgICBkb25lID0gbV9q
aXQuanVtcCgpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRoMS5saW5rKCZtX2ppdCk7CkBAIC0z
NzIzLDcgKzM3MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdlKHJlc3VsdEdQUiwgc3Rv
cmFnZUdQUikpOwogICAgICAgICAgICAgbV9qaXQuc3ViUHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VH
UFIpOwogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGlu
Z1R5cGUoKSk7Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1
bHRHUFIsIEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNo
MkdQUiwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJy
YXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
R1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwg
QnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CkBAIC0zODYxLDExICszODU3LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCB0aGlzVmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICBtX2pp
dC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwK
ICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgICAgIG1f
aml0Lm1vdmUodGhpc1ZhbHVlR1BSLCB0ZW1wR1BSKTsKICAgICAgICAgSl9KSVRPcGVyYXRpb25f
RUogZnVuY3Rpb247CkBAIC00MTUwLDI0ICs0MTQ0LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKG5vZGUtPnN0cnVjdHVyZVNldCgpLnNp
emUoKSA9PSAxKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAg
ICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwgMCwK
LSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAorICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUu
Z3ByKCkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
ZG9uZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgLSAxOyArK2kpCi0gICAgICAgICAgICAgICAgZG9u
ZS5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVy
ZS5ncHIoKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKTsKKyAgICAgICAgICAgICAgICBkb25l
LmFwcGVuZChtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKEpJVENvbXBpbGVyOjpFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBleGl0S2luZCwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAsCi0gICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoV2Vha1B0cigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpOworICAgICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCisgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbm9kZS0+c3RydWN0dXJlU2V0KCkubGFz
dCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAg
ICAgICB9CkBAIC00MTg4LDcgKzQxNzgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc09LID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1
cmUoKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgaXNPSy5saW5rKCZt
X2ppdCk7CiAjZWxzZQpAQCAtNDIxMCw3ICs0MjAzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNvbW1vbi5ub3Rp
ZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9wbGFuLCBtX2pp
dC5jb2RlQmxvY2soKSwgbm9kZSk7CiAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRo
aXMpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIAogI2lmIEVO
QUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKQEAgLTQyMTgsNyArNDIxMyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgd3JpdGVCYXJyaWVy
KGJhc2VHUFIsIG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlLCBX
cml0ZUJhcnJpZXJGb3JHZW5lcmljQWNjZXNzKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAg
bV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIG1faml0LmVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIGJhc2VHUFIs
IHNjcmF0Y2hHUFIpOyAKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTQzNzksOCArNDM3NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAK
ICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZScuCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwLCBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAgICAg
bm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDQwOCw4ICs0NDA1LDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNo
VGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5n
cHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTQ0
NTYsOCArNDQ1NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHZhbHVlLmdwcigpLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
c3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgCisgICAgICAgICAg
ICByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC00NDk2LDggKzQ0OTcsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRT
cGVjdWxhdGlvbik7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwotICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOwogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExp
c3QgZG9uZUp1bXBzOwpAQCAtNDUxMSw4ICs0NTEwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVT
b3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAK
ICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
U3RyaW5nID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
U3RyaW5nID0gbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90
RXF1YWwsIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZElt
bTMyKFN0cmluZ1R5cGUpKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gU3RyaW5nVXNlKQogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVT
b3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5nKTsK
ICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0
cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE1OTQyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NjgsOSArNzY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tB
cnJheShOb2RlKiBubwogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6IHsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0g
dGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQ
UiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICBt
X2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAg
ICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCAwLAogICAgICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0ZW1w
R1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwpAQCAtNzc5LDE4ICs3NzcsMjkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBB
cmd1bWVudHM6OmluZm8oKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAgbm9S
ZXN1bHQobV9jdXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0OgotICAg
ICAgICBleHBlY3RlZENsYXNzSW5mbyA9IGNsYXNzSW5mb0ZvclR5cGUobm9kZS0+YXJyYXlNb2Rl
KCkudHlwZWRBcnJheVR5cGUoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUobm9kZS0+
YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpKSk7CisgICAgICAgIG5vUmVzdWx0KG1fY3Vy
cmVudE5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0VfQVNT
RVJUKGV4cGVjdGVkQ2xhc3NJbmZvKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKLSAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIoKSk7CisgICAgR1BS
VGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGJhc2VS
ZWcsIHRlbXAuZ3ByKCksIHRlbXAyLmdwcigpKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAg
ICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZSwK
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtODIwLDE2ICs4MjksMTMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZQogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93UGF0aDsKICAgICAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3Ry
dWN0dXJlKSB7Ci0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRyKAor
ICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwKICAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgICAg
ICAKICAgICAgICAgbV9qaXQubG9hZDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgCiAgICAgICAgIHNs
b3dQYXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUt
PmFycmF5TW9kZSgpKSk7CiAgICAgfQpAQCAtMTM1OCwyNCArMTM2NCwyNSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKLSAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKLSAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAog
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwog
ICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogCi0gICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUob3AxR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgICAgICBpZiAo
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKQEAgLTEz
OTAsNyArMTM5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCi0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExv
YWRTdHJ1Y3R1cmUob3AyR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgICAgICBp
ZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkg
ewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKQEAg
LTI3ODgsMTggKzI3OTUsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
Rm9yRgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJv
dG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90
b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAg
Ly8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChzY3JhdGNoUmVnKSk7CisgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJ
ZkNlbGxOb3RPYmplY3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBz
Y3JhdGNoUmVnIHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2
YWx1ZVJlZywgc2NyYXRjaFJlZyk7CiAgICAgCiAgICAgLy8gV2FsayB1cCB0aGUgcHJvdG90eXBl
IGNoYWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmluZyB0byBwcm90b3R5
cGVSZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0KTsKLSAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZShzY3JhdGNoUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywg
U3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yODM4LDkgKzI4NDQsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBKU1ZhbHVl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhp
cyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdw
cigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAg
IEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKQEAgLTI4
NTcsNyArMjg2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4K
ICAgICAgICAgCiAgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIAotICAgICAg
ICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVn
LCBzY3JhdGNoUmVnKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwg
dmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgICAg
ICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTI4NzMsMTIgKzI4ODEsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMp
OwogICAgIAogICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBw
cm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBz
Y3JhdGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwog
ICAgIAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90
b3R5cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5v
ZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVnLCBub2RlLCBE
YXRhRm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ1OTQsMTEgKzQ2MDQsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAg
ICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwg
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKTsKICAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0
cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgc3BlY3VsYXRlU3Ry
aW5nT2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCAKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7
CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNXcmFwcGVyT2JqZWN0OjppbnRlcm5hbFZhbHVlQ2VsbE9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgCkBAIC00NjIzLDEwICs0NjM1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5w
cmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBuZWVkQ2FsbCA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAg
IFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAg
ICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBuZWVkQ2FsbC5saW5r
KCZtX2ppdCk7CkBAIC00ODI3LDEwICs0ODM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdChFZGcKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMs
IGVkZ2UpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwogICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlRmluYWxPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDgzOSwxNCArNDg1MSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjCiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwotICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7
Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNGaW5hbE9iamVjdCwgbV9qaXQu
YnJhbmNoOCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhn
cHIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZElt
bTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKIH0KIApAQCAtNDg2MywxMCArNDg3MiwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3By
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRz
VHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAtNDg4NiwxMCArNDg5
NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9CiAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBh
eWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgKH5TcGVj
Q2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChu
ZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsKQEAgLTQ5MDksMTAg
KzQ5MTgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRnZSwgR1BSUmVnIGNlbGwp
CiB7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nLCBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRMb2FkU3RvcmFnZShF
ZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcsIEdQUlJlZyBzdG9yYWdlKQpAQCAtNDk2NSw3ICs0OTc0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKEVkZwogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdlLCBHUFJSZWcgZ3By
KQogewotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBzcGVj
dWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Z3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTQ5OTIsMTUgKzUwMDEs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdAogICAgIGlmICgh
bmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY1N0cmluZyB8IFNwZWNTdHJpbmdPYmplY3QpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKLSAg
ICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIAotICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmlu
ZyA9IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1
cmVHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQ
dHIoCisgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwgCisgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgCi0gICAgc3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIHN0cnVjdHVyZUdQUik7CisgICAgc3BlY3VsYXRlU3Ry
aW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgCiAgICAgaXNTdHJpbmcubGluaygmbV9q
aXQpOwogICAgIApAQCAtNTI2NSwxMCArNTI3MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoQ2hhcihOb2RlCiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5jaCgK
LSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
LAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAgICBkYXRhLT5mYWxs
VGhyb3VnaCk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoZGF0
YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBHUFIpOwpAQCAtNTU2NSwxMCArNTU3MSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5vCiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIGFkZEJyYW5jaCgKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSks
CiAgICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgIAogICAgICAgICBlbWl0
U3dpdGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MjIsNyArNzIyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZh
bHNlKTsKICAgICBib29sIG5vblNwZWN1bGF0aXZlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0
ID0gZmFsc2UpOwogICAgIAotICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9k
ZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hB
bmRSZXN1bHRSZWcpOworICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSos
IEdQUlJlZyB2YWx1ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hBbmRS
ZXN1bHRSZWcsIEdQUlJlZyBzY3JhdGNoMlJlZyk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VP
ZihOb2RlKik7CiAgICAgCiAgICAgcHRyZGlmZl90IGNhbGxlZUZyYW1lT2Zmc2V0KGludCBudW1B
cmdzKQpAQCAtMjA2OSw3ICsyMDY5LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHNsb3dQYXRoOwogICAgIH0KLSAgICAKKwogICAgIC8vIEFsbG9jYXRvciBmb3IgYSBjZWxs
IG9mIGEgc3BlY2lmaWMgc2l6ZS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0dXJlVHlw
ZT4gLy8gU3RydWN0dXJlVHlwZSBjYW4gYmUgR1BSIG9yIEltbVB0ci4KICAgICB2b2lkIGVtaXRB
bGxvY2F0ZUpTQ2VsbChHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1
Y3R1cmVUeXBlIHN0cnVjdHVyZSwKQEAgLTIwODQsNyArMjA4NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxs
b2NhdG9yR1BSLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAog
ICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBvYmplY3QncyBTdHJ1Y3R1cmUuCi0gICAgICAgIG1f
aml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZVN0
cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CiAg
ICAgfQogCiAgICAgLy8gQWxsb2NhdG9yIGZvciBhbiBvYmplY3Qgb2YgYSBzcGVjaWZpYyBzaXpl
LgpAQCAtMzAyNSw4ICszMDI1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3Ry
aW5nT2JqZQogICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1fY3VycmVudEtub3duU3Ry
dWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKSB7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBOb3RTdHJpbmdPYmplY3Qs
IEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgVHJ1c3Rl
ZEltbVB0cihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBz
dHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24g
MTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisj
aW5jbHVkZSAiQVBJU2hpbXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
ZWZlckdDLmgiCiAjaW5jbHVkZSAiREZHTG9uZ0xpdmVkU3RhdGUuaCIKQEAgLTIzNyw4ICsyMzgs
MTAgQEAgdm9pZCBXb3JrbGlzdDo6cnVuVGhyZWFkKCkKICAgICAgICAgCiAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKQogICAgICAgICAgICAgZGF0YUxvZygq
dGhpcywgIjogQ29tcGlsaW5nICIsIHBsYW4tPmtleSgpLCAiIGFzeW5jaHJvbm91c2x5XG4iKTsK
LSAgICAgICAgCisKKyAgICAgICAgVk06OnNldEN1cnJlbnRWTSgmcGxhbi0+dm0pOwogICAgICAg
ICBwbGFuLT5jb21waWxlSW5UaHJlYWQobG9uZ0xpdmVkU3RhdGUpOworICAgICAgICBWTTo6c2V0
Q3VycmVudFZNKDApOwogICAgICAgICAKICAgICAgICAgewogICAgICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTU5NDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbW9k
ZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSBcCiAgICAgbWFjcm8oSlNBcnJh
eUJ1ZmZlclZpZXdfdmVjdG9yLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkg
XAotICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmUsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
IFwKKyAgICBtYWNybyhKU0NlbGxfc3RydWN0dXJlSUQsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb1R5cGUsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfaW5kZXhpbmdUeXBlLCBK
U0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVy
Zmx5LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Njb3BlX25l
eHQsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSBcCiAgICAgbWFjcm8oSlNTdHJpbmdfbGVuZ3Ro
LCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTI3LDEyICsxMTI3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGV4aXRLaW5kID0gQmFkQ2FjaGU7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUg
c3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUp
OworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+c3Ry
dWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAg
ICAgICAgICAgICBleGl0S2luZCwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAotICAgICAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKVswXSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJ
RCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTE0MiwxNCArMTE0MiwxNCBAQCBw
cml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRT
dHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkNoZWNrU3RydWN0dXJlIG5leHRTdHJ1
Y3R1cmUiKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9v
dXQuZXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ld
KSksCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1
cmUobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSkpLAogICAgICAgICAgICAgICAgIGNvbnRpbnVh
dGlvbiwgbmV4dFN0cnVjdHVyZSk7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3Ry
dWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAg
ICAgICAgZXhpdEtpbmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0
Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5s
YXN0KCkpKSk7CisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0
cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpKTsKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTc4LDEwICsxMTc4LDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIExCYXNpY0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIkFycmF5aWZ5VG9TdHJ1Y3R1cmUgdW5leHBlY3RlZCBzdHJ1Y3R1cmUiKSk7CiAgICAg
ICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJy
YXlpZnlUb1N0cnVjdHVyZSBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAotICAgICAgICBMVmFs
dWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmUpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9o
ZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25v
ZGUtPnN0cnVjdHVyZSgpKSksCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJ
RCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZSgpKSksCiAgICAgICAgICAgICB1bmV4
cGVjdGVkU3RydWN0dXJlLCBjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyh1bmV4cGVjdGVkU3RydWN0dXJlLCBjb250
aW51YXRpb24pOwpAQCAtMTIyMiwxMCArMTIyMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RydWN0dXJlID0gbV9vdXQubG9h
ZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAgICAgICBzcGVjdWxhdGUo
CiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAg
ICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5z
dHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKG1fb3V0LmxvYWQzMihj
ZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5z
dHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAg
ICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0x
MjM1LDkgKzEyMzQsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRD
b2RlLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2dyYXBoLm1f
cGxhbiwgY29kZUJsb2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9y
ZTY0KAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5zdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksCi0gICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICBtX291dC5zdG9y
ZTMyKAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhKCkubmV3U3RydWN0dXJlLT5pZCgpKSwKKyAgICAgICAgICAgIGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlUGhhbnRvbVB1dFN0cnVjdHVyZSgpCkBAIC0yNzU5LDggKzI3NTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAg
ICAganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAog
ICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkUHRyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1
Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTI3NzEsMTggKzI3NzAsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIG1hc3F1ZXJhZGVzQ2FzZSA9CiAgICAgICAgICAgICAgICAgRlRMX05FV19CTE9DSyht
X291dCwgKCJFcXVhbE51bGxPclVuZGVmaW5lZCBtYXNxdWVyYWRlcyBjYXNlIikpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIo
dmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2UpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAgICAgIG1f
b3V0LnRlc3ROb25aZXJvOCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoc3RydWN0
dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDgodmFsdWUsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAogICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
LAogICAgICAgICAgICAgICAgIG1hc3F1ZXJhZGVzQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFzcXVlcmFkZXNDYXNlLCBwcmlt
aXRpdmVDYXNlKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9
IGxvYWRTdHJ1Y3R1cmUodmFsdWUpOworICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRz
LmFwcGVuZChtX291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCiAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+Y29kZU9yaWdpbikpLApAQCAtMzUzOSw4ICszNTM4LDggQEAgcHJpdmF0ZToKICAg
ICBMVmFsdWUgaXNPYmplY3QoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9v
dXQubm90RXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0o
KS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90
U3RyaW5nKExWYWx1ZSBjZWxsKQpAQCAtMzU1MSw4ICszNTUwLDggQEAgcHJpdmF0ZToKICAgICBM
VmFsdWUgaXNTdHJpbmcoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQu
ZXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90T2JqZWN0
KExWYWx1ZSBjZWxsKQpAQCAtMzU2Niw5ICszNTY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czogewotICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9
IG1fb3V0LmxvYWQ4KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9p
bmRleGluZ1R5cGUpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0Lmxv
YWQ4KGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6T3JpZ2luYWxBcnJheToKQEAgLTM2MDQsNyArMzYwMSw3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5s
b2FkUHRyKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICBsb2FkU3RydWN0dXJlKGNlbGwpLAogICAg
ICAgICAgICAgICAgIG1faGVhcHMuU3RydWN0dXJlX2NsYXNzSW5mbyksCiAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cihjbGFzc0luZm8pKTsKICAgICB9CkBAIC0zNjUxLDggKzM2NDgsOCBA
QCBwcml2YXRlOgogICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVW
YWx1ZSh2YWx1ZSksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAg
IG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodmFsdWUsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
dm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkBAIC0zNjkyLDE3
ICszNjg5LDE4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVOb25OdWxsT2Jq
ZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAg
ICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRn
ZSwgU3BlY09iamVjdCwgCi0gICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0
LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
bV9vdXQuZXF1YWwoCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZt
KCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVW
YWx1ZShjZWxsKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICBtX291dC50ZXN0Tm9uWmVybzgo
Ci0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVy
ZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkOChjZWxsLCBtX2hl
YXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dDgoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC00MTM3LDEyICs0
MTM1LDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLm1fcGxhbi53ZWFrUmVm
ZXJlbmNlcy5hZGRMYXppbHkodGFyZ2V0KTsKICAgICB9Ci0gICAgCisKKyAgICBMVmFsdWUgbG9h
ZFN0cnVjdHVyZShMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBMVmFsdWUgdGFibGVJbmRl
eCA9IG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAg
ICAgICBMVmFsdWUgdGFibGVCYXNlID0gbV9vdXQuZ2V0KG1fb3V0LmNvbnN0SW50UHRyKHZtKCku
aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpKSk7CisgICAgICAgIHJldHVybiBtX291dC5n
ZXQobV9vdXQuYmFzZUluZGV4KHRhYmxlQmFzZSwgdGFibGVJbmRleCwgU2NhbGVFaWdodCkpOwor
ICAgIH0KKwogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50ZXIpCiAgICAgewog
ICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHBvaW50ZXIpOwogICAgICAgICByZXR1cm4gbV9vdXQu
Y29uc3RJbnRQdHIocG9pbnRlcik7CiAgICAgfQorCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0
cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQo
KSk7CisgICAgfQogICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBiYXNl
LCBpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw5ICs5Miw5IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKAogICAgICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gQmFkQ2FjaGUgfHwgZXhpdC5tX2tp
bmQgPT0gQmFkSW5kZXhpbmdUeXBlKSB7CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgICAgICAgICAgaWYgKEFy
cmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVP
cmlnaW4pLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotICAg
ICAgICAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86
OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAg
ICAgICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMSwgYXJyYXlQcm9maWxlLT5h
ZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBqaXQu
c3RvcmVQdHIoR1BSSW5mbzo6cmVnVDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBH
UFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAgIGppdC5s
c2hpZnQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAg
IGppdC5vcjMyKEdQUkluZm86OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTU5NDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICNkZWZpbmUgQVNTRVJU
X0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBSRUxFQVNFX0FTU0VSVChj
ZWxsKTtcCi0gICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+
dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51
bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpKTsgXAorICAgIFJF
TEVBU0VfQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSA9PSBjZWxsLT5zdHJ1
Y3R1cmUoKS0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3aGlsZSAoMCkKIAogI2Rl
ZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7XApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkLmNwcAkocmV2aXNpb24gMTU5
NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgR0NUaHJlYWQ6OmdjVGhyZWFkTWFpbigpCiAg
ICAgR0NQaGFzZSBjdXJyZW50UGhhc2U7CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQogICAgIFdU
Rjo6cmVnaXN0ZXJHQ1RocmVhZCgpOworICAgIFZNOjpzZXRDdXJyZW50Vk0obV9zaGFyZWQubV92
bSk7CiAjZW5kaWYKICAgICAvLyBXYWl0IGZvciB0aGUgbWFpbiB0aHJlYWQgdG8gZmluaXNoIGNy
ZWF0aW5nIGFuZCBpbml0aWFsaXppbmcgdXMuIFRoZSBtYWluIHRocmVhZCBncmFicyB0aGlzIGxv
Y2sgYmVmb3JlIAogICAgIC8vIGNyZWF0aW5nIHRoaXMgdGhyZWFkLiBXZSBhcmVuJ3QgZ3VhcmFu
dGVlZCB0byBoYXZlIGEgdmFsaWQgdGhyZWFkSUQgdW50aWwgdGhlIG1haW4gdGhyZWFkIHJlbGVh
c2VzIHRoaXMgbG9jay4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzcxLDYgKzc3MSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRv
Z2dsZSBzd2VlcFRvZ2cKIAogICAgIHsKICAgICAgICAgR0NQSEFTRShTdG9wQWxsb2NhdGlvbik7
CisgICAgICAgIG1fc3RydWN0dXJlSURUYWJsZS5mbHVzaE9sZFRhYmxlcygpOwogICAgICAgICBt
X29iamVjdFNwYWNlLnN0b3BBbGxvY2F0aW5nKCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJXZWFrSGFu
ZGxlT3duZXIuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CkBAIC0xODYsNiArMTg3LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiAhIW1f
ZGVmZXJyYWxEZXB0aDsgfQogCisgICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRv
cigpOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxlJiBzdHJ1Y3R1cmVJRFRhYmxlKCkgeyByZXR1
cm4gbV9zdHJ1Y3R1cmVJRFRhYmxlOyB9CisKICNpZiBVU0UoQ0YpCiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHZvaWQgcmVsZWFzZVNvb24oUmV0YWluUHRyPFQ+JiYpOwogI2VuZGlmCkBA
IC0yNDAsNyArMjQ0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0
ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNTdGFjayYgc3RhY2soKTsKLSAgICAgICAgQmxvY2tB
bGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CiAgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGluY3JlbWVudERlZmVycmFsRGVwdGgoKTsKICAgICAgICAgdm9pZCBkZWNy
ZW1lbnREZWZlcnJhbERlcHRoKCk7CkBAIC0yNjAsNiArMjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBIZWFwT3BlcmF0aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsK
ICAgICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9ja0FsbG9jYXRvcjsKKyAgICAgICAgU3RydWN0
dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7CiAgICAgICAgIE1hcmtlZFNwYWNlIG1fb2Jq
ZWN0U3BhY2U7CiAgICAgICAgIENvcGllZFNwYWNlIG1fc3RvcmFnZVNwYWNlOwogICAgICAgICBH
Q0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDE1OTQy
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMSwyMCArMjMxLDIyIEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxs
b2NhdGVXaXRoTm8KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytp
KSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKICAgICAg
ICAgbV9ub3JtYWxTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7Ci0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ld
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0g
ICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQogICAgICAg
ICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3Jz
W2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKLSAgICB9Ci0KICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9j
ayhmdW5jdG9yKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyAr
K2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ld
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJl
Y2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1fbm9ybWFsRGVzdHJ1
Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1faW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7
ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKIAogICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE1OTQyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMSw5ICsyMTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwYXlsb2FkRm9y
KHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwogICAgIH0KIAotICAgIEp1
bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykKKyAgICBKdW1wIGJyYW5j
aElmQ2VsbE5vdE9iamVjdChHUFJSZWcgY2VsbFJlZykKICAgICB7Ci0gICAgICAgIHJldHVybiBi
cmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CisgICAgICAgIHJldHVybiBi
cmFuY2g4KEJlbG93LCBBZGRyZXNzKGNlbGxSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBHUFJS
ZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BS
UmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlk
R1BSUmVnLCBHUFJSZWcgcHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykKQEAgLTQ2Myw2ICs0NjMs
ODEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdU
aGlzKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAgICB9CiAKKyAgICB2b2lkIGVtaXRM
b2FkU3RydWN0dXJlKFJlZ2lzdGVySUQgc291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVy
SUQgc2NyYXRjaCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgZGVzdCk7CisgICAgICAgIGxvYWRQdHIodm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
YmFzZSgpLCBzY3JhdGNoKTsKKyAgICAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHNjcmF0Y2gsIGRlc3QsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdCk7Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVtaXRMb2FkU3RydWN0
dXJlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVz
dCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAg
ICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIGRlc3QpOworICAgICAgICBqaXQubG9hZFB0cihqaXQudm0oKS0+aGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBzY3JhdGNoKTsKKyAgICAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNoLCBkZXN0LCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNFaWdodCksIGRlc3QpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0
Y2gpOworICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAg
IHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0
dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQpCisgICAgeworICAgICAgICBlbWl0U3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oKnRoaXMsIHN0cnVjdHVyZSwgZGVzdCk7CisgICAgfQor
CisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0ZXJJRCBzdHJ1
Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
dWN0dXJlLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAg
ICAgc3RvcmU2NChzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNlCisgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUg
aW5mbyBmbGFncyB1c2luZyBhIHNpbmdsZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KKyAg
ICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJl
OjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICBzdG9yZTMyKHNjcmF0
Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgU3RydWN0dXJlSUQKKyAgICAgICAgc3Rv
cmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3Rl
ZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0
IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4o
c3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHVpbnQ2NF90
IGJsb2JUb1N0b3JlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3QqPihyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJ1Y3R1cmVQdHIpICsgU3RydWN0dXJlOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKTsKKyAgICAgICAgaml0LnN0b3JlNjQoVHJ1c3RlZEltbTY0KGJsb2JUb1N0
b3JlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIEp1bXAgY29ycmVjdFN0cnVjdHVy
ZSA9IGppdC5icmFuY2gzMihFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aWQo
KSkpOworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgICAgICBjb3JyZWN0U3RydWN0dXJl
LmxpbmsoJmppdCk7CisKKyAgICAgICAgSnVtcCBjb3JyZWN0SW5kZXhpbmdUeXBlID0gaml0LmJy
YW5jaDgoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOworICAgICAgICBjb3JyZWN0SW5kZXhpbmdU
eXBlLmxpbmsoJmppdCk7CisKKyAgICAgICAgSnVtcCBjb3JyZWN0VHlwZSA9IGppdC5icmFuY2g4
KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS50eXBlKCkp
KTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdFR5cGUubGluaygm
aml0KTsKKworICAgICAgICBKdW1wIGNvcnJlY3RGbGFncyA9IGppdC5icmFuY2g4KEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCkpKTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdEZsYWdzLmxp
bmsoJmppdCk7CisjZW5kaWYKKyNlbHNlCisgICAgICAgIC8vIERvIGEgMzItYml0IHdpZGUgc3Rv
cmUgdG8gaW5pdGlhbGl6ZSB0aGUgY2VsbCdzIGZpZWxkcy4KKyAgICAgICAgaml0LnN0b3JlMzIo
VHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+b2JqZWN0SW5pdGlhbGl6YXRpb25GaWVsZHMoKSks
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpKTsKKyAgICAgICAgaml0LnN0b3JlUHRyKHN0cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9
CisKICAgICB2b2lkIHdyaXRlQmFycmllcihHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwg
R1BSUmVnIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJVc2VLaW5kIHVzZUtpbmQpCiAgICAgewogICAg
ICAgICBVTlVTRURfUEFSQU0ob3duZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShy
ZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVl
KTsKICAgICAgICAgdm9pZCBlbWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lz
dGVySUQgdmFsdWUpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RPYmplY3QoUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmVSZWcpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KFJl
Z2lzdGVySUQgY2VsbFJlZyk7CiAKICAgICAgICAgSnVtcCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9u
Q2hlY2soSlNDZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklE
IHNjcmF0Y2gpOwogICAgICAgICB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0Nl
bGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CkBAIC0zMzAsOCArMzMwLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh1bnNpZ25lZCwgUmVnaXN0
ZXJJRCkgeyB9CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShSZWdpc3RlcklE
KSB7IH0KICNlbmRpZgotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0
ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQ
cm9maWxlKik7Ci0gICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2Rl
SW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2Ny
YXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7CisgICAgICAgIHZvaWQgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNl
bGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9s
ZVNwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSopOwogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2Zp
bGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSopOwogICAgICAgICAKQEAgLTM3
MSw2ICszNzEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBlbnVtIEZp
bmFsT2JqZWN0TW9kZSB7IE1heUJlRmluYWwsIEtub3duTm90RmluYWwgfTsKIAorLyoKKyAgICAg
ICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1
cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyAgICAgICAgdm9pZCBl
bWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJl
Z2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKKyovCisgICAgICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBKdW1wIGJyYW5jaFN0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uLCBU
IGxlZnRIYW5kU2lkZSwgU3RydWN0dXJlKik7CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgICBib29sIGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3Ay
LCBpbnQmIG9wLCBpbnQzMl90JiBjb25zdGFudCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
OCArNzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAKICAg
ICBlbWl0TG9hZChyZXN1bHQsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBub3RKU0NlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMik7
CisgICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCk7CiAK
ICAgICBlbWl0R2V0UmV0dXJuUENGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKHJlZ1QyKTsKICAgICBl
bWl0R2V0Q2FsbGVyRnJhbWVGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKGNhbGxGcmFtZVJlZ2lzdGVy
KTsKQEAgLTI0OCw4ICsyNDcsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAg
ICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgICAgIHN0b3JlUHRy
KHJlZ1QxLCBpbnN0cnVjdGlvbls2XS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1Qw
LCBpbnN0cnVjdGlvbls2XS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKICAgICAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgfQogICAgIApA
QCAtMzEyLDcgKzMxMSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENh
bGwKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0g
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJl
KSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVk
U3RydWN0dXJlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJ
bW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
OCw4ICsxNjgsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAg
ICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkg
ewogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENh
bGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAg
ICAgICBKdW1wIGRvbmUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qw
KTsKLSAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QwLCBpbnN0cnVjdGlvbls2XS51LmFycmF5UHJv
ZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOworICAg
ICAgICAgICAgc3RvcmUzMihyZWdUMCwgaW5zdHJ1Y3Rpb25bNl0udS5hcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgICAgIH0KICAgICAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVDbG9zdXJlQ2FsbChDYWxsCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAog
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4
cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJl
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBl
eHBlY3RlZFN0cnVjdHVyZSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRy
dXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiwx
MCArMTAyLDEwIEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmYKIAog
dm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3JvQXNzZW1i
bGVyJiBqaXQsIEdQUlJlZyBidXR0ZXJmbHkpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGpp
dC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCisgICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGpp
dC5wYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQ
UigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgbV9zdHJ1Y3R1cmVJbW0s
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVu
dXNlZFBvaW50ZXIpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIG1fc3Ry
dWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKICAgICAKICAgICBt
X3Byb3BlcnR5U3RvcmFnZUxvYWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0
dGVyZmx5T2Zmc2V0KCkpLCBidXR0ZXJmbHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTU5NDI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBKU1ZhbHVl
UmVncyBtX2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKLSAgICBNYWNyb0Fz
c2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOworICAgIE1hY3JvQXNzZW1ibGVy
OjpEYXRhTGFiZWwzMiBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hh
YmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJs
ZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CiAgICAgQXNzZW1ibGVyTGFiZWwgbV9s
b2FkT3JTdG9yZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShy
ZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjplbWl0R2V0RnJvbUNhbGxGCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hh
cmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZh
aWx1cmVzKQogewotICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFN0cnVj
dHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFu
Y2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6
OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVl
T2Zmc2V0KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywg
ZHN0KSk7CkBAIC01MzQsNyArNTM0LDcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OgogCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJl
KFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVyZShO
b3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVj
dHVyZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlND
ZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAt
NTgyLDkgKzU4Miw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8K
ICAgICBqdW1wLmxpbmtUbyhtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZz
ZXRdLCB0aGlzKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElm
Tm90T2JqZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1
bXAgSklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0g
ICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICBy
ZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShT
QU1QTElOR19GTEFHUykKQEAgLTY1NSwxMSArNjU1LDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1p
dEFsbG9jYXRlSlNPYmplY3QoUmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRj
aCk7CiAgICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9j
YXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUg
b2JqZWN0J3Mgc3RydWN0dXJlCi0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3Vs
dCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUg
b2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOwor
CisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3Jl
U3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAog
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTcxNCwyNiArNzE0LDIzIEBAIGlubGluZSB2
b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKIH0KICNlbmRpZiAvLyBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShS
ZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJv
ZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOyAvLyBXZSBoYWQgZm91bmQgdGhpcyBzY3JhdGNoIHJl
Z2lzdGVyIHVzZWZ1bCBoZXJlIGJlZm9yZSwgc28gSSB3aWxsIGtlZXAgaXQgZm9yIG5vdy4KLSAg
ICAKLSAgICBSZWdpc3RlcklEIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsK
LSAgICBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZTsK
LSAgICAKLSAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKQotICAgICAgICBzdG9yZVB0cihz
dHJ1Y3R1cmUsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Cisg
ICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBsb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRj
aCk7CisgICAgICAgIHN0b3JlMzIoc2NyYXRjaCwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0
U2VlblN0cnVjdHVyZUlEKCkpOworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJl
LCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBlKTsKKyAgICBs
b2FkOChBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGlu
Z1R5cGUpOwogfQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JC
eXRlY29kZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3Rl
cklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9pZCBKSVQ6OmVt
aXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBj
ZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KQogewogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgc2NyYXRjaCwgbV9j
b2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoY2VsbCwgaW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBt
X2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZShzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIHNjcmF0Y2gsIDApOworICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGUoY2VsbCwgaW5kZXhpbmdUeXBlLCBzY3JhdGNoLCAwKTsKICNlbmRpZgog
fQogCkBAIC0xMTAyLDYgKzEwOTksMjYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFRh
Z0FzQm9vbEltbQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRI
YW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICByZXR1
cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNzZW1i
bGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGppdC5i
cmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQdHIo
Y29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDggKzI1NSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
VmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTI3NSw4ICsyNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAg
IGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAvLyBP
cHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAg
ICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3Rp
bGwgY29udGFpbnMgdmFsdWUuCkBAIC0yODYsNyArMjg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRo
ZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAv
LyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRy
b3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAgIEp1
bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBicmFu
Y2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTM0MiwxMiAr
MzQwLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBK
dW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwot
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBh
cmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zODYsOCArMzg0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZhbHVl
LCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAg
ICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4
KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwog
ICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtNDI2LDcgKzQyMyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJl
Z1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtNTUy
LDkgKzU0OSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKIAog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVz
dDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWws
IEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCks
IHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1
bXAoKTsKQEAgLTU3OCw5ICs1NzQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5z
dHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhh
bmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0
aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAg
d2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNjM0LDggKzYyOSw4IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0
U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2Vu
ZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
bV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAg
ICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02NzgsOCArNjczLDggQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93
Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3Zt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAv
LyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdF
cSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTcwOSw4ICs3MDQsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9w
U3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJv
dGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3ROb3RT
dHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
UHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RDZWxs
LmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzY3LDEy
ICs3NjIsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAgSnVt
cCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAg
ICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTc5OCwxMiArNzkz
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0
TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMy
KE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qy
KTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblpl
cm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAgd2Fz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNv
bXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC04NDIsMTAgKzgzNyw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0TG9h
ZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJ
bW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2Jq
ZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChW
aXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUg
dGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBj
YWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC04OTgsNyArODkxLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZvcihi
YXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtOTA5LDcgKzkwMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBj
YWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1
Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwg
QWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1
cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMp
KS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTE2MCw4ICsxMTUzLDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRoaXNS
ZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDggKzEwOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJ
bnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2lu
c3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEyOSw4ICsxMjgs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0
IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJ
Zk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2Jq
ZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0
IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwg
Y29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTQwLDcg
KzEzOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAg
IC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBp
cyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3Zl
IGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3Qg
Z28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVn
VDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVn
VDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhp
cyk7CkBAIC0xNjUsMTIgKzE2MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQo
SW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5r
KHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1w
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwog
ICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJl
Z1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1
YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjEyLDggKzIxMCw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEs
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlw
ZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwog
ICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKICAgICAKQEAgLTI3NCw4ICsyNzEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0
X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVy
blZhbHVlR1BSKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmV0
dXJuVmFsdWVHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRK
dW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZkNl
bGxOb3RPYmplY3QocmV0dXJuVmFsdWVHUFIpOwogCiAgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFk
ZHJlc3MuCiAgICAgZW1pdEdldFJldHVyblBDRnJvbUNhbGxGcmFtZUhlYWRlclB0cihyZWdUMSk7
CkBAIC0zMTEsNyArMzA3LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3Ry
dWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAgICAgCiAgICAg
SnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAg
IGFkZFNsb3dDYXNlKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBtX3ZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRz
dCAhPSBzcmMpCkBAIC0zNjMsOCArMzYxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwo
SW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxs
KHJlZ1QwKTsKIAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVt
cCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7Cisg
ICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBhZGRK
dW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIG1hc3F1ZXJhZGVzR2xvYmFs
T2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAtMzg2LDggKzM4NCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbioKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1p
dEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBj
YXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUu
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdU
MCksIHRhcmdldCk7CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7CkBAIC00ODIs
MTAgKzQ4MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBl
bmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAgIGlmIChiYXNlICE9IG1fY29kZUJs
b2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2Rl
KCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5v
dE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhp
c1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDApKTsK
IAogICAgIC8vIFdlIGNvdWxkIGlubGluZSB0aGUgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHZhbGlk
IGNhY2hlLCBidXQKICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJlIGhvdC4KQEAg
LTUzOSw3ICs1MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9u
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAKICAgICAvLyBUZXN0
IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJl
Z1QyLCByZWdUMyk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSkpOwogCiAgICAgLy8gVGVzdCBi
YXNlJ3MgcHJvdG90eXBlIGNoYWluCkBAIC01NTAsNyArNTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIExhYmVsIGNoZWNrUHJvdG90eXBlKHRoaXMp
OwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgp
KSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMikpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJl
Z1QxKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDIsIEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3Ry
dWN0dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJl
Z1QzKSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0aGlzKTsKQEAgLTcyNywxMiArNzIzLDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1
bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChO
b25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBq
dW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBl
bWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsK
ICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTc1OSwxMiAr
NzU1LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlz
KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsK
QEAgLTgzMCwxMSArODI2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rp
b24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihGaW5h
bE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihGaW5h
bE9iamVjdFR5cGUpKSk7CiAgICAgbG9hZFB0cihjYWNoZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKLSAg
ICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKKyAgICBsb2FkMzIoQWRkcmVz
cyhyZWdUMiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2Fs
bGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC05MDYsNiArOTAzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1Y3RpbwogICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdG9fdGhpcyk7CiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDcgKzQ0Niw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKIAotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgPiBiYXNlLT5z
dHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJhc2UtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFj
aXR5KCkpOwogICAgIEFTU0VSVCghdm0uaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhT
aG91bGRTdWNjZWVkKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1Zh
bHVlKSkpOwogICAgIGJhc2UtPnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNl
c3Nhcnkodm0sIHN0cnVjdHVyZSk7CiAgICAgYmFzZS0+cHV0RGlyZWN0KHZtLCBvZmZzZXQsIEpT
VmFsdWU6OmRlY29kZSh2YWx1ZSkpOwpAQCAtNDU0LDYgKzQ1NCw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKIAogc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNW
YWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgaWYgKExJ
S0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKQEAg
LTQ2MSw3ICs0NjIsNyBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChDYWxsRnJhbWUqIGNhbGxGcmFt
CiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAg
ICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkoY2FsbEZyYW1lLT52bSgpLCBpLCB2YWx1
ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgY2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgY2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICB9IGVsc2UgaWYgKGlzTmFt
ZShzdWJzY3JpcHQpKSB7CkBAIC01MTEsOSArNTEyLDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsKEV4ZQogICAgICAgICBCeVZhbEluZm8mIGJ5VmFsSW5mbyA9IGV4ZWMt
PmNvZGVCbG9jaygpLT5nZXRCeVZhbEluZm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAgICAg
QVNTRVJUKCFieVZhbEluZm8uc3R1YlJvdXRpbmUpOwogCi0gICAgICAgIGlmIChoYXNPcHRpbWl6
YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRp
bWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8v
IEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2Rl
ID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAg
ICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShv
YmplY3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZh
bEluZm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWwo
JnZtLCBleGVjLT5jb2RlQmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJf
UkVUVVJOX0FERFJFU1MpLCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXpl
ID0gdHJ1ZTsKQEAgLTUyNyw3ICs1MjgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWwoRXhlCiAgICAgICAgICAgICAvLyB3aGVyZSB3ZSBzZWUgbm9uLWluZGV4LWludGVy
Y2VwdGluZyBvYmplY3RzLCB0aGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2YKICAgICAg
ICAgICAgIC8vIG9wcG9ydHVuaXR5IGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIGdldF9ieV92
YWwgbWF5IGJlIHBvbHltb3JwaGljLgogICAgICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLnNsb3dQ
YXRoQ291bnQgPj0gMTAKLSAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5n
dGhJc05vdFplcm8oKSkgeworICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKHZt
KS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0
byBvcHRpbWl6ZS4KICAgICAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIo
ZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5r
Q2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1
bmN0aW9uUHRyKG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOwpAQCAtNTU3LDkgKzU1OCw5IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVYKICAgICAgICAgQnlWYWxJ
bmZvJiBieVZhbEluZm8gPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5nZXRCeVZhbEluZm8oYnl0
ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8uc3R1YlJvdXRpbmUp
OwogICAgICAgICAKLSAgICAgICAgaWYgKGhhc09wdGltaXphYmxlSW5kZXhpbmcob2JqZWN0LT5z
dHJ1Y3R1cmUoKSkpIHsKKyAgICAgICAgaWYgKGhhc09wdGltaXphYmxlSW5kZXhpbmcob2JqZWN0
LT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBvcHRpbWl6ZS4K
LSAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUgPSBqaXRBcnJheU1vZGVGb3JTdHJ1
Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJy
YXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKHZtKSk7
CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlICE9IGJ5VmFsSW5mby5hcnJheU1vZGUpIHsKICAg
ICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVEaXJlY3RQdXRCeVZhbCgmdm0sIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCksICZieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERS
RVNTKSwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgICAgICBkaWRPcHRpbWl6ZSA9IHRydWU7CkBA
IC01NzMsNyArNTc0LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VgogICAgICAgICAgICAgLy8gd2hlcmUgd2Ugc2VlIG5vbi1pbmRleC1pbnRlcmNlcHRpbmcgb2Jq
ZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mCiAgICAgICAgICAgICAvLyBv
cHBvcnR1bml0eSBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBnZXRfYnlfdmFsIG1heSBiZSBw
b2x5bW9ycGhpYy4KICAgICAgICAgICAgIGlmICgrK2J5VmFsSW5mby5zbG93UGF0aENvdW50ID49
IDEwCi0gICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5p
bnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJv
KCkpIHsKKyAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZv
KCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90
WmVybygpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUu
CiAgICAgICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVy
VG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9u
UHRyKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYykpOwpAQCAtNzY3LDExICs3NjgsMTIg
QEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVDbG9zdXJlQ2FsbAogICAgIGlmICghY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBWTSYg
dm0gPSBleGVjQ2FsbGVlLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIEpTRnVuY3Rpb24qIG9sZENh
bGxlZSA9IGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCk7CiAgICAgCiAgICAgaWYgKCFvbGRDYWxs
ZWUKLSAgICAgICAgfHwgb2xkQ2FsbGVlLT5zdHJ1Y3R1cmUoKSAhPSBjYWxsZWUtPnN0cnVjdHVy
ZSgpCisgICAgICAgIHx8IG9sZENhbGxlZS0+c3RydWN0dXJlKHZtKSAhPSBjYWxsZWUtPnN0cnVj
dHVyZSh2bSkKICAgICAgICAgfHwgb2xkQ2FsbGVlLT5leGVjdXRhYmxlKCkgIT0gY2FsbGVlLT5l
eGVjdXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTc4OSw3ICs3OTEs
NyBAQCBzdGF0aWMgYm9vbCBhdHRlbXB0VG9PcHRpbWl6ZUNsb3N1cmVDYWxsCiAgICAgCiAgICAg
bGlua0Nsb3N1cmVDYWxsKAogICAgICAgICBleGVjQ2FsbGVlLCBjYWxsTGlua0luZm8sIGNvZGVC
bG9jaywKLSAgICAgICAgY2FsbGVlLT5zdHJ1Y3R1cmUoKSwgY2FsbGVlLT5leGVjdXRhYmxlKCks
IGNvZGVQdHIpOworICAgICAgICBjYWxsZWUtPnN0cnVjdHVyZSh2bSksIGNhbGxlZS0+ZXhlY3V0
YWJsZSgpLCBjb2RlUHRyKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEzMDgsMjIg
KzEzMTAsMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVXaWxsQwogCiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNoZWNrSGFzSW5zdGFuY2UoRXhl
Y1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlVmFsKQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFs
dWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbCk7CiAKICAgICBpZiAo
YmFzZVZhbC5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbCk7Ci0gICAgICAgIEFTU0VSVCghYmFzZU9iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLSAgICAgICAgaWYg
KGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5j
ZSgpKSB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VPYmplY3QsIGV4ZWMsIHZhbHVlKTsKKyAgICAgICAg
QVNTRVJUKCFiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKSB7CisgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFzSW5zdGFu
Y2UoYmFzZU9iamVjdCwgZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2bS0+
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJp
bnN0YW5jZW9mIiwgYmFzZVZhbCkpOworICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKQEAgLTE0MTAsOSArMTQx
Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAgICAg
QnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJbmZvKGJ5
dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLnN0dWJSb3V0aW5l
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+
c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVj
dC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUu
Ci0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3Ry
dWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkp
OwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAg
ICAgICAgICAgICAgICAgSklUOjpjb21waWxlR2V0QnlWYWwoJnZtLCBleGVjLT5jb2RlQmxvY2so
KSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJh
eU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKQEAgLTE0MjYsNyAr
MTQyOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAg
ICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24taW5kZXgtaW50ZXJjZXB0aW5nIG9iamVjdHMsIHRo
aXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZgogICAgICAgICAgICAgLy8gb3Bwb3J0dW5p
dHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgZ2V0X2J5X3ZhbCBtYXkgYmUgcG9seW1vcnBo
aWMuCiAgICAgICAgICAgICBpZiAoKytieVZhbEluZm8uc2xvd1BhdGhDb3VudCA+PSAxMAotICAg
ICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7Cisg
ICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkg
ewogICAgICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAg
ICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihleGVjLT5jb2RlQmxvY2soKSk7
CiAgICAgICAgICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKFJl
dHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgRnVuY3Rpb25QdHIob3BlcmF0aW9u
R2V0QnlWYWxHZW5lcmljKSk7CkBAIC0xNDkwLDcgKzE0OTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpLnRvT2JqZWN0KGV4ZWMpOwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNl
T2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCAqaWRlbnRp
Zmllcik7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgKmlkZW50aWZpZXIpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVsZXRlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdm0udGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpKTsKQEAgLTE1MDIsNyArMTUwNCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRQTmFtZXMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gb2JqLT5zdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iai0+c3Ry
dWN0dXJlKHZtKTsKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CiAgICAgaWYgKCFqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlw
ZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVj
LCBvYmopOwpAQCAtMTYyMywxMCArMTYyNSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkdlCiAgICAgfQogCiAgICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMu
IFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRu
J3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCi0gICAgaWYgKHNsb3Qu
aXNDYWNoZWFibGVWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+
c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2Nv
cGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewogICAg
ICAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5IHx8IG1vZGVBbmRU
eXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAg
ICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNb
NV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgICAgIHBjWzZdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjUyLDE2ICsxNjU0
LDE2IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRUb1Njb3BlKEUKICAgICB9CiAK
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKLSAg
ICBzY29wZS0+bWV0aG9kVGFibGUoKS0+cHV0KHNjb3BlLCBleGVjLCBpZGVudCwgdmFsdWUsIHNs
b3QpOworICAgIHNjb3BlLT5tZXRob2RUYWJsZSh2bSktPnB1dChzY29wZSwgZXhlYywgaWRlbnQs
IHZhbHVlLCBzbG90KTsKICAgICAKICAgICBpZiAoZXhlYy0+dm0oKS5leGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRo
ZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBo
b3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCiAgICAgaWYgKG1vZGVBbmRUeXBlLnR5
cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2RlQW5kVHlwZS50eXBlKCkgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlKCkgJiYgc2xvdC5iYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSgpLT5wcm9w
ZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFi
bGUoKSAmJiBzbG90LmJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKHZtKS0+cHJv
cGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpKSB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBwY1s1XS51LnN0
cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc2Nv
cGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVj
LT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKHZt
KSk7CiAgICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpOwog
ICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmluZ0dldEJ5VmFs
U3R1YkdlbmUKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAgIEp1bXBMaXN0IGZh
aWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChKU0M6OmJyYW5j
aFN0cnVjdHVyZShqaXQsIE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCB2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgCiAgICAgLy8g
TG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QxLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2YgbG9h
ZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJlc3Mo
cmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QxKTsKQEAg
LTEzNyw4ICsxMzcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9u
CiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdU
MSwgcmVnVDMsIHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0QXJy
YXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQz
MihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMSk7CiAKICAgICBQYXRjaGFi
bGVKdW1wIGJhZFR5cGU7CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV92YWwoSW5zdHJ1YwogCiAgICAgSnVtcCBub25DZWxsID0ganVtcCgpOwogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBjaGVjawotICAgIEp1bXAgbm90U3RyaW5n
ID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbV92bS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKICAgICBlbWl0TmFrZWRDYWxsKG1fdm0tPmdldENUSVN0dWIoc3RyaW5nR2V0QnlWYWxT
dHViR2VuZXJhdG9yKS5jb2RlKCkpOwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdFB0ciha
ZXJvLCByZWdUMCk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKQEAgLTI4MSw4
ICsyODEsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAg
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2UsIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMSwgcmVn
VDMsIHByb2ZpbGUpOworICAgIG1vdmUocmVnVDAsIHJlZ1QxKTsKKyAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVz
dGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMSk7CiAgICAgCiAgICAgUGF0Y2hhYmxl
SnVtcCBiYWRUeXBlOwpAQCAtNDc3LDggKzQ3Nyw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9i
eV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwg
cmVnVDEpOwogCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICAgICAgZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVnVDIsIHJlZ1QzLCBtX2J5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgbW92ZShyZWdUMCwgcmVnVDIpOworICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJlZ1QyLCByZWdUMywgbV9ieXRlY29k
ZU9mZnNldCk7CiAgICAgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCkBAIC02MzIs
NyArNjMyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAg
IGVtaXRMb2FkUGF5bG9hZChpdGVyLCByZWdUMSk7CiAgICAgCiAgICAgLy8gVGVzdCBiYXNlJ3Mg
c3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3Io
aSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTcyOSw3
ICs3MjksNyBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAg
ICAgZW1pdExvYWQoc2NvcGUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVT
bG90LCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVy
dHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsMTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHVi
R2VuZQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVy
ZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3Ry
dWN0dXJlKGppdCwKKyAgICAgICAgTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3Rh
cnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAg
ICBqaXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhP
ZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTExMSw4ICsxMTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1Qx
KTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIp
OwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCByZWdUMywgcHJv
ZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDIp
OwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjA5LDcgKzIxMSw5IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBsaW5rU2xvd0Nhc2VJZk5v
dEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAgICAgSnVtcCBub25DZWxs
ID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBjaGVjawot
ICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFN0cnVjdHVyZShOb3RF
cXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAorICAgICAgICBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVtaXROYWtl
ZENhbGwoQ29kZUxvY2F0aW9uTGFiZWwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0
dWJHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVzdDY0KFpl
cm8sIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOwpAQCAt
MjgwLDcgKzI4NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0cnVjdGkK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAgICAgLy8g
VGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1Qw
LCByZWdUMiwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVn
VDIsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSksIHJlZ1Qz
KTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTMyMSw4ICszMjUsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgLy8gU2VlIGNv
bW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVn
VDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIp
OwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCByZWdUMywgcHJv
ZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDIp
OwogICAgIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKQEAgLTUxNywxMCArNTIwLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIAogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogICAgIAotICAgIGlmICgq
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxp
bmcoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRl
Y29kZUluZGV4KHJlZ1QxLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7Ci0gICAgfQorICAgIGlm
ICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhX
aXRoQ2VsbChyZWdUMCwgcmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zmc2V0KTsKIAogICAgIEpJ
VEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKQEAgLTY5
Nyw3ICs2OTgsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7
CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwgcmVnVDApOwogICAgIGxvYWRQdHIo
c3RydWN0dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMSkpOworICAgIGxvYWQzMihB
ZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7Cisg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xv
YmFsUHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTc1OCw2ICs3NjEsOCBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zCiAgICAgaWYgKHJlc29sdmVU
eXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2
ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVy
YXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21TY29wZSwgZHN0LCBjdXJyZW50SW5z
dHJ1Y3Rpb24pOwogfQpAQCAtODIxLDYgKzgyNiw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfdG9fc2NvcGUoSW5zdHIKICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsVmFyIHx8IHJl
c29sdmVUeXBlID09IENsb3N1cmVWYXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRUb1Nj
b3BlLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODczLDcgKzg4MCw3IEBAIEpJVDo6SnVt
cCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICAgICAgc3RydWN0dXJlLT5hZGRU
cmFuc2l0aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0Y2hwb2ludChtX2NvZGVCbG9jaykp
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVj
dCksIHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNz
KHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKEVxdWFsLCBBZGRyZXNz
KHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiAgICAg
ICAgIGJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0aGlzKTsKICNlbmRpZgpAQCAtODgy
LDcgKzg4OSw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAg
ICB9CiAgICAgCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAg
IHJldHVybiBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJy
YW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJh
bnNpdGlvbkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklE
IHNjcmF0Y2gpCkBAIC0xMDI2LDggKzEwMzMsMTQgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRJ
bnRUeXBlZEFycmF5R2V0QgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAKLSAg
ICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0
Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
c2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xh
c3NJbmZvRm9yVHlwZSh0eXBlKSkpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgcHVzaChy
ZWdUMik7CisjZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KSAKKyAgICBwb3AocmVnVDIpOwor
I2VuZGlmCisgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgc2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3BlcnR5LCBBZGRy
ZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkpOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSks
IGJhc2UpOwogICAgIApAQCAtMTA5Niw5ICsxMTA5LDE1IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5R2UKICNlbmRpZgogICAgIAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKLSAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3Moc2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOworCisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKKyAgICBwdXNoKHJlZ1QyKTsKKyNlbmRpZgorI2lmIFVTRShKU1ZBTFVFMzJfNjQpIAorICAg
IHBvcChyZWdUMik7CisjZW5kaWYKKyAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJh
bmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5
cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwg
cHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZz
ZXRPZlZlY3RvcigpKSwgYmFzZSk7CiAgICAgCkBAIC0xMTQ5LDggKzExNjgsOCBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCCiAgICAgCiAgICAgSnVtcExpc3Qgc2xv
d0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKGVhcmx5U2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOworICAgIGxv
YWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2Ny
YXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNj
cmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgCiAjaWYg
VVNFKEpTVkFMVUU2NCkKQEAgLTEyMTUsOCArMTIzNCw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjpl
bWl0RmxvYXRUeXBlZEFycmF5UHUKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAg
Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBl
YXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CisgICAgbG9hZDgoQWRkcmVzcyhi
YXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKKyAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3Rl
ZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2
aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCk7CiAjZW5kaWYKIAotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBl
KFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUpOworICAg
ICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsK
IAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNh
bGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxs
RnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJl
Z2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwpAQCAtMjI0LDEw
ICsyMjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19J
TkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RU
eXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUgdHlw
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklU
OjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSB0eXBlKQogICAg
IHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFk
ZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMih0eXBlKSk7CisgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlw
ZSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkg
ZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTEg
QEAKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkZUTFRodW5r
cy5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkpJVC5o
IgorI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIK
QEAgLTEwMSw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoQ29k
ZUJsCiAgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUg
Y2hlY2sgJiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRw
dHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAg
ICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFM
YWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9D
YWxsKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0
Y2hCdWZmZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxv
Y2F0aW9uLmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRv
U3RvcmFnZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIGlmIChjb21wYWN0KQpAQCAtMTI5LDEwICsxMzIsMTAgQEAgc3RhdGljIHZvaWQg
YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgICAgICAvLyBJZiB3ZSBleGVjdXRlIHRo
aXMgY29kZSwgdGhlIG9iamVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBlY3QuIEFz
c2VydAogICAgICAgICAvLyB0aGlzIGluIGRlYnVnIG1vZGVzLgogICAgICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKAorICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShqaXQsCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKKyAgICAgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgICAgIGppdC5icmVha3BvaW50KCk7
CiAgICAgICAgIG9rLmxpbmsoJmppdCk7CiAjZW5kaWYKQEAgLTE0MSwxMCArMTQ0LDEwIEBAIHN0
YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAKICAgICBqaXQubW92
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKICAg
ICBmYWlsdXJlQ2FzZXMuYXBwZW5kKAotICAgICAgICBqaXQuYnJhbmNoUHRyKAorICAgICAgICBi
cmFuY2hTdHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAg
c3RydWN0dXJlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
aygKQEAgLTE2MywxMCArMTY2LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRp
b25DaGVjaygKIAogc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZXImIHJl
cGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgY29uc3QgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIHRhcmdldCkKIHsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKKyAgICBpZiAoTWFjcm9Bc3Nl
bWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgewogICAg
ICAgICByZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgICAgIFJlcGF0Y2hC
dWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCi0gICAg
ICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zm
c2V0KAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoT25BZGRyZXNzKAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAtKGludHB0
cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpKSwKICAgICAgICAgICAgIENv
ZGVMb2NhdGlvbkxhYmVsKHRhcmdldCkpOwogICAgICAgICByZXR1cm47CkBAIC0yNDEsNyArMjQ0
LDEwIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlUHJvdG9DaGFpbkFjY2Vzc1N0dWIKICAgICAKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgIAotICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBzdHJ1Y3R1cmUp
KTsKICAgICAKICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGl0ID0gY2hhaW4tPmhlYWQoKTsKQEAgLTMxNyw4ICsz
MjMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBlCiAgICAgICAg
IAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgICAg
IAotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOyAKLSAgICAgICAgc3R1
YkppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6
OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIHN0dWJKaXQubG9h
ZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJK
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5h
cHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hH
UFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spKSk7CiAg
ICAgICAgIApAQCAtNTA1LDcgKzUxMCwxMCBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZEdldEJ5SURM
aXN0KEV4ZWNTdGF0CiAgICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMgc3R1YkppdCh2bSwg
Y29kZUJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdyb25n
U3RydWN0ID0gc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIHdyb25nU3RydWN0ID0gYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAgLy8gVGhlIHN0cmF0
ZWd5IHdlIHVzZSBmb3Igc3R1YnMgaXMgYXMgZm9sbG93czoKICAgICAgICAgLy8gMSkgQ2FsbCBE
RkcgaGVscGVyIHRoYXQgY2FsbHMgdGhlIGdldHRlci4KQEAgLTcxOCwxMCArNzI2LDEwIEBAIHN0
YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICAgICAgc3R1YkppdC5wdXNoVG9TYXZl
KHNjcmF0Y2hHUFIpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0cnVj
dHVyZSA9IHN0dWJKaXQuYnJhbmNoUHRyKAorICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJhZFN0
cnVjdHVyZSA9IGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgc3RydWN0dXJlKTsK
ICAgICAKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAjaWYgVVNFKEpTVkFM
VUU2NCkKQEAgLTg0OCw3ICs4NTYsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25T
dHViKAogICAgICAgICAgICAgCiAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldh
dGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCi0gICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvbGRTdHJ1Y3R1cmUpKSk7CisgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG9sZFN0cnVjdHVyZSkp
OwogICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgb2xkU3Ry
dWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBz
dHViSml0LCBmYWlsdXJlQ2FzZXMsCkBAIC05MDYsNyArOTE3LDcgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2UgPSB0cnVl
OwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFN0b3JlU3Ry
dWN0dXJlV2l0aFR5cGVJbmZvKHN0dWJKaXQsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIGJhc2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGlzSW5s
aW5lT2Zmc2V0KHNsb3QuY2FjaGVkT2Zmc2V0KCkpKQogICAgICAgICBzdHViSml0LnN0b3JlNjQo
dmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZz
ZXRPZklubGluZVN0b3JhZ2UoKSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9m
ZnNldCgpKSAqIHNpemVvZihKU1ZhbHVlKSkpOwpAQCAtMTE0NCw3ICsxMTU1LDcgQEAgc3RhdGlj
IGJvb2wgdHJ5QnVpbGRQdXRCeUlkTGlzdChFeGVjU3RhdAogICAgICAgICAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjE5
LDEwICsxMjMwLDEwIEBAIHN0YXRpYyBib29sIHRyeVJlcGF0Y2hJbigKICAgICAgICAgICAgIG5l
ZWRUb1Jlc3RvcmVTY3JhdGNoID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5k
KHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0
cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJl
KSk7CiAgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUqIGN1cnJTdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmU7CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9IGNoYWluLT5oZWFkKCk7
CkBAIC0xMzQ3LDEwICsxMzU4LDEwIEBAIHZvaWQgbGlua0Nsb3N1cmVDYWxsKEV4ZWNTdGF0ZSog
ZXhlYywgQ2EKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAgICAgICAgc3R1
YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBl
bmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTQxNiwxNiArMTQyNywxNiBAQCB2
b2lkIGxpbmtDbG9zdXJlQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENhCiB2b2lkIHJlc2V0R2V0QnlJ
RChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8pCiB7CiAgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAgIENvZGVMb2NhdGlvbkRh
dGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5k
YXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJ
bW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFi
bGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAg
UmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVz
cyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgc3RydWN0dXJl
TGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgt
KGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOworICAgIGlmIChN
YWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgp
KSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiks
Ci0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgICAgICAgICAg
ICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBh
dGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVy
KSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbENv
bXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xvYWRPclN0b3JlKSwgMCk7
CiAjZWxzZQpAQCAtMTQ1MCwxNiArMTQ2MSwxNiBAQCB2b2lkIHJlc2V0UHV0QnlJRChSZXBhdGNo
QnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICByZXBhdGNoQ2FsbChyZXBh
dGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wdGltaXplZEZ1bmN0aW9u
KTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClzdHVi
SW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6
OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKLSAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFu
Y2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAorICAgIENvZGVMb2NhdGlv
bkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNr
SW1tVG9DYWxsKTsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgeworICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCisgICAgICAgICAgICBS
ZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3Mo
c3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoCiAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+KHN0
dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAotICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9p
bnRlcikpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAgICAgfQot
ICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1
Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRv
TG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRl
ICJKU0ludGVyZmFjZUpJVC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCkBAIC02NSwxNCArNjcsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQg
ZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBk
c3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIodm0u
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQo
YnJhbmNoU3RydWN0dXJlKCp0aGlzLCBOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgQWRkcmVz
cyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIHZt
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2
b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0g
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVyZShkc3QsIHNjcmF0Y2gs
IGRzdCk7CiAgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihjbGFzc0luZm8pKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHJlbG9hZCB0aGUgYXJn
dW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVkIGl0LgorICAgICAgICAgICAg
bG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0
LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkpJVE9wZXJh
dGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9y
LmgiCkBAIC0xNjgsNyArMTY5LDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiB2aXJ0
dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgR1BSSW5mbzo6bm9u
QXJnR1BSMSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoR1BSSW5mbzo6bm9uQXJnR1BSMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIEdQUklu
Zm86Om5vbkFyZ0dQUjIpOworICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1cmUo
aml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIyLCBHUFJJbmZvOjpu
b25BcmdHUFIxKTsKICAgICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLApAQCAtOTg2LDkgKzk4Nyw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXQKICAgICBqaXQubG9hZDMy
KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zm
c2V0T2ZOZXh0SW5kZXgoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICAKICAg
ICAvLyBQdWxsIG91dCB0aGUgYnV0dGVyZmx5IGZyb20gaXRlcmF0ZWRPYmplY3QKLSAgICBqaXQu
bG9hZFB0cihBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOwotICAgIAotICAgIGpp
dC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGpp
dC5sb2FkOChBZGRyZXNzKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OmluZGV4
aW5nVHlwZU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwogICAgIGppdC5s
b2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0OjpidXR0
ZXJmbHlPZmZzZXQoKSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICAKICAgICBq
aXQuYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9VbnVzZWRQb2lu
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9VbnVzZWRQb2lu
dGVyLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVW51
c2VkUG9pbnRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorI2lmIFVTRShKU1ZBTFVFNjQpCitzdGF0aWMgY29uc3QgdWludHB0cl90IHVu
dXNlZFBvaW50ZXIgPSAweDA7CisjZWxzZQogc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB1bnVzZWRQ
b2ludGVyID0gMHhkMWU3YmVlZjsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjMsNiArMzYzLDEzIEBAIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5j
aGUKICAgICAgICAgcGF5bG9hZCkKIGVuZAogCittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhUeXBl
SW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCisKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1faW5kZXhp
bmdUeXBlW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWkgc2NyYXRjaCwgSlNDZWxsOjpt
X2luZGV4aW5nVHlwZVtjZWxsXQorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxv
YWQpCiAgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlv
bmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KIGVuZApAQCAtNTA1LDcgKzUxMiw3IEBAIF9s
bGludF9vcF90b190aGlzOgogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICBiYm5lcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RU
eXBlLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAg
YnBuZXEgdDAsIHQyLCAub3BUb1RoaXNTbG93CkBAIC01ODYsNyArNTkzLDcgQEAgX2xsaW50X29w
X2VxX251bGw6CiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cEVxTnVsbEltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgYnRibnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCAub3BFcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAwLCB0MQog
ICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKQEAgLTYzMyw3ICs2NDAsNyBAQCBfbGxpbnRf
b3BfbmVxX251bGw6CiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcE5lcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIGJ0Ym56IFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgLm9wTmVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDEs
IHQxCiAgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKQEAgLTY2MCw4ICs2NjcsOCBAQCBt
YWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgc2xvd1BhCiAgICAgYmluZXEgdDIsIHQz
LCAuc2xvdwogICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGJpbmVxIHQyLCBDZWxs
VGFnLCAubm90U3RyaW5nCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFd
LCB0MwogICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCiAgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKIC5ub3RTdHJpbmc6
CkBAIC05MzIsNyArOTM5LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgMTJbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cp
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCkBAIC05NDcsNyArOTU0LDcg
QEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgbG9hZGkgMTJbUENdLCB0MAogICAgIGxvYWRp
IDRbUENdLCB0MwogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QxXSwgdDIKICAgICBiYmIg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUs
IC5vcEluc3RhbmNlb2ZTbG93CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKQEAg
LTk1NSw3ICs5NjIsNyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICAjIFJlZ2lzdGVyIHN0
YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3Rh
bmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQyCiAgICAgbG9hZGkgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgogICAgIGJwZXEgdDIsIHQxLCAub3BJ
bnN0YW5jZW9mRG9uZQogICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcApAQCAtOTgyLDcg
Kzk4OSw3IEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm9wSXNVbmRl
ZmluZWRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAwLCB0MQogICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQpAQCAtMTAyNSw3ICsxMDMyLDcgQEAgX2xsaW50
X29wX2lzX3N0cmluZzoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCwgdDMpCiAg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogICAgIGJpbmVxIHQw
LCBDZWxsVGFnLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MAogICAg
IGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmlu
Z1R5cGUsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAg
ZGlzcGF0Y2goMykKQEAgLTEwOTQsNyArMTEwMSw3IEBAIG1hY3JvIGdldEJ5SWQoZ2V0UHJvcGVy
dHlTdG9yYWdlKQogICAgICAgICB0MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9w
ZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpIDRb
UENdLCB0MQogICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJd
LCBzY3JhdGNoCiAgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3BlcnR5U3RvcmFn
ZSwgdDJdLCB0MgpAQCAtMTEyMiw3ICsxMTI5LDcgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5n
dGg6CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAgMTZbUENdLCB0MQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QXJyYXlMZW5n
dGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MgorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MSwg
dDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93CiAgICAgYnRp
eiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3RoU2xvdwpAQCAtMTE2Niw3
ICsxMTczLDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgICAgIHQw
LAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkK
LSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJ
ZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxLCAu
b3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQogICAgICAgICAgICAg
d3JpdGVCYXJyaWVyKHNjcmF0Y2gsIHQyKQpAQCAtMTE5NCw3ICsxMjAxLDcgQEAgbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5
SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwgdDIKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMp
CiAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKQEAgLTEyMDcs
NyArMTIxNCw3IEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAg
ICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQogICAgICAgICAgICAgbG9hZGkgMjRb
UENdLCB0MQogICAgICAgICAgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAg
ICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgc3Rv
cmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8odDAsIHQxLCB0MikKICAgICAgICAgICAgIGRpc3BhdGNo
KDkpCiAgICAgICAgIGVuZCkKIGVuZApAQCAtMTIyNSw3ICsxMjMyLDcgQEAgbWFjcm8gc3RydWN0
dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLAogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQogLmxvb3A6CiAg
ICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0
dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxd
LCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbcHJvdG9DZWxs
XSwgb2xkU3RydWN0dXJlCiAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1
dEJ5SWRTbG93CiAgICAgYWRkcCA0LCBzY3JhdGNoCiAgICAgYmluZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcApAQCAtMTI1
Miw3ICsxMjU5LDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQy
CiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQxKQogICAg
IGxvYWRpIDEyW1BDXSwgdDMKQEAgLTEzMzgsNyArMTM0NSw3IEBAIF9sbGludF9vcF9nZXRfYnlf
cG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQy
LCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQwCiAgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MAogICAgIGJw
bmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5v
cEdldEJ5UG5hbWVTbG93CiAgICAgbG9hZGkgMjRbUENdLCB0MAogICAgIGxvYWRpIFtjZnIsIHQw
LCA4XSwgdDAKQEAgLTEzODEsNyArMTM4OCw3IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVjaywg
c2xvd1BhdGgpCiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MAogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlW
YWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAg
IGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGxvYWRpIDhbUENdLCB0MApAQCAtMTQ5Myw3
ICsxNTAwLDcgQEAgbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYQogICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDIKICAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAK
QEAgLTE2MjQsNyArMTYzMSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKICAgICBsb2FkcCBD
b2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgYmJuZXEgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpbmVxIEpTU3RyaW5nOjptX2xlbmd0aFt0MF0s
IDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVl
W3QwXSwgdDAKQEAgLTE2NjgsOSArMTY3NSw5IEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwo
KQogICAgICAgICBuZWdpIHQzCiAgICAgICAgIGJpbmVxIFRoaXNBcmd1bWVudE9mZnNldCArIFRh
Z09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRhZywgLmRvbmUKICAgICAgICAgbG9hZGkgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKLSAgICAgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgICAgIGxvYWRwIDI0W1BDXSwgdDEKLSAgICAgICAgc3Rv
cmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVbdDFdCisgICAgICAgIHN0
b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbdDFdCiAgICAgLmRv
bmU6CiAgICAgZW5kCiBlbmQKQEAgLTE3MzUsNyArMTc0Miw3IEBAIF9sbGludF9vcF9yZXRfb2Jq
ZWN0X29yX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRo
aXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJiYiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0
T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCkBAIC0xNzUxLDcgKzE3NTgsNyBAQCBf
bGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9Q
cmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgYmJuZXEgU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJp
bWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTE3ODAsNyArMTc4Nyw3IEBAIF9sbGludF9vcF9uZXh0X3Bu
YW1lOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogICAgIGxvYWRp
IDhbUENdLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCiAgICAgbG9h
ZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTE3ODgsNyArMTc5NSw3IEBA
IF9sbGludF9vcF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgog
ICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcs
IC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5
bG9hZE9mZnNldFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQx
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEKICAgICBicG5lcSB0MSwg
W3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAgICBidHBueiBbdDBdLCAu
b3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTIwNDUsNyArMjA1Miw3IEBAIG1hY3Jv
IGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhdLCB0MAogICAgIGxvYWRw
RnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwg
c2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsMjkgQEAgbWFjcm8g
dmFsdWVQcm9maWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIGVuZAogZW5kCiAKK21hY3Jv
IGxvYWRTdHJ1Y3R1cmUoY2VsbCwgc3RydWN0dXJlKQorZW5kCisKK21hY3JvIGxvYWRTdHJ1Y3R1
cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHNjcmF0Y2gKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bc2NyYXRjaF0sIHNj
cmF0Y2gKKyAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0
cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICBsb2FkaSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIFtzY3JhdGNoLCBz
dHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xv
YmJlckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbY2VsbF0sIHN0cnVjdHVyZQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW2NlbGxdLCBjZWxsCisgICAgbG9hZHAgVk06OmhlYXAg
KyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2Nl
bGxdLCBjZWxsCisgICAgbG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQorZW5k
CisKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGwsIHN0cnVjdHVyZSwgc2Ny
YXRjaCkKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fc3RydWN0dXJlSURbc3RydWN0dXJlXSwgc2Ny
YXRjaAorICAgIHN0b3JlcSBzY3JhdGNoLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0KK2Vu
ZAogCiAjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyLgogCkBAIC0zODUsMTAgKzQw
OCwxMCBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAu
b3BUb1RoaXNTbG93Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFs
T2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwg
RmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3Jh
dGNoKHQwLCB0MSwgdDIpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCi0gICAgYnBu
ZXEgdDAsIHQyLCAub3BUb1RoaXNTbG93CisgICAgYnBuZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93
CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9UaGlzU2xvdzoKQEAgLTQ2OSwxMSArNDkyLDExIEBA
IG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb24oKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigy
LCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ss
IC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBi
dGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlND
ZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQKICAgICBtb3ZlIDAsIHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZDoKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKICAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MCwg
dDAKQEAgLTgwMCw4ICs4MjMsNyBAQCBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDEpCiAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDEsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBidGJ6IEpTQ2VsbDo6
bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5z
dGFuY2VTbG93CiAgICAgZGlzcGF0Y2goNSkKIAogLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CkBA
IC04MTMsMjQgKzgzNSwyMyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICB0cmFjZUV4ZWN1
dGlvbigpCiAgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDApCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xv
dworICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZT
bG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVDZWxsKHQwLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCiAgICAgCiAgICAgIyBSZWdp
c3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEsIHQwCiAu
b3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIK
LSAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwgdDIKKyAgICBsb2FkU3RydWN0
dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHQyLCB0MykKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlW3QzXSwgdDIKICAgICBicWVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKICAgICBi
dHF6IHQyLCB0YWdNYXNrLCAub3BJbnN0YW5jZW9mTG9vcAogCiAgICAgbW92ZSAwLCB0MAogLm9w
SW5zdGFuY2VvZkRvbmU6CiAgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDEsIHQzKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0
Y2goNCkKIApAQCAtODUwLDE3ICs4NzEsMTcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAg
ICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAub3BJc1VuZGVmaW5l
ZENlbGw6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRibnog
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2VsbDo6
bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkCiAgICAgbW92ZSBWYWx1ZUZhbHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhd
CiAgICAgZGlzcGF0Y2goMykKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1
Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDMsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQotICAgIGNwZXEg
U3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0MF0sIHQxLCB0MwotICAgIG9ycSBWYWx1ZUZhbHNl
LCB0MwotICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCisgICAgY3BlcSBTdHJ1Y3R1cmU6Om1f
Z2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCisgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgc3Rv
cmVxIHQwLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTg5Myw4ICs5MTQs
NyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MikKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MCkKICAgICBidHFueiB0MCwgdGFn
TWFzaywgLm9wSXNTdHJpbmdOb3RDZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCi0gICAgY2JlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QwXSwgU3RyaW5nVHlwZSwgdDEKKyAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5n
VHlwZSwgdDEKICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKICAgICBzdG9yZXEgdDEsIFtjZnIsIHQy
LCA4XQogICAgIGRpc3BhdGNoKDMpCkBAIC05NDYsMTQgKzk2NiwxNSBAQCBtYWNybyBnZXRCeUlk
KGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcg
Y2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CiAgICAgIyB3
ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigyLCB0MCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQotICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbig1LCB0MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDMsIHQyLCB0
MSkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKKyAgICBicG5lcSB0MiwgdDEsIC5v
cEdldEJ5SWRTbG93CiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0MywKICAgICAg
ICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Cisg
ICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCiAgICAgICAgICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgICAgICAgICBsb2FkcSBbcHJvcGVydHlTdG9y
YWdlLCB0Ml0sIHNjcmF0Y2gKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbY2ZyLCB0MSwg
OF0KQEAgLTk3OSw3ICsxMDAwLDcgQEAgX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQs
IHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MywgLm9wR2V0QXJyYXlM
ZW5ndGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MgorICAgIG1v
dmUgdDMsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNB
cnJheSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1h
c2ssIC5vcEdldEFycmF5TGVuZ3RoU2xvdwpAQCAtMTAxNiwxNSArMTAzNywxNiBAQCBfbGxpbnRf
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CiBtYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFn
ZSkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQz
KQotICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHQzLCB0MCwgLm9wUHV0QnlJZFNsb3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAg
IGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQxKQorICAgIGJwbmVxIHQyLCB0MSwgLm9wUHV0QnlJ
ZFNsb3cKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQwLAogICAgICAgICB0MywK
ICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICAgICAg
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MSkKKyAgICAgICAgICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigzLCB0MikKICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHNjcmF0Y2gpCiAgICAgICAgICAgICB3cml0ZUJhcnJpZXIodDApCiAgICAgICAgICAgICBzdG9y
ZXEgc2NyYXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCkBAIC0xMDQ5LDkgKzEwNzEsMTAgQEAg
bWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxv
YWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQorICAgIGJwbmVxIHQyLCB0MSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgdDIpCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDMsIHQyKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAg
ICAgICB0MCwKQEAgLTEwNjIsMTUgKzEwODUsMTUgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgd3JpdGVCYXJyaWVyKHQxKQogICAgICAgICAg
ICAgc3RvcmVxIHQxLCBbdDNdCiAgICAgICAgICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0
MSkKLSAgICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAg
ICAgICAgIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHQwLCB0MSwgdDIpCiAgICAgICAgICAg
ICBkaXNwYXRjaCg5KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbm9BZGRpdGlvbmFsQ2hl
Y2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUNoYWlu
Q2hlY2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tz
KG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0
aGUgcHJvdG8KICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3JhdGNoKQogICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEwNzksNyArMTEwMiw4IEBA
IG1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBicWVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQogLmxvb3A6
CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0Nl
bGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVy
ZQorICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJvdG9DZWxsLCBzY3JhdGNo
MikKKyAgICBtb3ZlIHNjcmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgsIHNjcmF0Y2gKICAgICBi
cW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxv
b3AKQEAgLTExMDYsOCArMTEzMCw4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwg
dDMpCisgICAgbW92ZSB0MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUlu
dDMyKHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTE5Miw3ICsxMjE2LDcgQEAgX2xsaW50
X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAs
IC5vcEdldEJ5UG5hbWVTbG93KQogICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQogICAgIGxvYWRx
IFtjZnIsIHQzLCA4XSwgdDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKICAgICBicG5lcSB0Miwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDFdLCAub3BHZXRCeVBu
YW1lU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykKICAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MwpAQCAtMTIzNCw4ICsxMjU4LDggQEAgbWFjcm8gcHV0
QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxs
KHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQorICAgIG1vdmUgdDEsIHQy
CiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDMsIC5vcFB1dEJ5
VmFsU2xvdykKQEAgLTEzNDQsOCArMTM2OCw4IEBAIG1hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxl
ciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBsb2FkcSBbY2Zy
LCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGxv
YWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNlbGxIYW5kbGVyKHQyLCBK
U0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKIC50YXJnZXQ6
CkBAIC0xNDc3LDggKzE1MDEsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAg
Q29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQxLCB0YWdNYXNrLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwg
dDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3Qw
XSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgYmJuZXEgSlNDZWxs
OjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBi
aW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
ICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAgYnRweiAgdDAsIC5vcFN3
aXRjaE9uUm9wZQpAQCAtMTUyMiw5ICsxNTQ1LDkgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2Fs
bCgpCiAgICAgICAgIG5lZ3AgdDMKICAgICAgICAgbG9hZHEgVGhpc0FyZ3VtZW50T2Zmc2V0W2Nm
ciwgdDMsIDhdLCB0MAogICAgICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKLSAgICAgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDYsIHQxKQotICAgICAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2Vl
blN0cnVjdHVyZVt0MV0KKyAgICAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
dDMKKyAgICAgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJ
RFt0MV0KICAgICAuZG9uZToKICAgICBlbmQKIGVuZApAQCAtMTU4Nyw4ICsxNjEwLDcgQEAgX2xs
aW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAgICAgYnRxbnogdDAsIHRh
Z01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Cisg
ICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlz
Tm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6
CkBAIC0xNjAzLDggKzE2MjUsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNs
b3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3JlcSB0MCwgW2Nm
ciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykKQEAgLTE2MzQsNyArMTY1NSw3IEBAIF9sbGludF9v
cF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MykKICAgICBhc3Nl
cnROb3RDb25zdGFudCh0MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2Fj
aGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAgIGxvYWRwIFN0
cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0xNjQyLDcgKzE2NjMsNyBAQCBfbGxp
bnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKICAgICBi
cWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGwsIC5vcE5leHRQbmFtZVNs
b3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgdDIKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2go
dDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFk
ZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AK
QEAgLTE4NzEsOCArMTg5Miw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogbWFjcm8gbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwRnJvbUluc3RydWN0
aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1Bh
dGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHko
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsMTMg
KzI1NiwxNCBAQCBtYWNybyBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgpCiAgICAgICAgIGVuZCkK
IGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBwcm9m
aWxlLCBzY3JhdGNoKQotICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5n
VHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQor
bWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHByb2ZpbGUsIHNjcmF0Y2gp
CisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAgICBjb25zdCBpbmRleGlu
Z1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAogICAgIGlmIFZBTFVFX1BST0ZJTEVSCi0gICAg
ICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVtw
cm9maWxlXQorICAgICAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHNjcmF0
Y2gKKyAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVj
dHVyZUlEW3Byb2ZpbGVdCiAgICAgZW5kCi0gICAgbG9hZGIgU3RydWN0dXJlOjptX2luZGV4aW5n
VHlwZVtzdHJ1Y3R1cmVdLCBpbmRleGluZ1R5cGUKKyAgICBsb2FkYiBKU0NlbGw6Om1faW5kZXhp
bmdUeXBlW2NlbGxdLCBpbmRleGluZ1R5cGUKIGVuZAogCiBtYWNybyBjaGVja1N3aXRjaFRvSklU
KGluY3JlbWVudCwgYWN0aW9uKQpAQCAtNDEwLDggKzQxMSw4IEBAIG1hY3JvIGFsbG9jYXRlSlNP
YmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3QKICAgICAgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRP
ZkZpcnN0RnJlZUNlbGxbYWxsb2NhdG9yXQogICAgIAogICAgICAgICAjIEluaXRpYWxpemUgdGhl
IG9iamVjdC4KLSAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVty
ZXN1bHRdCiAgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbcmVzdWx0XQor
ICAgICAgICBzdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhyZXN1bHQsIHN0cnVjdHVyZSwgc2Ny
YXRjaDEpCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZXJJZgogICAgIG1fb3Zl
cnJvZGVDYWxsZXIgPSB0cnVlOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwog
ICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKGdsb2JhbE9iamVjdCgpLT50aHJv
d1R5cGVFcnJvckdldHRlclNldHRlcih2bSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEFjY2Vz
c29yKTsKLSAgICBtZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICBtZXRob2RU
YWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgdm0ucHJvcGVy
dHlOYW1lcy0+Y2FsbGVyLCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKIHZvaWQgQXJndW1lbnRz
OjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWYK
ICAgICBtX292ZXJyb2RlQ2FsbGVlID0gdHJ1ZTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVz
Y3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihnbG9iYWxPYmpl
Y3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIodm0pLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBBY2Nlc3Nvcik7Ci0gICAgbWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhp
cywgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCBkZXNjcmlwdG9yLCBmYWxzZSk7Cisg
ICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMs
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCiBib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9u
IDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKSAKICAgICB7IAotICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhBcmd1bWVudHNUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mTnVtQXJndW1lbnRzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEFy
Z3VtZW50cywgbV9udW1Bcmd1bWVudHMpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgSlNWYWx1ZSBnZXRQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4CiBzdGF0aWMgdm9pZCBwdXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBvYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgb2JqLT5tZXRob2RUYWJsZSgpLT5wdXQob2Jq
LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBvYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXQob2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
IH0KIAogc3RhdGljIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
RXhlY1N0YXRlKiBleGVjLCBpbnQgYXJndW1lbnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
dW5kZWZpbmVkVmFsdWUgPSAwKQpAQCAtMjE2LDE2ICsyMTYsMTYgQEAgdm9pZCBzaGlmdChFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNs
b3QuZ2V0VmFsdWUoZXhlYywgZnJvbSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwor
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCB0bykpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4gbGVuZ3RoIC0gY291bnQ7IC0t
aykgewotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGsgLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjYwLDggKzI2MCw4IEBAIHZvaWQgdW5zaGlmdChFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGZyb20pOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCkt
PnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKLSAgICAgICAgfSBl
bHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKKyAg
ICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI4NCwxMSArMjg0LDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIAogICAgIC8vIDMuIElm
IElzQ2FsbGFibGUoZnVuYykgaXMgZmFsc2UsIHRoZW4gbGV0IGZ1bmMgYmUgdGhlIHN0YW5kYXJk
IGJ1aWx0LWluIG1ldGhvZCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICgxNS4yLjQuMikuCiAg
ICAgaWYgKCFmdW5jdGlvbi5pc0NlbGwoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAi
LCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmpl
Y3QpLCAiXSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsK
IAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbQ2FsbF1dIGlu
dGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBhcyB0aGUgdGhpcyB2YWx1ZSBh
bmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgaWYgKCFpc0pTQXJyYXkodGhpc09iamVj
dCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGVIb3N0IHx8IGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
biAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC00NzIsNyArNDcyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXN1bHQgPSB0aGlzT2JqLT5n
ZXQoZXhlYywgbGVuZ3RoIC0gMSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBs
ZW5ndGggLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KQEAgLTQ5OSwxMSArNDk5
LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICBmb3Ig
KHVuc2lnbmVkIG4gPSAwOyBuIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyBuKyspIHsKICAgICAg
ICAgLy8gQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3c7IHdoZXJlIHNhZmUgd2UgY2FuIGRvIGEg
ZmFzdCBwdXQgYnkgaW5kZXguCiAgICAgICAgIGlmIChsZW5ndGggKyBuID49IGxlbmd0aCkKLSAg
ICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhl
YywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOworICAgICAg
ICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09i
aiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgICAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoZXhlYywgSlNWYWx1ZShzdGF0aWNfY2FzdDxp
bnQ2NF90PihsZW5ndGgpICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4obikpLnRvV1RGU3RyaW5nKGV4
ZWMpKTsKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KG4pLCBzbG90KTsKKyAg
ICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iaiwg
ZXhlYywgcHJvcGVydHlOYW1lLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChuKSwgc2xvdCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTUzMiwxOSArNTMyLDE5
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICAgICAgaWYgKG9i
ajIpIHsKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgaywgb2JqMiwgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBvYmoyLCB0cnVl
KTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9IGVsc2Ug
aWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
aiwgZXhlYywgaykpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrKSkgewog
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAob2JqKSB7Ci0gICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxr
MSwgb2JqLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqLCB0cnVlKTsKICAgICAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2Jq
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsx
KSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSkpIHsKICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgICAgICB9CkBAIC02NjQsMTggKzY2NCwxOCBAQCBzdGF0aWMgYm9vbCBwZXJm
b3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBlCiAgICAgICAgIC8vIFN3YXAgdGhlbWluIGFuZCBpCiAg
ICAgICAgIGlmICh0aGVtaW4gPiBpKSB7CiAgICAgICAgICAgICBpZiAobWluT2JqKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBpLCBtaW5PYmosIHRydWUpOworICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIG1pbk9iaiwgdHJ1
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2Jq
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSkp
IHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSkpIHsKICAgICAgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoaU9iaikgewotICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCkt
PnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluLCBpT2JqLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlz
T2JqLCBleGVjLCB0aGVtaW4sIGlPYmosIHRydWUpOwogICAgICAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRoZW1pbikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgewogICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTcwOSw3ICs3MDksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgbmFt
ZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFt
ZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
KyAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0
aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtNzQwLDcgKzc0MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgaWYgKGluZGV4IDwgZmxhdEFycmF5LT5s
ZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKCF0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhl
YywgaW5kZXgpKSB7CisgICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpbmRleCkpIHsKICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
OwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICAgICAgfQpAQCAtNzQ5LDcgKzc0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
YXJyYXlQcm90b0YKICAgICBmb3IgKHNpemVfdCBpID0gZmxhdEFycmF5LT5sZW5ndGgoKTsgaS0t
OykgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3JIb2xlKGZsYXRBcnJheSwgZXhlYywg
aSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGksIHZhbHVlLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
ICAgICB9CkBAIC04MDYsNyArODA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGFkZGl0aW9uYWxBcmdz
OyArK2spIHsKLSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlz
T2JqLCBleGVjLCBrICsgYmVnaW4sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGsgKyAyKSwgdHJ1
ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGsgKyBiZWdpbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayArIDIp
LCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CkBAIC04MzEsNyAr
ODMxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAg
Zm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJnczsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChrKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDcgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgQkVHSU4oKTsKICAgICBKU1ZhbHVl
IHYxID0gT1AoMSkuanNWYWx1ZSgpOwogICAgIGlmICh2MS5pc0NlbGwoKSkKLSAgICAgICAgcGNb
Ml0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4
ZWN1dGFibGUoKSwgdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgcGNbMl0udS5z
dHJ1Y3R1cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIHYx
LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICBlbHNlCiAgICAgICAgIHBjWzJdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CiAgICAgUkVUVVJOKHYxLnRvVGhpcyhleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDogTm90U3RyaWN0TW9kZSkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24g
MTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNGdW5j
dGlvbkV4ZWN1dGFibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOworICAgICAgICByZXR1cm4g
dHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7CiAgICAgfQogCiAgICAgYm9vbCBpc0hv
c3RGdW5jdGlvbigpIGNvbnN0CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSAwOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNh
bGw7CiAgICAgaW50IG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdDsKIApAQCAtNjcwLDcgKzY3
MCw3IEBAIGlubGluZSBib29sIGlzSG9zdEZ1bmN0aW9uKEpTVmFsdWUgdmFsdWUKIAogaW5saW5l
IHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUpCiB7Ci0gICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnR5cGUoKSkgewogICAgIGNh
c2UgRXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFi
bGVUeXBlOgpAQCAtNjg0LDcgKzY4NCw3IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXIKIAogaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMo
KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIEV2YWxFeGVjdXRhYmxlVHlwZToKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOwogICAg
IGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXIt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsK
ICAgICByZXR1cm4gY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwg
QXJnTGlzdCgpKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxl
KCktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gc2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBj
YWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFz
ZSwgYXJncyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0
Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtNzIsNiArNzMsNyBAQCBz
dGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAjaWZuZGVmIE5ERUJVRwogICAg
IERpc2FsbG93R0M6OmluaXRpYWxpemUoKTsKICNlbmRpZgorICAgIFZNOjppbml0aWFsaXplKCk7
CiB9CiAKIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw4
ICsyMzksOCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiB7CiAg
ICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gZW5zdXJlQXJyYXlTdG9yYWdlKHZtKTsKICAgICBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpOwotICAgIHVuc2lnbmVk
IHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAg
ICB1bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpOwor
ICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVD
YXBhY2l0eSgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZSh2bSktPm91
dE9mTGluZVNpemUoKTsKIAogICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0
aGlzIG9uIHRoZSBmYXN0IHBhdGguCiAgICAgQVNTRVJUKCFhZGRUb0Zyb250IHx8IGNvdW50ID4g
c3RvcmFnZS0+bV9pbmRleEJpYXMpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIGJvb2wgSlNBcnJheTo6
dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICB1bnNpZ25lZCBuZXdTdG9yYWdlQ2FwYWNp
dHk7CiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RvcmFnZSBhcnJheSBpcyBzdWZmaWNpZW50bHkg
bGFyZ2UgKGJ1dCBub3QgdG9vIGxhcmdlISkgdGhlbiBqdXN0IGtlZXAgdXNpbmcgaXQuCiAgICAg
aWYgKGN1cnJlbnRDYXBhY2l0eSA+IGRlc2lyZWRDYXBhY2l0eSAmJiBpc0RlbnNlRW5vdWdoRm9y
VmVjdG9yKGN1cnJlbnRDYXBhY2l0eSwgcmVxdWlyZWRWZWN0b3JMZW5ndGgpKSB7Ci0gICAgICAg
IG5ld0FsbG9jQmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUoKSk7CisgICAgICAgIG5l
d0FsbG9jQmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgbmV3
U3RvcmFnZUNhcGFjaXR5ID0gY3VycmVudENhcGFjaXR5OwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHNpemVfdCBuZXdTaXplID0gQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0
eSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKGRlc2lyZWRDYXBhY2l0eSkpOwpAQCAtMjk4
LDcgKzI5OCw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKICAg
ICAgICAgLy8gQXRvbWljIGRlY2F5LCArIHRoZSBwb3N0LWNhcGFjaXR5IGNhbm5vdCBiZSBncmVh
dGVyIHRoYW4gd2hhdCBpcyBhdmFpbGFibGUuCiAgICAgICAgIHBvc3RDYXBhY2l0eSA9IG1pbigo
c3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkgLSBsZW5ndGgpID4+IDEsIG5ld1N0b3JhZ2VDYXBhY2l0
eSAtIHJlcXVpcmVkVmVjdG9yTGVuZ3RoKTsKICAgICAgICAgLy8gSWYgd2UncmUgbW92aW5nIGNv
bnRlbnRzIHdpdGhpbiB0aGUgc2FtZSBhbGxvY2F0aW9uLCB0aGUgcG9zdC1jYXBhY2l0eSBpcyBi
ZWluZyByZWR1Y2VkLgotICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+
YmFzZShzdHJ1Y3R1cmUoKSkgfHwgcG9zdENhcGFjaXR5IDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3Ro
KCkgLSBsZW5ndGgpOworICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+
YmFzZShzdHJ1Y3R1cmUodm0pKSB8fCBwb3N0Q2FwYWNpdHkgPCBzdG9yYWdlLT52ZWN0b3JMZW5n
dGgoKSAtIGxlbmd0aCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0g
cmVxdWlyZWRWZWN0b3JMZW5ndGggKyBwb3N0Q2FwYWNpdHk7CkBAIC0zMTAsNyArMzEwLDcgQEAg
Ym9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgICAgICBBU1NFUlQo
Y291bnQgKyB1c2VkVmVjdG9yTGVuZ3RoIDw9IG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIG1l
bW1vdmUobmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IgKyBjb3VudCwgc3Rv
cmFnZS0+bV92ZWN0b3IsIHNpemVvZihKU1ZhbHVlKSAqIHVzZWRWZWN0b3JMZW5ndGgpOwogICAg
ICAgICBtZW1tb3ZlKG5ld0J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNp
emUsIGJ1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNpemUsIHNpemVvZihK
U1ZhbHVlKSAqIHByb3BlcnR5U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikgKyBBcnJheVN0
b3JhZ2U6OnNpemVGb3IoMCkpOwotICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0
ZXJmbHktPmJhc2Uoc3RydWN0dXJlKCkpKSB8fCAobmV3SW5kZXhCaWFzICE9IHN0b3JhZ2UtPm1f
aW5kZXhCaWFzKSkgeworICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHkt
PmJhc2Uoc3RydWN0dXJlKHZtKSkpIHx8IChuZXdJbmRleEJpYXMgIT0gc3RvcmFnZS0+bV9pbmRl
eEJpYXMpKSB7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2Uo
KSAtIHByb3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3BlcnR5
U2l6ZSwgc2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXplICsgc2l6ZW9mKEluZGV4aW5nSGVh
ZGVyKSArIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0
dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IsIHN0b3JhZ2UtPm1fdmVjdG9yLCBzaXpl
b2YoSlNWYWx1ZSkgKiB1c2VkVmVjdG9yTGVuZ3RoKTsKIApAQCAtMzkzLDcgKzM5Myw3IEBAIGJv
b2wgSlNBcnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5Ojpz
ZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dF
eGNlcHRpb24pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsK
KyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAg
ICAgICBpZiAoIW5ld0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDIyLDcg
KzQyMiw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAg
ICAgICAgIGVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgp
ID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9i
dXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAg
ICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICB9
IGVsc2UgewpAQCAtNDQ0LDcgKzQ0NCw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNT
dGF0ZSogZXhlYywKIAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiAgICAgICAgIApAQCAtNTM5LDcgKzUzOSw3IEBAIEpTVmFsdWUgSlNBcnJh
eTo6cG9wKEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVu
Z3RoIDJeMzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3Iu
CiB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewot
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewogICAgICAgICBjcmVhdGVJ
bml0aWFsVW5kZWNpZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICAvLyBGYWxsIHRocm91Z2gu
CkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZ
X0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGV4ZWMt
PnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxp
ZCBhcnJheSBsZW5ndGgiKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODcsNyArNTg3LDcg
QEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAg
ICAgICBtZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUs
IHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC02MTksNyArNjE5LDcgQEAgdm9pZCBKU0FycmF5Ojpw
dXNoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAobGVuZ3RoID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOworICAgICAgICAg
ICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3Ro
LCB2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFu
Z2VFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKU0FycmF5OjpwdXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYQogCiAgICAgICAgIC8vIFB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgaW52YWxpZCBsZW5n
dGggKDJeMzEtMSkgc3RvcmVzIHRoZSBwcm9wZXJ0eSwgYnV0IHRocm93cyBhIHJhbmdlIGVycm9y
LgogICAgICAgICBpZiAoc3RvcmFnZS0+bGVuZ3RoKCkgPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAg
ICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+
bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUuNC41LjEg
c3RlcCAzLmQuCiAgICAgICAgICAgICBpZiAoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGgiKSk7CkBAIC02NzcsNyArNjc3LDcgQEAgYm9v
bCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZQogICAgIAogICAgIC8vIElmIHRo
ZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3JtYWwgc3Rh
dGUsCiAgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3RvdHlwZS4K
LSAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgaW5T
cGFyc2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkpCisgICAgaWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yIHx8IGluU3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChpbmRl
eGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghb2xkTGVuZ3Ro
KQpAQCAtNzUxLDcgKzc1MSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJbmRl
eGluZ1QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChjb3VudCA+IDApOwogICAgIAotICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5
cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIApAQCAtODQzLDEzICs4NDMsMTQgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFu
eUluZGV4aW5nVAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB1bnNoaWZ0IGNhbiBiZSBoYW5kbGVk
LCBmYWxzZSB0byBmYWxsYmFjay4gICAgCiBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25l
ZCBjb3VudCwgQXJyYXlTdG9yYWdlKiBzdG9yYWdlKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RvcmFnZS0+bGVuZ3RoKCk7CiAKICAgICBSRUxF
QVNFX0FTU0VSVChzdGFydEluZGV4IDw9IGxlbmd0aCk7CiAKICAgICAvLyBJZiB0aGUgYXJyYXkg
Y29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRlLAogICAg
IC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCi0gICAgaWYg
KGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IHN0b3JhZ2UtPmluU3Bh
cnNlTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSkKKyAgICBpZiAobGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgc3Rv
cmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5cGUoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgbW92ZUZyb250ID0gIXN0YXJ0SW5k
ZXggfHwgc3RhcnRJbmRleCA8IGxlbmd0aCAvIDI7CkBAIC04NTcsNyArODU4LDcgQEAgYm9vbCBK
U0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogICAgIHVuc2lnbmVkIHZlY3Rvckxl
bmd0aCA9IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpOwogCiAgICAgaWYgKG1vdmVGcm9udCAmJiBz
dG9yYWdlLT5tX2luZGV4QmlhcyA+PSBjb3VudCkgewotICAgICAgICBtX2J1dHRlcmZseSA9IHN0
b3JhZ2UtPmJ1dHRlcmZseSgpLT51bnNoaWZ0KHN0cnVjdHVyZSgpLCBjb3VudCk7CisgICAgICAg
IG1fYnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnVuc2hpZnQoc3RydWN0dXJlKHZt
KSwgY291bnQpOwogICAgICAgICBzdG9yYWdlID0gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
OwogICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyAtPSBjb3VudDsKICAgICAgICAgc3RvcmFn
ZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCArIGNvdW50KTsKQEAgLTg4Niw3ICs4ODcs
NyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKIGJvb2wgSlNB
cnJheTo6dW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQogewotICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAg
ICAgLy8gV2UgY291bGQgaGFuZGxlIHRoaXMuIEJ1dCBpdCBzaG91bGRuJ3QgZXZlciBjb21lIHVw
LCBzbyB3ZSB3b24ndC4KQEAgLTk5NSwyMCArOTk2LDIwIEBAIHN0YXRpYyBpbnQgY29tcGFyZUJ5
U3RyaW5nUGFpckZvclFTb3J0KGMKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZSh2YS0+c2Vj
b25kLCB2Yi0+c2Vjb25kKTsKIH0KIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJh
eTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5j
dGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKLSAg
ICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyIHx8IGluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhEb3VibGUgfHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aENvbnRpZ3VvdXMg
fHwgaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CisgICAgQVNTRVJUKGFy
cmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyIHx8IGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aERvdWJsZSB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1
b3VzIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAg
CiAgICAgdW5zaWduZWQgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkOwogICAgIHVuc2lnbmVk
IG5ld1JlbGV2YW50TGVuZ3RoOwotICAgIGNvbXBhY3RGb3JTb3J0aW5nPGluZGV4aW5nVHlwZT4o
CisgICAgY29tcGFjdEZvclNvcnRpbmc8YXJyYXlJbmRleGluZ1R5cGU+KAogICAgICAgICBsZW5n
dGhOb3RJbmNsdWRpbmdVbmRlZmluZWQsCiAgICAgICAgIG5ld1JlbGV2YW50TGVuZ3RoKTsKICAg
ICAKLSAgICBDb250aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5
cGU+KCk7CisgICAgQ29udGlndW91c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8YXJyYXlJ
bmRleGluZ1R5cGU+KCk7CiAgICAgCi0gICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhB
cnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CisgICAg
aWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0
b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0KCkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAxNyw3ICsxMDE4LDcgQEAg
dm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3RvcihFeGVjU3RhdAogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgYm9vbCBhbGxWYWx1ZXNBcmVOdW1iZXJzID0gdHJ1ZTsKLSAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBj
YXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBi
cmVhazsKQEAgLTEwMzksNyArMTA0MCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0
b3IoRXhlY1N0YXQKICAgICAvLyBhbHNvIGRvbid0IHJlcXVpcmUgbWVyZ2Vzb3J0J3Mgc3RhYmls
aXR5LCBzaW5jZSB0aGVyZSdzIG5vIHVzZXIgdmlzaWJsZQogICAgIC8vIHNpZGUtZWZmZWN0IGZy
b20gc3dhcHBpbmcgdGhlIG9yZGVyIG9mIGVxdWFsIHByaW1pdGl2ZSB2YWx1ZXMuCiAgICAgaW50
ICgqY29tcGFyZSkoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKTsKLSAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBjYXNlIEFy
cmF5V2l0aEludDMyOgogICAgICAgICBjb21wYXJlID0gY29tcGFyZU51bWJlcnNGb3JRU29ydFdp
dGhJbnQzMjsKICAgICAgICAgYnJlYWs7CkBAIC0xMDYyLDcgKzEwNjMsNyBAQCB2b2lkIEpTQXJy
YXk6OnNvcnROdW1lcmljKEV4ZWNTdGF0ZSogZXhlCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUlu
ZGV4aW5nTW9kZSgpKTsKIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTExMTUsNyArMTExNiw3IEBAIHRlbXBsYXRl
IDw+IHN0cnVjdCBDb250aWd1b3VzVHlwZUFjY2Vzc28KIH07CiAKIAotdGVtcGxhdGU8SW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+Cit0ZW1wbGF0ZTxJbmRl
eGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgogdm9pZCBK
U0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGlndW91c0Rh
dGE8U3RvcmFnZVR5cGU+IGRhdGEsIHVuc2lnbmVkIHJlbGV2YW50TGVuZ3RoKQogewogICAgIGlm
ICghcmVsZXZhbnRMZW5ndGgpCkBAIC0xMTM5LDExICsxMTQwLDExIEBAIHZvaWQgSlNBcnJheTo6
c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICBib29sIGlzU29ydGluZ1ByaW1pdGl2ZVZh
bHVlcyA9IHRydWU7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGV2YW50TGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8
aW5kZXhpbmdUeXBlPjo6Z2V0QXNWYWx1ZShkYXRhLCBpKTsKLSAgICAgICAgQVNTRVJUKGluZGV4
aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1ZS5pc0ludDMyKCkpOworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5nVHlwZT46
OmdldEFzVmFsdWUoZGF0YSwgaSk7CisgICAgICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSAh
PSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1ZS5pc0ludDMyKCkpOwogICAgICAgICBBU1NFUlQoIXZh
bHVlLmlzVW5kZWZpbmVkKCkpOwogICAgICAgICB2YWx1ZXNbaV0uZmlyc3QgPSB2YWx1ZTsKLSAg
ICAgICAgaWYgKGluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhEb3VibGUgJiYgaW5kZXhpbmdUeXBl
ICE9IEFycmF5V2l0aEludDMyKQorICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJy
YXlXaXRoRG91YmxlICYmIGFycmF5SW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyKQogICAg
ICAgICAgICAgaXNTb3J0aW5nUHJpbWl0aXZlVmFsdWVzID0gaXNTb3J0aW5nUHJpbWl0aXZlVmFs
dWVzICYmIHZhbHVlLmlzUHJpbWl0aXZlKCk7CiAgICAgfQogICAgICAgICAKQEAgLTExNzQsNyAr
MTE3NSw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICAK
ICAgICAvLyBJZiB0aGUgdG9TdHJpbmcgZnVuY3Rpb24gY2hhbmdlZCB0aGUgbGVuZ3RoIG9mIHRo
ZSBhcnJheSBvciB2ZWN0b3Igc3RvcmFnZSwKICAgICAvLyBpbmNyZWFzZSB0aGUgbGVuZ3RoIHRv
IGhhbmRsZSB0aGUgb3JpZ25hbCBudW1iZXIgb2YgYWN0dWFsIHZhbHVlcy4KLSAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKICAgICBj
YXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgIGNhc2Ug
QXJyYXlXaXRoQ29udGlndW91czoKQEAgLTExODQsNyArMTE4NSw3IEBAIHZvaWQgSlNBcnJheTo6
c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3QKICAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFn
ZToKICAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSA8IHJlbGV2YW50
TGVuZ3RoKSB7CiAgICAgICAgICAgICBpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBy
ZWxldmFudExlbmd0aCk7Ci0gICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4
aW5nVHlwZT46OnJlcGxhY2VEYXRhUmVmZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVj
dG9yKCkpOworICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4aW5n
VHlwZT46OnJlcGxhY2VEYXRhUmVmZXJlbmNlKCZkYXRhLCBhcnJheVN0b3JhZ2UoKS0+dmVjdG9y
KCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChhcnJheVN0b3JhZ2UoKS0+bGVuZ3RoKCkgPCBy
ZWxldmFudExlbmd0aCkKICAgICAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5zZXRMZW5ndGgocmVs
ZXZhbnRMZW5ndGgpOwpAQCAtMTE5NSw3ICsxMTk2LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29t
cGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVsZXZhbnRMZW5ndGg7IGkrKykKLSAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRl
eGluZ1R5cGU+OjpzZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5maXJz
dCk7CisgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+Ojpz
ZXRXaXRoVmFsdWUodm0sIHRoaXMsIGRhdGEsIGksIHZhbHVlc1tpXS5maXJzdCk7CiAgICAgCiAg
ICAgSGVhcDo6aGVhcCh0aGlzKS0+cG9wVGVtcFNvcnRWZWN0b3IoJnZhbHVlcyk7CiB9CkBAIC0x
MjA0LDcgKzEyMDUsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOgog
ICAgICAgICByZXR1cm47CkBAIC0xMzM2LDExICsxMzM3LDExIEBAIHN0cnVjdCBBVkxUcmVlQWJz
dHJhY3RvckZvckFycmF5Q29tcGFyZSAKICAgICBzdGF0aWMgaGFuZGxlIG51bGwoKSB7IHJldHVy
biAweDdGRkZGRkZGOyB9CiB9OwogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
PgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5
Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENh
bGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7CiAgICAgQVNTRVJU
KCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBBU1NFUlQoaW5kZXhpbmdUeXBlID09IHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBl
ID09IGluZGV4aW5nVHlwZSgpKTsKICAgICAKICAgICAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGV4
Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBjb21wYXJlIGZ1bmN0aW9uIG9yIGluIHRvTnVtYmVyLgog
ICAgICAgICAKQEAgLTEzNTAsNyArMTM1MSw3IEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihF
eGVjU3RhdGUqIGV4ZWMKICAgICBpZiAobV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKQogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAotICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBy
ZWxldmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxl
bmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhpbmdUeXBlPigpOwogICAgIHVuc2lnbmVk
IG5vZGVDb3VudCA9IHVzZWRWZWN0b3JMZW5ndGg7CiAgICAgICAgIAogICAgIGlmICghbm9kZUNv
dW50KQpAQCAtMTQxNywxNCArMTQxOCwxNCBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhl
Y1N0YXRlKiBleGVjCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQ7ICsraSkgewogICAgICAgICBB
U1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBpZiAo
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVyZmx5
KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0
ZXJdLnZhbHVlLmFzTnVtYmVyKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnRJ
bmRleGluZ0RhdGEoKVtpXS5zZXQodm0sIHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
Kml0ZXJdLnZhbHVlKTsKICAgICAgICAgKytpdGVyOwogICAgIH0KICAgICAvLyBQdXQgdW5kZWZp
bmVkIHZhbHVlcyBiYWNrIGluLgotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlXaXRo
SW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgIEFTU0VSVChlbGVtZW50
c1RvRXh0cmFjdFRocmVzaG9sZCA9PSB1bmRlZmluZWRFbGVtZW50c1RocmVzaG9sZCk7CkBAIC0x
NDQwLDEzICsxNDQxLDEzIEBAIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4
ZWMKICAgICAvLyBFbnN1cmUgdGhhdCB1bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHpl
cm9lZCBvdXQuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hv
bGQ7IGkgPCBjbGVhckVsZW1lbnRzVGhyZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkg
PCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4aW5n
VHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250
aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJy
ZW50SW5kZXhpbmdEYXRhKClbaV0uY2xlYXIoKTsKICAgICB9CiAgICAgCi0gICAgaWYgKGhhc0Fy
cmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChoYXNBcnJh
eVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1W
YWx1ZXNJblZlY3RvciA9IG5ld1VzZWRWZWN0b3JMZW5ndGg7CiB9CiAKQEAgLTE0NTQsNyArMTQ1
NSw3IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIHsKICAgICBB
U1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTQ4Niw3ICsxNDg3LDcgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlz
dChFeGVjU3RhdGUqIGV4ZQogICAgIHVuc2lnbmVkIHZlY3RvckVuZDsKICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4qIHZlY3RvcjsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFy
cmF5Q2xhc3M6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xNTQ4LDcgKzE1NDksNyBA
QCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgdW5zaWduZWQg
dmVjdG9yRW5kOwogICAgIAogICAgIEFTU0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkpOwot
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKQEAgLTE2MDMsNDAgKzE2MDQsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1
bWVudHMoRXhlY1N0YXRlKgogICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGdldChl
eGVjLCBpKSk7CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0ZW1w
bGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OmNvbXBh
Y3RGb3JTb3J0aW5nKHVuc2lnbmVkJiBudW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZhbnRM
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKLSAgICBBU1NF
UlQoaW5kZXhpbmdUeXBlID09IHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgQVNT
RVJUKGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlwZSgpKTsKIAotICAgIHVuc2lnbmVk
IG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxpbmRleGluZ1R5cGU+KCk7CisgICAg
dW5zaWduZWQgbXlSZWxldmFudExlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGFycmF5SW5kZXhpbmdU
eXBlPigpOwogICAgIAogICAgIG51bURlZmluZWQgPSAwOwogICAgIHVuc2lnbmVkIG51bVVuZGVm
aW5lZCA9IDA7CiAgICAgICAgIAogICAgIGZvciAoOyBudW1EZWZpbmVkIDwgbXlSZWxldmFudExl
bmd0aDsgKytudW1EZWZpbmVkKSB7CiAgICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJh
eVdpdGhJbnQzMikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
SW50MzIpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3Vz
SW50MzIoKVtudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFy
cmF5V2l0aERvdWJsZSkgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlX
aXRoRG91YmxlKSB7CiAgICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzRG91YmxlKClbbnVtRGVmaW5lZF07CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAg
ICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkXS5n
ZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBl
PigpW251bURlZmluZWRdLmdldCgpOwogICAgICAgICBpZiAoIXYgfHwgdi5pc1VuZGVmaW5lZCgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1EZWZpbmVkOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgIEFT
U0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKGluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVy
Zmx5LT5jb250aWd1b3VzSW50MzIoKVtpXS5nZXQoKTsKICAgICAgICAgICAgIGlmICghdikKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NDUsNyArMTY0Niw3IEBAIHZvaWQgSlNBcnJh
eTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5j
b250aWd1b3VzSW50MzIoKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5kZXhpbmdU
eXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUg
PT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAgICBkb3VibGUgdiA9IG1fYnV0dGVyZmx5
LT5jb250aWd1b3VzRG91YmxlKClbaV07CiAgICAgICAgICAgICBpZiAodiAhPSB2KQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY1MywyMyArMTY1NCwyMyBAQCB2b2lkIEpTQXJyYXk6
OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpW251bURlZmluZWQrK10gPSB2OwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KLSAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGluZGV4aW5nVHlw
ZT4oKVtpXS5nZXQoKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gaW5kZXhpbmdEYXRhPGFycmF5SW5k
ZXhpbmdUeXBlPigpW2ldLmdldCgpOwogICAgICAgICBpZiAodikgewogICAgICAgICAgICAgaWYg
KHYuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICArK251bVVuZGVmaW5lZDsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVChudW1EZWZpbmVkIDwgbV9idXR0
ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5k
ZXhpbmdUeXBlPigpW251bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKKyAg
ICAgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5l
ZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogICAgICAgICAKICAgICBuZXdSZWxldmFudExlbmd0aCA9IG51bURlZmluZWQgKyBu
dW1VbmRlZmluZWQ7CiAgICAgCi0gICAgaWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUp
KQorICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNlTWFwKTsKICAgICAKLSAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSkgeworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsK
ICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChudW1EZWZpbmVkID09IG5ld1JlbGV2YW50TGVuZ3RoKTsKQEAg
LTE2NzgsMTkgKzE2NzksMTkgQEAgdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNp
Z25lZAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7
IGkgPCBuZXdSZWxldmFudExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5k
ZXhpbmdUeXBlPigpW2ldLnNldFVuZGVmaW5lZCgpOworICAgICAgICAgICAgaW5kZXhpbmdEYXRh
PGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLnNldFVuZGVmaW5lZCgpOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdSZWxldmFudExlbmd0
aDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoRG91YmxlKQorICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
RG91YmxlKQogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9
IFFOYU47CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5
cGU+KClbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5n
VHlwZT4oKVtpXS5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5k
ZXhpbmdUeXBlKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkK
ICAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBuZXdSZWxldmFu
dExlbmd0aDsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NDUsNyArNjQ1LDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aW5oZXJpdHMoY29uc3QgQ2xhcwog
CiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1RoaXMoRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9k
ZSBlY21hTW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0
aG9kVGFibGUoKS0+dG9UaGlzKGFzQ2VsbCgpLCBleGVjLCBlY21hTW9kZSkgOiB0b1RoaXNTbG93
Q2FzZShleGVjLCBlY21hTW9kZSk7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXMoYXNDZWxsKCksIGV4ZWMsIGVjbWFNb2RlKSA6
IHRvVGhpc1Nsb3dDYXNlKGV4ZWMsIGVjbWFNb2RlKTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6Z2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKQEAgLTcwMCw3ICs3MDAsNyBAQCBpbmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXQoRXhlY1N0YXRl
KiBleGVjCiAgICAgICAgIHB1dFRvUHJpbWl0aXZlKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJs
ZSgpLT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOworICAg
IGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKIH0KIAogaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0
QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTcwOSw3ICs3MDksNyBAQCBpbmxpbmUgdm9pZCBK
U1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0CiAgICAgICAgIHB1dFRvUHJpbWl0aXZlQnlJbmRl
eChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgoYXNDZWxs
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICBhc0NlbGwo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgoYXNDZWxsKCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogaW5saW5lIEpTVmFsdWUgSlNW
YWx1ZTo6c3RydWN0dXJlT3JVbmRlZmluZWQoKSBjb25zdApAQCAtNzMwLDYgKzczMCw3IEBAIGlu
bGluZSBib29sIEpTVmFsdWU6OmVxdWFsKEV4ZWNTdGF0ZSogZXgKIAogQUxXQVlTX0lOTElORSBi
b29sIEpTVmFsdWU6OmVxdWFsU2xvd0Nhc2VJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgZG8gewog
ICAgICAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQogICAgICAgICAgICAg
cmV0dXJuIHYxLmFzTnVtYmVyKCkgPT0gdjIuYXNOdW1iZXIoKTsKQEAgLTc0NCwxMyArNzQ1LDEz
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXMKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGlmICghdjIuaXNDZWxsKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHYyLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpOworICAgICAgICAgICAgcmV0dXJuIHYyLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAodjIuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAgICAgICAg
ICAgaWYgKCF2MS5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICByZXR1cm4gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgICAgICByZXR1cm4g
djEuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2MS5pc09i
amVjdCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJ
KHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK0NPTVBJTEVfQVNTRVJUKHNpemVvZihKU0NlbGwpID09IHNpemVvZih1aW50NjRfdCksIGpz
Y2VsbF9pc19laWdodF9ieXRlcyk7CiBTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoSlNDZWxsKTsKIAogdm9pZCBKU0NlbGw6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQpAQCAt
OTAsNyArOTEsNyBAQCB2b2lkIEpTQ2VsbDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50
b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1
ZSwgc2xvdCk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dCh0
aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlND
ZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBp
ZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpAQCAtMTAxLDE5ICsx
MDIsMTkgQEAgdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeAogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmpl
Y3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZh
bHVlLCBzaG91bGRUaHJvdyk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKIH0KIAogYm9vbCBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgaWRlbnRpZmllcikKIHsKICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOworICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwg
ZXhlYywgaWRlbnRpZmllcik7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIpCiB7
CiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7
CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllcik7CiB9CiAKIEpTVmFs
dWUgSlNDZWxsOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2Rl
IGVjbWFNb2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIK
ICNpbmNsdWRlICJDb25zdHJ1Y3REYXRhLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUg
IkluZGV4aW5nVHlwZS5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkpTVHlwZUlu
Zm8uaCIKICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBl
LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCkBAIC05Miw5ICs5NCwxNSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpbmhlcml0cyhjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKICAgICBib29sIGlz
QVBJVmFsdWVXcmFwcGVyKCkgY29uc3Q7CiAKKyAgICBKU1R5cGUgdHlwZSgpIGNvbnN0OworICAg
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdDsKKyNpZm5kZWYgTkRFQlVHCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmVTbG93KCkgY29uc3Q7CisjZW5kaWYKICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSgpIGNvbnN0OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKFZNJikgY29uc3Q7
CiAgICAgdm9pZCBzZXRTdHJ1Y3R1cmUoVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIGNsZWFy
U3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZS5jbGVhcigpOyB9CisgICAgdm9pZCBjbGVhclN0cnVj
dHVyZSgpIHsgbV9zdHJ1Y3R1cmVJRCA9IDA7IH0KIAogICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFt
ZSgpOwogCkBAIC0xMjEsNiArMTI5LDcgQEAgcHVibGljOgogICAgIC8vIE9iamVjdCBvcGVyYXRp
b25zLCB3aXRoIHRoZSB0b09iamVjdCBvcGVyYXRpb24gaW5jbHVkZWQuCiAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdDsKICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9k
VGFibGUoKSBjb25zdDsKKyAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGUoVk0mKSBj
b25zdDsKICAgICBjb25zdCBNZXRob2RUYWJsZSogbWV0aG9kVGFibGVGb3JEZXN0cnVjdGlvbigp
IGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKQEAgLTEzNSwyMCArMTQ0LDI2IEBAIHB1YmxpYzoKIAogICAg
IEpTVmFsdWUgZmFzdEdldE93blByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQorICAgIHN0YXRpYyBwdHJk
aWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0NlbGwsIG1fc3RydWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0NlbGwsIG1fc3RydWN0dXJlSUQpOwogICAgIH0KIAotICAgIHZvaWQqIHN0cnVjdHVy
ZUFkZHJlc3MoKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9GbGFnc09mZnNldCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlOworICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQ2VsbCwgbV9mbGFncyk7CiAgICAgfQotICAgICAgICAKLSNpZiBFTkFCTEUo
R0NfVkFMSURBVElPTikKLSAgICBTdHJ1Y3R1cmUqIHVudmFsaWRhdGVkU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxpZGF0ZWRHZXQoKTsgfQotI2VuZGlmCi0gICAgICAgIAor
CisgICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fdHlwZSk7CisgICAgfQorCisgICAg
c3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1faW5kZXhpbmdUeXBlKTsKKyAgICB9CisKICAg
ICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gTm90
VHlwZWRBcnJheTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDggKzE4NSwxMiBAQCBwcm90ZWN0ZWQ6
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLSAg
ICAgICAgCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisKKyAgICBT
dHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlw
ZTsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgbV9m
bGFnczsKKyAgICB1aW50OF90IG1fdW51c2VkOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVG8s
IHR5cGVuYW1lIEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDEx
IEBAIGlubGluZSBKU0NlbGw6OkpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFQKICAgICBBU1NFUlQo
IWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CiAKLWlubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogbV9zdHJ1Y3R1cmUodm0sIHRoaXMsIHN0
cnVjdHVyZSkKK2lubGluZSBKU0NlbGw6OkpTQ2VsbChWTSYsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIDogbV9zdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUtPmlkKCkpCisgICAgLCBtX2luZGV4aW5n
VHlwZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQorICAgICwgbV90eXBlKHN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkpCisgICAgLCBtX2ZsYWdzKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5p
bmxpbmVUeXBlRmxhZ3MoKSkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7
CiB9CkBAIC01Niw3ICs1OSw3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHYKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgIEFTU0VSVCht
X3N0cnVjdHVyZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9p
ZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENy
ZWF0aW5nRWFybHlDZWxsVGFnKQpAQCAtNjQsMjMgKzY3LDU0IEBAIGlubGluZSB2b2lkIEpTQ2Vs
bDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICBB
U1NFUlQodm0uaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAgICAgdm0uc2V0SW5pdGlhbGl6aW5n
T2JqZWN0Q2xhc3MoMCk7Ci0gICAgaWYgKHN0cnVjdHVyZSkKKyAgICBpZiAoc3RydWN0dXJlKSB7
CisjZW5kaWYKKyAgICAgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAg
ICAgbV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgICAgICBt
X3R5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgICAgICBtX2ZsYWdzID0g
c3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpOworI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgot
ICAgICAgICBtX3N0cnVjdHVyZS5zZXRFYXJseVZhbHVlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwog
ICAgIC8vIFZlcnkgZmlyc3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0
cnVjdHVyZS4KLSAgICBBU1NFUlQobV9zdHJ1Y3R1cmUgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKG1fc3RydWN0dXJlSUQgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7
Cit9CisKK2lubGluZSBKU1R5cGUgSlNDZWxsOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV90eXBlOworfQorCitpbmxpbmUgSW5kZXhpbmdUeXBlIEpTQ2VsbDo6aW5kZXhpbmdUeXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4o
dGhpcykgJiAweDAwMDAwMGZmMDAwMDAwMDApID4+IDMyOwogfQogCiBpbmxpbmUgU3RydWN0dXJl
KiBKU0NlbGw6OnN0cnVjdHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLmdl
dCgpOworICAgIHJldHVybiBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1fc3RydWN0dXJlSUQpOworfQorCisjaWZuZGVmIE5ERUJVRworaW5saW5lIFN0cnVjdHVyZSog
SlNDZWxsOjpzdHJ1Y3R1cmVTbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gSGVhcDo6aGVhcCh0
aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX3N0cnVjdHVyZUlEKTsKK30KKyNlbmRpZgor
CitpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZShWTSYgdm0pIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtX3N0cnVjdHVyZUlEKTsK
IH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTUFSS19MT0dfUEFSRU5UKHZpc2l0b3IsIGNlbGwp
OwogCi0gICAgdmlzaXRvci5hcHBlbmQoJmNlbGwtPm1fc3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOworICAgIHZpc2l0b3IuYXBwZW5kVW5i
YXJyaWVyZWRQb2ludGVyKCZzdHJ1Y3R1cmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpA
QCAtMTE2LDM3ICsxNTAsNDEgQEAgaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlNDZWxsKiBj
ZWxsKQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9zdHJ1Y3R1cmUtPmlzT2JqZWN0KCk7CisgICAgcmV0dXJuIFR5cGVJbmZvOjppc09iamVj
dChtX3R5cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGU7
CisgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0Nl
bGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IEdldHRlclNldHRlclR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9
PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJveHkoKSBj
b25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gUHJv
eHlUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gUHJveHlUeXBlOwogfQogCiBpbmxpbmUgYm9v
bCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3JhcHBlclR5cGU7CisgICAgcmV0
dXJuIG1fdHlwZSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOwogfQogCiBpbmxpbmUgdm9pZCBKU0Nl
bGw6OnNldFN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpID09IHRo
aXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9zdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpKTsKLSAgICBBU1NFUlQoIW1fc3RydWN0dXJlCi0gICAgICAgIHx8IG1fc3RydWN0dXJlLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpCi0gICAgICAgIHx8IG1f
c3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZSk7Ci0gICAgbV9zdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IHRo
aXMtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSk7CisgICAgQVNTRVJUKCF0aGlzLT5zdHJ1Y3R1
cmUoKQorICAgICAgICB8fCB0aGlzLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNocG9pbnRT
ZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQorICAgICAgICB8fCBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZS0+aWQoKSkgPT0gc3RydWN0dXJlKTsKKyAgICB2
bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1cmUpOworICAgIG1fc3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgbV9mbGFncyA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5p
bmxpbmVUeXBlRmxhZ3MoKTsKKyAgICBtX3R5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpOworICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKIH0K
IAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlRm9yRGVzdHJ1
Y3Rpb24oKSBjb25zdApAQCAtMTU2LDEwICsxOTQsMjAgQEAgaW5saW5lIGNvbnN0IE1ldGhvZFRh
YmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6
bWV0aG9kVGFibGUoKSBjb25zdAogewotICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1Y3R1cmUg
PSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gc3Ry
dWN0dXJlLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm9vdFN0cnVjdHVy
ZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKLSAgICByZXR1cm4gJmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZTsKKyAgICByZXR1cm4gJnN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlOworfQorCitpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9k
VGFibGUoVk0mIHZtKSBjb25zdAoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gc3RydWN0
dXJlLT5zdHJ1Y3R1cmUoKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocm9vdFN0cnVjdHVyZSA9
PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CisKKyAgICByZXR1cm4gJnN0cnVjdHVyZS0+
Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmluaGVy
aXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKQEAgLTE3MywxMCArMjIxLDExIEBAIGlu
bGluZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3MKIC8vIGNhc2UgYnkgY2hlY2tp
bmcgd2hldGhlciB0aGUgaGFzaCBoYXMgeWV0IGJlZW4gc2V0IGZvciB0aGlzIHN0cmluZy4KIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBKU0NlbGw6OmZhc3RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBpZiAoIXN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCgpICYmICFzdHJ1Y3R1cmUoKS0+aGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSAmJiAhc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKCkpIHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gbmFtZS5pbXBsKCkt
Pmhhc0hhc2goKQotICAgICAgICAgICAgPyBzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIElk
ZW50aWZpZXIoZXhlYywgbmFtZSkpCi0gICAgICAgICAgICA6IHN0cnVjdHVyZSgpLT5nZXQoZXhl
Yy0+dm0oKSwgbmFtZSk7CisgICAgICAgICAgICA/IHN0cnVjdHVyZS0+Z2V0KGV4ZWMtPnZtKCks
IElkZW50aWZpZXIoZXhlYywgbmFtZSkpCisgICAgICAgICAgICA6IHN0cnVjdHVyZS0+Z2V0KGV4
ZWMtPnZtKCksIG5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpCiAg
ICAgICAgICAgICByZXR1cm4gYXNPYmplY3QodGhpcyktPmxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNl
dCktPmdldCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3
IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKAogICAgIFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKAotICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLAorICAg
ICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKERhdGFWaWV3VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksCiAgICAgICAgIE5vbkFycmF5KTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTAg
QEAgaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZgogewogICAgIGlmIChN
YXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxv
Y2s6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9O
KQotICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgcmV0dXJuIHN0cnVjdHVyZVNsb3coKS0+Y2xhc3NJbmZvKCk7
CiAjZWxzZQotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCk7CisgICAgcmV0dXJu
IHN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMTU5NDI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4
UHJvcGVydHlOCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RGdW5jdGlvbigpICYmIChtb2Rl
ID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBw
cm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iamVjdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBzbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBzbG90KTsKIAogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYXJndW1lbnRzKTsKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmNhbGxlcik7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBKU0Z1bmN0
aW9uOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90
eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRl
bgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4x
Mi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5j
bGVhcigpOwogICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dC5ub3RpZnlXcml0ZSgpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hl
ZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9hbGxvY2F0aW9uUHJvZmlsZS4KQEAgLTQz
Miw3ICs0MzIsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blByb3BlcnR5KEpTT2JqCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0
IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVs
ZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB0aGlzT2Jq
ZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1f
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50Lm5vdGlmeVdyaXRlKCk7CiAgICAgICAgIHJldHVy
biBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVz
Y3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCShyZXZpc2lvbiAx
NTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDQxIEBAIHB1YmxpYzoKICAg
ICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSk7Cisg
ICAgICAgIEpTVHlwZSB0eXBlOworICAgICAgICBzd2l0Y2ggKEFkYXB0b3I6OnR5cGVWYWx1ZSkg
eworICAgICAgICBjYXNlIFR5cGVJbnQ4OgorICAgICAgICAgICAgdHlwZSA9IEludDhBcnJheVR5
cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlSW50MTY6CisgICAgICAg
ICAgICB0eXBlID0gSW50MTZBcnJheVR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBUeXBlSW50MzI6CisgICAgICAgICAgICB0eXBlID0gSW50MzJBcnJheVR5cGU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlVWludDg6CisgICAgICAgICAgICB0eXBl
ID0gVWludDhBcnJheVR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBl
VWludDhDbGFtcGVkOgorICAgICAgICAgICAgdHlwZSA9IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFR5cGVVaW50MTY6CisgICAgICAgICAg
ICB0eXBlID0gVWludDE2QXJyYXlUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVHlwZVVpbnQzMjoKKyAgICAgICAgICAgIHR5cGUgPSBVaW50MzJBcnJheVR5cGU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlRmxvYXQzMjoKKyAgICAgICAgICAgIHR5
cGUgPSBGbG9hdDMyQXJyYXlUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
VHlwZUZsb2F0NjQ6CisgICAgICAgICAgICB0eXBlID0gRmxvYXQ2NEFycmF5VHlwZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKHR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSk7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOyAvLyBUaGlz
IGlzIG5ldmVyIGFjY2Vzc2VkIGRpcmVjdGx5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmth
Z2Ugb24gc29tZSBjb21waWxlcnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0xvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTTG9jay5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgSlNMb2Nr
OjpKU0xvY2soVk0qIHZtKQogICAgICwgbV92bSh2bSkKIHsKICAgICBtX3NwaW5Mb2NrLkluaXQo
KTsKKyAgICBWTTo6c2V0Q3VycmVudFZNKHZtKTsKIH0KIAogSlNMb2NrOjp+SlNMb2NrKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9u
IDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDkgQEAgc3RhdGljIHVuc2lnbmVkIGxhc3RBcnJh
eVNpemUgPSAwOwogCiBKU0NlbGwqIGdldENhbGxhYmxlT2JqZWN0U2xvdyhKU0NlbGwqIGNlbGwp
CiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKLSAgICBp
ZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKKyAgICBp
ZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQogICAgICAgICByZXR1cm4gY2VsbDsK
LSAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEludGVybmFsRnVu
Y3Rpb246OmluZm8oKSkpCisgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+
aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCiAgICAgICAgIHJldHVybiBj
ZWxsOwogICAgIHJldHVybiAwOwogfQpAQCAtMjQ4LDExICsyNDcsMTIgQEAgdm9pZCBKU0ZpbmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbAogICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpc09iamVjdC0+c3RydWN0dXJlKCk7CiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlz
T2JqZWN0LT5idXR0ZXJmbHkoKTsKICAgICBpZiAoYnV0dGVyZmx5KQotICAgICAgICB0aGlzT2Jq
ZWN0LT52aXNpdEJ1dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT5vdXRPZkxpbmVTaXplKCkpOworICAgICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRl
cmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKIAot
ICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVT
aXplKCk7CisgICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gc3RydWN0dXJlLT5pbmxpbmVTaXplKCk7
CiAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBz
dG9yYWdlU2l6ZSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yNzQsOSArMjc0LDkgQEAg
Ym9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgIC8vIGdldE93blBy
b3BlcnR5U2xvdEJ5SW5kZXgoKS4KICAgICAKICAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkK
LSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsK
KyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBp
KSwgc2xvdCk7CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7
CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJ
REVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBicmVhazsKQEAgLTM1OCwxMCArMzU4LDEwIEBA
IHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICAvLyBDaGVjayBp
ZiB0aGVyZSBhcmUgYW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWlu
CiAgICAgSlNWYWx1ZSBwcm90b3R5cGU7CiAgICAgaWYgKHByb3BlcnR5TmFtZSAhPSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIGZvciAoSlNPYmplY3Qq
IG9iaiA9IHRoaXNPYmplY3Q7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVy
U2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlw
ZSkpIHsKKyAgICAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgIW9iai0+c3Ry
dWN0dXJlKHZtKS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQ
cm90bygpOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgICAgICBwcm90b3R5
cGUgPSBvYmotPnByb3RvdHlwZSgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwo
KSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnBy
b3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUp
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnBy
b3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUp
KTsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9i
amVjdCh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkp
CiAgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTM3NCwxMCArMzc0LDEw
IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBmb3IgKG9i
aiA9IHRoaXNPYmplY3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1
bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldCh2bSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9m
ZnNldCkpIHsKICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWlu
TWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0
aGlzT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJl
KHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3Bl
cnR5TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOwogICAgICAgICAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKCF0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOworICAgIEFTU0VSVCgh
dGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9y
ZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOwogICAg
IGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xv
dC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybjsK
QEAgLTQxMiwxMSArNDEyLDExIEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBj
ZWxsLCAKICAgICAKICAgICBpZiAocHJvcGVydHlOYW1lID4gTUFYX0FSUkFZX0lOREVYKSB7CiAg
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHNob3VsZFRocm93KTsKLSAgICAgICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3QpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBicmVhazsKICAg
ICAgICAgCkBAIC01NDcsNyArNTQ3LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW50ZXJE
aWN0aW9uYXJ5SQogICAgIH0KIAogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBC
dXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJh
eSh2bSwgdGhpcywgc3RydWN0dXJlKCksIDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7Cisg
ICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXpl
QXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSh2bSksIDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigw
KSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0dGVyZmx5KTsKICAgICAKICAgICBtX2J1dHRl
cmZseSA9IG5ld0J1dHRlcmZseTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAKIHZvaWQgSlNPYmplY3Q6OmVudGVyRGljdGlvbmFy
eUluZGV4aW5nTW9kZShWTSYgdm0pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExf
QkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpAQCAtNTg0LDcgKzU4NCw3
IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMKICAgICBpZiAobWF5
SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUoKSwgQWRkSW5kZXhlZEFjY2Vzc29ycykpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFkZEluZGV4
ZWRBY2Nlc3NvcnMpKTsKICAgICAKICAgICBpZiAoIXZtLnByb3RvdHlwZU1hcC5pc1Byb3RvdHlw
ZSh0aGlzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTk1LDEzICs1OTUsMTQgQEAgdm9pZCBKU09i
amVjdDo6bm90aWZ5UHJlc2VuY2VPZkluZGV4ZWRBYwogQnV0dGVyZmx5KiBKU09iamVjdDo6Y3Jl
YXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3Qg
ZWxlbWVudFNpemUpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0g
ICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIEluZGV4
aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKICAgICBBU1NFUlRf
VU5VU0VEKG9sZFR5cGUsICFoYXNJbmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSk7Ci0gICAgQVNT
RVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgQVNTRVJUKCFz
dHJ1Y3R1cmUtPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgIEFTU0VSVCghaW5kZXhpbmdT
aG91bGRCZVNwYXJzZSgpKTsKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChs
ZW5ndGgsIEJBU0VfVkVDVE9SX0xFTik7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBC
dXR0ZXJmbHk6OmNyZWF0ZU9yR3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIG1fYnV0dGVyZmx5LCB2
bSwgdGhpcywgc3RydWN0dXJlKCksIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBm
YWxzZSwgMCwKKyAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVj
dHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCiAgICAgICAgIGVsZW1lbnRTaXpl
ICogdmVjdG9yTGVuZ3RoKTsKICAgICBuZXdCdXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOwogICAgIG5ld0J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CkBA
IC02MTIsNyArNjEzLDcgQEAgQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbFVuZGVj
aQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1
dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKTsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVVbmRlY2lk
ZWQpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlVW5kZWNpZGVkKTsKICAgICBz
ZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsK
ICAgICByZXR1cm4gbmV3QnV0dGVyZmx5OwogfQpAQCAtNjIxLDcgKzYyMiw3IEBAIENvbnRpZ3Vv
dXNKU1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Mo
dm0uaGVhcCk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5k
ZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlSW50MzIpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSks
IEFsbG9jYXRlSW50MzIpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3Vv
dXNJbnQzMigpOwogfQpAQCAtNjMyLDcgKzYzMyw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2Jq
ZWN0OjpjcmVhdGVJbml0aWEKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUlu
aXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoZG91YmxlKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbmV3QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAg
ICAgbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwotICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSgpLCBBbGxvY2F0ZURvdWJsZSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwg
QWxsb2NhdGVEb3VibGUpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKTsKIH0KQEAgLTY0MSw3ICs2NDIsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNP
YmplY3Q6OmNyZWF0ZUluaXRpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAg
IEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZt
LCBsZW5ndGgsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgp
LCBBbGxvY2F0ZUNvbnRpZ3VvdXMpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRl
Q29udGlndW91cyk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1
cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+Y29udGlndW91cygp
OwogfQpAQCAtNjQ5LDEwICs2NTAsMTEgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpj
cmVhdGVJbml0aQogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZN
JiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgRGVm
ZXJHQyBkZWZlckdDKHZtLmhlYXApOwotICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgp
OwogICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5
cGUpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JH
cm93QXJyYXlSaWdodCgKLSAgICAgICAgbV9idXR0ZXJmbHksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUo
KSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBt
X2J1dHRlcmZseSwgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBmYWxzZSwgMCwKICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxl
bmd0aCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAKQEAgLTY2Miw3ICs2
NjQsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhCiAgICAgcmVz
dWx0LT5tX3NwYXJzZU1hcC5jbGVhcigpOwogICAgIHJlc3VsdC0+bV9udW1WYWx1ZXNJblZlY3Rv
ciA9IDA7CiAgICAgcmVzdWx0LT5tX2luZGV4QmlhcyA9IDA7Ci0gICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKCkpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBu
ZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NzQsMzQgKzY3NiwzNSBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQXJyCiAKIENvbnRpZ3VvdXNK
U1ZhbHVlcyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvSW50MzIoVk0mIHZtKQogewotICAg
IEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFsbG9jYXRlSW50MzIpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4
aW5nVHlwZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVJbnQzMikpOwogICAgIHJldHVy
biBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVz
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUoVk0mIHZtKQogewotICAgIEFTU0VS
VChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJU
KGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgCi0gICAgc2V0U3RydWN0dXJl
KHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFs
bG9jYXRlRG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsKICAgICBy
ZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAogQ29udGlndW91c0pT
VmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKFZNJiB2bSkKIHsK
LSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwot
ICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNp
ZGVkKGluZGV4aW5nVHlwZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3Vz
KSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mIHZtLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIHVuc2lnbmVkIHB1Ymxp
Y0xlbmd0aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBwcm9w
ZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgdW5z
aWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsKKyAgICB1
bnNpZ25lZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
OworICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgp
OwogICAgIAogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVV
bmluaXRpYWxpemVkKAogICAgICAgICB2bSwgdGhpcywgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5lZWRlZExlbmd0aCkpOwpAQCAtNzI0LDEyICs3Mjcs
MTIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9u
UHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsK
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY29uc3Ry
dWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVk
TGVuZ3RoKTsKICAgICAvLyBObyBuZWVkIHRvIGNvcHkgZWxlbWVudHMuCiAgICAgCi0gICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRy
YW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJl
LCBzdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CkBAIC03NDEs
MTIgKzc0NCwxMiBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkCiAK
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShW
TSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0
dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3Vn
Z2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKIH0KIAogQ29udGlndW91c0RvdWJsZXMg
SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFz
SW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMy
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogY3VycmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV07CkBAIC03NjAs
MjEgKzc2MywyMSBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyCiAg
ICAgICAgICpjdXJyZW50QXNEb3VibGUgPSB2LmFzSW50MzIoKTsKICAgICB9CiAgICAgCi0gICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFsbG9jYXRlRG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3Vi
bGUpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAog
Q29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMoVk0m
IHZtKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKLSAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUoKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250
aWd1b3VzKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZNJiB2bSwg
Tm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkK
IHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVj
dENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExl
bmd0aCk7CkBAIC03ODYsNyArNzg5LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dEludDMyVG9BcgogICAgICAgICBuZXdTdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAg
ICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUodm0pLCB0cmFuc2l0aW9uKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJm
bHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVy
biBuZXdTdG9yYWdlOwogfQpAQCAtNzk4LDEzICs4MDEsMTMgQEAgQXJyYXlTdG9yYWdlKiBKU09i
amVjdDo6Y29udmVydEludDMyVG9BcgogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRv
QXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNp
dGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVj
dHVyZSh2bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHRlbXBs
YXRlPEpTT2JqZWN0OjpEb3VibGVUb0NvbnRpZ3VvdXNNb2RlIG1vZGU+CiBDb250aWd1b3VzSlNW
YWx1ZXMgSlNPYmplY3Q6OmdlbmVyaWNDb252ZXJ0RG91YmxlVG9Db250aWd1b3VzKFZNJiB2bSkK
IHsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAg
ZG91YmxlKiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CkBA
IC04MjcsNyArODMwLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpnZW5lcmljQ29u
dgogICAgICAgICBjdXJyZW50QXNWYWx1ZS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAg
ICB9CiAgICAgCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOworICAgIHNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSh2bSksIEFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29u
dGlndW91cygpOwogfQogCkBAIC04NDQsNyArODQ3LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjpyYWdlQ29udmVydAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJs
ZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24s
IHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgQVNTRVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9y
YWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENv
cHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTg1NSw3ICs4NTgsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAgICAgICAgIG5ld1N0b3Jh
Z2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRpb24p
OwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdTdG9y
YWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC04NjcsMTMg
Kzg3MCwxMyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAKIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0p
CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJl
KCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnZl
cnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlT
dG9yYWdlVHJhbnNpdGlvbigpKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0
cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSk7CiAg
ICAgCiAgICAgQXJyYXlTdG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJy
YXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAg
LTg4NCw3ICs4ODcsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91
CiAgICAgICAgIG5ld1N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAg
Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSh2bSksIHRyYW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3
U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3Jh
Z2U7CiB9CkBAIC04OTYsNyArODk5LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dENvbnRpZ3VvdQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1Rv
QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRp
b24oKSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN0
cnVjdHVyZSh2bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHZv
aWQgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFs
dWUpCkBAIC05NTIsOSArOTU1LDkgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1
cmVJbnQzMgogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYg
KFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNT
bG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJl
U3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAgICAgICAgIHJldHVybiBjcmVh
dGVJbml0aWFsSW50MzIodm0sIDApOwogICAgICAgICAKQEAgLTk3Niw5ICs5NzksOSBAQCBDb250
aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlRG91YmxlCiB7CiAgICAgQVNTRVJUKGluaGVy
aXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5L
X0lOREVYSU5HX1RZUEVTOgotICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNw
YXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKKyAgICAgICAg
aWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUodm0pLT5u
ZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBDb250aWd1b3VzRG91
YmxlcygpOwogICAgICAgICByZXR1cm4gY3JlYXRlSW5pdGlhbERvdWJsZSh2bSwgMCk7CiAgICAg
ICAgIApAQCAtMTAwMiw5ICsxMDA1LDkgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpl
bnN1cmVDb250aQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBz
d2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAg
aWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVl
ZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3Vs
ZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAgICAgICAgIHJldHVybiBj
cmVhdGVJbml0aWFsQ29udGlndW91cyh2bSwgMCk7CiAgICAgICAgIApAQCAtMTA0Miw3ICsxMDQ1
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogewogICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNl
IEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5n
U2hvdWxkQmVTcGFyc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdl
RXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKQEAgLTEwNTAsMjIgKzEw
NTMsMjIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogICAgICAg
ICAKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIEFTU0VS
VCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUo
KS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAgIEFTU0VSVCghc3RydWN0dXJlKHZt
KS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAgIHJldHVybiBjb252ZXJ0VW5kZWNp
ZGVkVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRF
WElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwot
ICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKKyAg
ICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAg
ICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBBU1NFUlQoIWluZGV4
aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm5lZWRz
U2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2bSktPm5lZWRz
U2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19U
WVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkpOwotICAgICAg
ICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAg
QVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKICAgICAgICAg
cmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAg
ICBkZWZhdWx0OgpAQCAtMTA3Niw3ICsxMDc5LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6
ZW5zdXJlQXJyYXlTdG9yYQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0
b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAg
IHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOiB7CiAgICAg
ICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCk7CiAgICAgICAgIFNwYXJzZUFycmF5VmFs
dWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwpAQCAtMTEwNyw3ICsxMTEw
LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogCiB2b2lkIEpT
T2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5
cGUoKSkgewogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBBbGxvY2F0ZVNsb3dQdXRBcnJheVN0
b3JhZ2UpOwogICAgICAgICBicmVhazsKQEAgLTExMjYsNyArMTEyOSw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OnN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmEKICAgICAgICAgCiAgICAgY2FzZSBOb25BcnJh
eVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6IHsKLSAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIFN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSk7Cisg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIFN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSk7
CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTE0Myw3ICsxMTQ2LDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBl
KFZNJiB2bSwgSlNWYQogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3QoKSkKICAgICAgICAgdm0u
cHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZShhc09iamVjdChwcm90b3R5cGUpKTsKICAgICAKLSAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3RvdHlwZSk7CisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSh2bSksIHByb3RvdHlwZSk7CiAgICAgc2V0U3RydWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUp
OwogICAgIAogICAgIGlmICghbmV3U3RydWN0dXJlLT5hbnlPYmplY3RJbkNoYWluTWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCkBAIC0xMTU0LDEwICsxMTU3LDEwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEpTVmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkpCisgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlw
ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaFRvU2xvd1B1dEFycmF5U3Rv
cmFnZSh2bSk7CkBAIC0xMTY1LDcgKzExNjgsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGUoVk0mIHZtLCBKU1ZhCiAKIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNo
ZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgQVNTRVJUKG1l
dGhvZFRhYmxlKCktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsK
KyAgICBBU1NFUlQobWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnRvVGhpcyh0aGlzLCBleGVjLCBO
b3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBwcm90
b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVj
dCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMpCkBAIC0xMjA0LDEyICsx
MjA3LDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3IKICAgICAv
LyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBjaGFuZ2Ugb3Vy
IFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIg
b3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpO
ZXdQcm9wZXJ0eSkKLSAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0
ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5n
ZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcykp
OwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAg
IGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgIHN0cnVjdHVyZSgpLT5zZXRDb250
YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5z
UmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29y
ZVByb3RvKTsKKyAgICBzdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMocHJv
cGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90byk7CiB9CiAKIGJv
b2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSkgY29uc3QKQEAgLTEyMzEsMjQgKzEyMzUsMjUgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogICAgIAogICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0
eU5hbWUuYXNJbmRleCgpOwogICAgIGlmIChpICE9IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCkK
LSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpKTsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaSk7CiAKICAgICBpZiAoIXRoaXNPYmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKSkKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZWxldGUo
ZXhlYyk7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZTsKLSAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0
KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSAmJiAhZXhlYy0+dm0oKS5pc0lu
RGVmaW5lT3duUHJvcGVydHkoKSkKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmIChp
c1ZhbGlkT2Zmc2V0KHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPmdldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0
ZXMgJiBEb250RGVsZXRlICYmICF2bS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpc09iamVjdC0+cmVtb3ZlRGlyZWN0KGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdCh2
bSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLy8g
TG9vayBpbiB0aGUgc3RhdGljIGhhc2h0YWJsZSBvZiBwcm9wZXJ0aWVzCiAgICAgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSA9IHRoaXNPYmplY3QtPmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShleGVjLCBw
cm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewotICAgICAgICBpZiAoZW50cnktPmF0dHJp
YnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZtKCkuaXNJbkRlZmluZU93blByb3BlcnR5
KCkpCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRG9udERlbGV0ZSAmJiAhdm0u
aXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHRo
aXMgYnVpbHRpbiBwcm9wZXJ0eSBjYW4ndCBiZSBkZWxldGVkCiAKICAgICAgICAgcHV0RW50cnko
ZXhlYywgZW50cnksIHByb3BlcnR5TmFtZSwganNVbmRlZmluZWQoKSwgdGhpc09iamVjdCk7CkBA
IC0xMjYwLDcgKzEyNjUsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlCiBib29sIEpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
cyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlTbG90KGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKSwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRo
aXMpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KGNvbnN0X2Nh
c3Q8SlNPYmplY3QqPih0aGlzKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBpKQpAQCAtMTI2OCw5ICsxMjczLDkgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiAgICAgCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgp
Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICAgICAg
cmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICAKLSAg
ICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
IHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM0Myw3ICsxMzQ4LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBjYWxsRGVmYXVsdAogCiBib29sIEpTT2JqZWN0OjpnZXRQcmltaXRp
dmVOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0
KSBjb25zdAogewotICAgIHJlc3VsdCA9IG1ldGhvZFRhYmxlKCktPmRlZmF1bHRWYWx1ZSh0aGlz
LCBleGVjLCBQcmVmZXJOdW1iZXIpOworICAgIHJlc3VsdCA9IG1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWZhdWx0VmFsdWUodGhpcywgZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBudW1iZXIg
PSByZXN1bHQudG9OdW1iZXIoZXhlYyk7CiAgICAgcmV0dXJuICFyZXN1bHQuaXNTdHJpbmcoKTsK
IH0KQEAgLTEzODYsMTIgKzEzOTEsMTMgQEAgY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6Zmlu
ZFByb3BlcnR5SAogCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVHlwZUluZm8gaW5mbyA9IHN0
cnVjdHVyZSh2bSktPnR5cGVJbmZvKCk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZh
bHVlLCBnZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOwogICAgIGlm
IChpbmZvLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gbWV0aG9kVGFi
bGUoKS0+Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIGV4ZWMtPnZt
KCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMs
ICJpbnN0YW5jZW9mIiAsIHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOworICAgIHZtLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIg
LCB0aGlzKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNDE1LDggKzE0MjEsOSBAQCBi
b29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0CiAKIGJvb2wgSlNPYmplY3Q6
OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChpc1ZhbGlk
T2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpY1ZhbHVlKSkpCisgICAgaWYgKGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKHZt
KS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0
aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC0xNDI5LDE4ICsxNDM2
LDE5IEBAIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSgKIHZvaWQgSlNP
YmplY3Q6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CiB7CiAgICAgcHJvcGVydHlOYW1lcy5zZXRCYXNlT2JqZWN0KG9iamVjdCk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAg
ICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2Jq
ZWN0KG9iamVjdC0+cHJvdG90eXBlKCkpOwogICAgIHdoaWxlKDEpIHsKLSAgICAgICAgaWYgKHBy
b3RvdHlwZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cygpKSB7Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICAgICAgaWYg
KHByb3RvdHlwZS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0
eU5hbWVzKCkpIHsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQ
cm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBt
b2RlKTsKKyAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgSlNW
YWx1ZSBuZXh0UHJvdG8gPSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4
dFByb3RvLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDU0LDcgKzE0NjIsNyBA
QCB2b2lkIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqCiAgICAgLy8gRklYTUU6
IEZpbGxpbmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBp
bnRlZ2VyCiAgICAgLy8gaXMgaW5jcmVkaWJseSBpbmVmZmljaWVudCBmb3IgbGFyZ2UgYXJyYXlz
LiBXZSBuZWVkIGEgZGlmZmVyZW50IGFwcHJvYWNoLAogICAgIC8vIHdoaWNoIGFsbW9zdCBjZXJ0
YWlubHkgbWVhbnMgYSBkaWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9wZXJ0eU5hbWVBcnJheS4K
LSAgICBzd2l0Y2ggKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
c3dpdGNoIChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBicmVhazsKQEAgLTE1MTMsMTUgKzE1MjEsMTYgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iagogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KICAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4
UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIEpTT2JqZWN0
OjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
IG1vZGUpCiB7CiAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJ
bmZvKCksIHByb3BlcnR5TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmll
ZCgpKTsKIAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBjYW5DYWNoZVByb3Bl
cnRpZXNGcm9tU3RydWN0dXJlID0gIXByb3BlcnR5TmFtZXMuc2l6ZSgpOwotICAgIG9iamVjdC0+
c3RydWN0dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHBy
b3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVy
dHlOYW1lc0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAgICAgaWYg
KGNhbkNhY2hlUHJvcGVydGllc0Zyb21TdHJ1Y3R1cmUpCiAgICAgICAgIHByb3BlcnR5TmFtZXMu
c2V0TnVtQ2FjaGVhYmxlU2xvdHNGb3JPYmplY3Qob2JqZWN0LCBwcm9wZXJ0eU5hbWVzLnNpemUo
KSk7CkBAIC0xNTUzLDcgKzE1NjIsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2bSkKICAg
ICBpZiAoaXNTZWFsZWQodm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVudEV4dGVuc2lv
bnModm0pOwotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6c2VhbFRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSkpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZnJlZXpl
KFZNJiB2bSkKQEAgLTE1NjEsMTQgKzE1NzAsMTQgQEAgdm9pZCBKU09iamVjdDo6ZnJlZXplKFZN
JiB2bSkKICAgICBpZiAoaXNGcm96ZW4odm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVu
dEV4dGVuc2lvbnModm0pOwotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpmcmVlemVU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0
dXJlOjpmcmVlemVUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiB9CiAKIHZvaWQgSlNP
YmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKFZNJiB2bSkKIHsKICAgICBlbnRlckRpY3Rpb25hcnlJ
bmRleGluZ01vZGUodm0pOwogICAgIGlmIChpc0V4dGVuc2libGUoKSkKLSAgICAgICAgc2V0U3Ry
dWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCkpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRF
eHRlbnNpb25zVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogfQogCiAvLyBUaGlzIHBy
ZXNlbnRseSB3aWxsIGZsYXR0ZW4gdG8gYW4gdW5jYWNoYWJsZSBkaWN0aW9uYXJ5OyB0aGlzIGlz
IHN1aXRhYmxlCkBAIC0xNTgxLDEyICsxNTkwLDEyIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3Rh
dGljRnVuY3Rpb25zRm9yRGUKICAgICAvLyBJZiB0aGlzIG9iamVjdCdzIENsYXNzSW5mbyBoYXMg
bm8gc3RhdGljIHByb3BlcnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlmeSEKICAgICAvLyBXZSBj
YW4gc2FmZWx5IHNldCB0aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5zaXZlIGNoZWNrIGFnYWlu
IGluIHRoZSBmdXR1cmUuCiAgICAgaWYgKCFjbGFzc0luZm8oKS0+aGFzU3RhdGljUHJvcGVydGll
cygpKSB7Ci0gICAgICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7
CisgICAgICAgIHN0cnVjdHVyZSh2bSktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc3RydWN0dXJlKCktPmlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgaWYg
KCFzdHJ1Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgICAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiAKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9
IGNsYXNzSW5mbygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAg
Y29uc3QgSGFzaFRhYmxlKiBoYXNoVGFibGUgPSBpbmZvLT5wcm9wSGFzaFRhYmxlKGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCkpOwpAQCAtMTU5OSwyNCArMTYwOCwyNSBAQCB2b2lkIEpTT2Jq
ZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
dHJ1Y3R1cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOworICAgIHN0cnVjdHVyZSh2
bSktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAogYm9vbCBKU09iamVjdDo6cmVt
b3ZlRGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAo
IWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghaXNW
YWxpZE9mZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBpZiAoc3RydWN0
dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgb2Zmc2V0ID0gc3Ry
dWN0dXJlKCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFt
ZSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgeworICAg
ICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24o
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9m
ZnNldCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNldFN0cnVjdHVyZSh2
bSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZz
ZXQpKTsKICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBwdXREaXJlY3RVbmRlZmluZWQob2Zmc2V0KTsKQEAgLTE4NDUsNyArMTg1NSw3
IEBAIGJvb2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPElu
ZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlPgogdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9u
ZFZlY3Rvckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
aSwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQoKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKKyAgICBBU1NFUlQo
KGluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwog
ICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKICAgICAKICAgICAvLyBGb3Ig
dXMgdG8gZ2V0IGhlcmUsIHRoZSBpbmRleCBpcyBlaXRoZXIgZ3JlYXRlciB0aGFuIHRoZSBwdWJs
aWMgbGVuZ3RoLCBvciBncmVhdGVyIHRoYW4KQEAgLTE5NzQsNyArMTk4NCw3IEBAIHZvaWQgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAvLyBpIHNob3VsZCBiZSBhIHZh
bGlkIGFycmF5IGluZGV4IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCiAg
ICAgQVNTRVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhp
bmdTaG91bGRCZVNwYXJzZSgpKSB7CiAgICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKQEAgLTE5ODcsNyArMTk5Nyw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAgICAgICAgICAgICBleGVjLCBpLCB2
YWx1ZSwgc2hvdWxkVGhyb3csIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5uZWVkc1Ns
b3dQdXRJbmRleGluZygpKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSA9IGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCgwLCAw
LCBpICsgMSkpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlz
LCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CkBA
IC0yMDQyLDcgKzIwNTIsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZl
Y3RvCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICAvLyBpIHNob3VsZCBiZSBh
IHZhbGlkIGFycmF5IGluZGV4IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3Iu
Ci0gICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNT
RVJUKGFycmF5U3RvcmFnZSgpID09IHN0b3JhZ2UpOwogICAgIEFTU0VSVChpID49IHN0b3JhZ2Ut
PnZlY3Rvckxlbmd0aCgpIHx8IGF0dHJpYnV0ZXMpOwogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJB
WV9JTkRFWCk7CkBAIC0yMTI0LDcgKzIxMzQsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bmRleEJleW9uZFZlY3RvCiAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3Nv
cikpCiAgICAgICAgIG5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKHZtKTsKICAgICAK
LSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewog
ICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IGF0dHJpYnV0ZXMpIHsKICAg
ICAgICAgICAgIHJldHVybiBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJh
eVN0b3JhZ2UoCkBAIC0yMTM1LDcgKzIxNDUsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJ
bmRleEJleW9uZFZlY3RvCiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRW
ZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZh
bHVlLCBhdHRyaWJ1dGVzLCBtb2RlLCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkp
IHsKKyAgICAgICAgaWYgKHN0cnVjdHVyZShleGVjLT52bSgpKS0+bmVlZHNTbG93UHV0SW5kZXhp
bmcoKSkgewogICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY3JlYXRlQXJyYXlT
dG9yYWdlKHZtLCBpICsgMSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKDAsIDAsIGkgKyAxKSk7CiAgICAg
ICAgICAgICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAg
ICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKQEAgLTIyNDgsNyArMjI1OCw3
IEBAIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgSlNPYmplY3Q6OmdldE5ld1YKICAgICB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGg7CiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIAotICAgIGlmIChoYXNJ
bmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYg
KGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICB2ZWN0b3JM
ZW5ndGggPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgIGxlbmd0aCA9IG1f
YnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICB9IGVsc2UgewpAQCAtMjI4Nyw3ICsyMjk3
LDcgQEAgdW5zaWduZWQgSlNPYmplY3Q6OmNvdW50RWxlbWVudHMoQnV0dGVyZgogCiB1bnNpZ25l
ZCBKU09iamVjdDo6Y291bnRFbGVtZW50cygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVY
SU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gMDsKQEAgLTIzMjYsMTAgKzIzMzYsMTEgQEAgYm9v
bCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld1Zl
Y3Rvckxlbmd0aCA9IGdldE5ld1ZlY3Rvckxlbmd0aChuZXdMZW5ndGgpOwogCiAgICAgLy8gRmFz
dCBjYXNlIC0gdGhlcmUgaXMgbm8gcHJlY2FwYWNpdHkuIEluIHRoZXNlIGNhc2VzIGEgcmVhbGxv
YyBtYWtlcyBzZW5zZS4KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSh2bSk7CiAgICAgaWYgKExJS0VMWSghaW5kZXhCaWFzKSkgewogICAgICAgICBEZWZlckdDIGRl
ZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFn
ZS0+YnV0dGVyZmx5KCktPmdyb3dBcnJheVJpZ2h0KAotICAgICAgICAgICAgdm0sIHRoaXMsIHN0
cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKKyAgICAg
ICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgdHJ1ZSwKICAgICAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgp
LCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIGlmICgh
bmV3QnV0dGVyZmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM0Myw3ICsyMzU0
LDcgQEAgYm9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2ln
bmVkIG5ld0luZGV4QmlhcyA9IHN0ZDo6bWluKGluZGV4QmlhcyA+PiAxLCBNQVhfU1RPUkFHRV9W
RUNUT1JfTEVOR1RIIC0gbmV3VmVjdG9yTGVuZ3RoKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRl
cmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSgKICAgICAgICAgdm0sIHRo
aXMsCi0gICAgICAgIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJh
eVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKKyAgICAgICAgc3RydWN0dXJlLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3Ro
KSwKICAgICAgICAgbmV3SW5kZXhCaWFzLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3
VmVjdG9yTGVuZ3RoKSk7CiAgICAgaWYgKCFuZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIzNTcsNyArMjM2OCw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9y
TGVuZ3RoKFZNJiAKIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0g
ICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBo
YXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwg
aGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwg
aGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGxlbmd0aCA+IG1fYnV0
dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVu
Z3RoID0gc3RkOjptaW4oCkBAIC0yMzY1LDExICsyMzc2LDEyIEBAIHZvaWQgSlNPYmplY3Q6OmVu
c3VyZUxlbmd0aFNsb3coVk0mIHZtLCAKICAgICAgICAgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdU
SCk7CiAgICAgdW5zaWduZWQgb2xkVmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpOwogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgbV9idXR0ZXJmbHkgPSBtX2J1dHRl
cmZseS0+Z3Jvd0FycmF5UmlnaHQoCi0gICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCisgICAgICAgIHZtLCB0aGlzLCBz
dHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAgICAg
b2xkVmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwKICAgICAgICAgbmV3VmVj
dG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgaWYgKGhhc0RvdWJsZShz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0RvdWJsZShpbmRleGlu
Z1R5cGUoKSkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkVmVjdG9yTGVuZ3RoOyBp
IDwgbmV3VmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGln
dW91c0RvdWJsZSgpLmRhdGEoKVtpXSA9IFFOYU47CiAgICAgfQpAQCAtMjM4MywxNiArMjM5NSwx
NiBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnCiAgICAgLy8gSXQn
cyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVyZSgpLCBm
b3IgdGhlIHByb3BlcnR5CiAgICAgLy8gY2FwYWNpdHksIHNpbmNlIHdlIG1pZ2h0IGhhdmUgYWxy
ZWFkeSBtdXRhdGVkIHRoZSBzdHJ1Y3R1cmUgaW4tcGxhY2UuCiAgICAgCi0gICAgcmV0dXJuIG1f
YnV0dGVyZmx5LT5ncm93UHJvcGVydHlTdG9yYWdlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgb2xk
U2l6ZSwgbmV3U2l6ZSk7CisgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5ncm93UHJvcGVydHlTdG9y
YWdlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXplKTsKIH0KIAogYm9v
bCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewogICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgaWYgKCFtZXRob2RUYWJs
ZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkK
KyAgICBpZiAoIW1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
cywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IC8qIFdvcmthcm91bmQsIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3Qgc2VhcmNoZXMg
dGhlIHByb3RvdHlwZSBjaGFpbi4gOi0oICovCi0gICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSB0
aGlzICYmIHNsb3Quc2xvdEJhc2UoKSAmJiBzbG90LnNsb3RCYXNlKCktPm1ldGhvZFRhYmxlKCkt
PnRvVGhpcyhzbG90LnNsb3RCYXNlKCksIGV4ZWMsIE5vdFN0cmljdE1vZGUpICE9IHRoaXMpCisg
ICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSB0aGlzICYmIHNsb3Quc2xvdEJhc2UoKSAmJiBzbG90
LnNsb3RCYXNlKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXMoc2xvdC5zbG90QmFz
ZSgpLCBleGVjLCBOb3RTdHJpY3RNb2RlKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKQogICAgICAgICBkZXNjcmlwdG9yLnNldEFjY2Vz
c29yRGVzY3JpcHRvcihzbG90LmdldHRlclNldHRlcigpLCBzbG90LmF0dHJpYnV0ZXMoKSk7CkBA
IC0yNDIxLDcgKzI0MzMsNyBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNTdGF0ZSog
ZXhlCiAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZERlc2NyaXB0b3IudmFsdWUoKTsKICAgICAg
ICAgdGFyZ2V0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgbmV3VmFsdWUsIGF0dHJpYnV0
ZXMgJiB+QWNjZXNzb3IpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAg
ICAgICAgICAgdGFyZ2V0LT5zdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRp
ZXMoKTsKKyAgICAgICAgICAgIHRhcmdldC0+c3RydWN0dXJlKHZtKS0+c2V0Q29udGFpbnNSZWFk
T25seVByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGF0dHJp
YnV0ZXMgJj0gflJlYWRPbmx5OwpAQCAtMjUxMSw3ICsyNTIzLDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlwdG9yIGlz
IHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9wZXJ0eQog
ICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAo
IWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKSB7Ci0gICAgICAgICAgICBtZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAg
ICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4
ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVj
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092
ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTI1MjQsNyArMjUzNiw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93
bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5
LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgbWV0
aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMs
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIHRoaXMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGlu
Z0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMjU0Niw3ICsyNTU4LDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgICAgICB9CiAg
ICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiAhZGVzY3Jp
cHRvci52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIG1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCB0aGlzLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRpbmdDdXJy
ZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CiAKQEAgLTI1NzQsNyArMjU4Niw3IEBAIGJv
b2wgSlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgZ2V0dGVyU2V0
dGVyLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZGVzY3JpcHRvci5nZXR0ZXJPYmplY3QoKSk7CiAg
ICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2lnbmVkIGF0dHJzID0gZGVzY3Jp
cHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgcHV0RGlyZWN0
QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwgQWNjZXNz
b3IpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBpZiAodmFsdWUu
aXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpKQog
ICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xMzIs
MTQgKzEzMiwxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNv
bnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5k
ZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J1
dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfQogICAgICAgICAKICAgICB1bnNpZ25lZCBn
ZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGll
cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhhc0luZGV4ZWRQ
cm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KQEAgLTE1Myw3ICsx
NTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkoZXhlYy0+dm0oKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
ICAgICB9CiAgICAgICAgIAogICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHV0RGlyZWN0
KiBtZXRob2RzOgpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGNh
bkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1ZSBnZXRJ
bmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsK
ICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1
cm4ganNOdW1iZXIobV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKS5hc0ludDMyKCkp
OwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgpAQCAtMjI2LDcg
KzIyNiw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1ZSB0cnlHZXRJbmRleFF1aWNr
bHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY1LDcgKzI2NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdHJ5R2V0SW5kZXhRdWlja2x5
KGkpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpcyk7Ci0gICAgICAgIGlmIChtZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpKQorICAgICAgICBpZiAobWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhlYywgaSwgc2xvdCkp
CiAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBpKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKICAgICB9CkBAIC0yNzksNyArMjc5LDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QodW5zaWduZWQgaSkKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwgSlNWYWx1
ZSB2KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9J
TlQzMl9JTkRFWElOR19UWVBFUzogewogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkgewpAQCAt
MzY5LDcgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBpbml0aWFsaXplSW5k
ZXgoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2gg
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzogewog
ICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9VbmRlY2lkZWQodm0sIGksIHYpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00MTgsNyArNDE4LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBi
b29sIGhhc1NwYXJzZU1hcCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRF
Q0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZ
UEVTOgpAQCAtNDM1LDcgKzQzNSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9vbCBpblNw
YXJzZUluZGV4aW5nTW9kZSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRF
Q0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZ
UEVTOgpAQCAtNDkxLDMxICs0OTEsMzUgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2V0IGZ1bmN0
aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdldERpcmVj
dChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewotICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5h
bWUpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
dm0pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwg
cHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlu
bGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQg
PyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1ZhbHVlIGdl
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRy
aWJ1dGVzKSBjb25zdAogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsK
KyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkp
OwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBnZXREaXJlY3Qob2Zm
c2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNldCBnZXREaXJlY3RP
ZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1l
KTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxp
bmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKICAgICBQcm9w
ZXJ0eU9mZnNldCBnZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lm
aWM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwotICAgICAgICBjaGVja09mZnNl
dChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpYyk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlLT5pbmxp
bmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKQEAgLTU5Miw4
ICs1OTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFsKFZNJik7CiAgICAgdm9pZCBmcmVlemUo
Vk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByZXZlbnRFeHRlbnNpb25zKFZNJik7
Ci0gICAgYm9vbCBpc1NlYWxlZChWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc1NlYWxl
ZCh2bSk7IH0KLSAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKCkt
PmlzRnJvemVuKHZtKTsgfQorICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJldHVybiBzdHJ1
Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0KKyAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyBy
ZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9CiAgICAgYm9vbCBpc0V4dGVuc2li
bGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0KICAgICBib29sIGlu
ZGV4aW5nU2hvdWxkQmVTcGFyc2UoKQogICAgIHsKQEAgLTYxNCw3ICs2MTgsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIHN0cnVjdHVyZSgpLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgdGhpcyk7Cisg
ICAgICAgIHN0cnVjdHVyZSh2bSktPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCB0aGlz
KTsKICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QKQEAg
LTY0MSw3ICs2NDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGlndW91cywgYXJyYXkgc3RvcmFn
ZSkuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkp
CisgICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAg
ICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgcmV0dXJuIGVuc3VyZUludDMyU2xvdyh2bSk7CkBAIC02NTMsNyArNjU3LDcgQEAg
cHVibGljOgogICAgIC8vIG9yIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNEb3VibGVz
IGVuc3VyZURvdWJsZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0RvdWJs
ZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNE
b3VibGUoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVE
b3VibGVTbG93KHZtKTsKQEAgLTY2Myw3ICs2NjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gaW5kZXhp
bmcgc2hvdWxkIGJlIHNwYXJzZSBvciBiZWNhdXNlIHdlJ3JlIGhhdmluZyBhIGJhZCB0aW1lLgog
ICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkp
CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAg
ICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAtNjc0LDcg
KzY3OCw3IEBAIHB1YmxpYzoKICAgICAvLyBhdHRlbXB0cyB0byBjb252ZXJ0IGVhY2ggZG91Ymxl
IHRvIGFuIGludDMyLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyByYWdlRW5zdXJlQ29udGlndW91
cyhWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91
cyhpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250
aWd1b3VzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIHJhZ2VFbnN1cmVDb250aWd1
b3VzU2xvdyh2bSk7CkBAIC02ODYsNyArNjkwLDcgQEAgcHVibGljOgogICAgIC8vIGFscmVhZHku
CiAgICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZtKQogICAgIHsKLSAg
ICAgICAgaWYgKExJS0VMWShoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgp
KSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAg
ICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VTbG93KHZtKTsKQEAg
LTczNCw3ICs3MzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3RvcmFnZS4gVGhpcyB3aWxsIGFz
c2VydCBvdGhlcndpc2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2UoKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgIH0KICAgICAg
ICAgCkBAIC03NDIsNyArNzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIG9iamVjdCBpcyBpbiBh
IG1vZGUgd2hlcmUgaXQgaGFzIGFycmF5IHN0b3JhZ2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJh
eVN0b3JhZ2VPck51bGwoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAg
ICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0
dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICAKQEAgLTgw
OCw3ICs4MTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVMZW5ndGgoVk0mIHZtLCB1
bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FSUkFZ
X0lOREVYKTsKLSAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhh
c0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMo
aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3VibGUo
aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgICAg
ICAgICAgCiAgICAgICAgIGlmIChtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkgPCBsZW5ndGgp
CiAgICAgICAgICAgICBlbnN1cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwpAQCAtODQ2LDcgKzg1
MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjdXJyZW50SW5kZXhp
bmdEYXRhKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBB
TExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KTsKQEAgLTg2Myw3ICs4NjcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZSBnZXRIb2x5SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VP
VVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKVtpXS5nZXQoKTsKQEAgLTkwMyw3ICs5MDcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB1
bnNpZ25lZCBjdXJyZW50UmVsZXZhbnRMZW5ndGgoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5
cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
Y2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9DT05USUdV
T1VTX0lOREVYSU5HX1RZUEVTOgpAQCAtOTc1LDYgKzk3OSwxMSBAQCBwcml2YXRlOgogICAgIAog
cHJvdGVjdGVkOgogICAgIEJ1dHRlcmZseSogbV9idXR0ZXJmbHk7CisKKyNpZiBVU0UoSlNWQUxV
RTMyXzY0KQorcHJpdmF0ZToKKyAgICB1aW50MzJfdCBtX3BhZGRpbmc7CisjZW5kaWYKIH07CiAK
IC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUg
aW50ZXJuYWwgc3RvcmFnZSwKQEAgLTExMDEsMzUgKzExMTAsMzUgQEAgaW5saW5lIHNpemVfdCBK
U09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9i
YWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEdsb2JhbE9i
amVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID49IFZh
cmlhYmxlT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlw
ZTsKIH0KIAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNTdGF0aWNTY29wZU9iamVjdCgpIGNv
bnN0CiB7Ci0gICAgSlNUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7
CisgICAgSlNUeXBlIHR5cGUgPSB0aGlzLT50eXBlKCk7CiAgICAgcmV0dXJuIHR5cGUgPT0gTmFt
ZVNjb3BlT2JqZWN0VHlwZSB8fCB0eXBlID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiAK
IGlubGluZSBib29sIEpTT2JqZWN0Ojppc05hbWVTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RU
eXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZTsKIH0KIAogaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OmlzQWN0aXZhdGlvbk9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlw
ZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOwogfQogCiBpbmxp
bmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEVycm9ySW5zdGFuY2VUeXBlOworICAg
IHJldHVybiB0eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpT
T2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCkBAIC0xMTkxLDEwICsxMjAwLDEyIEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cKIHsKICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7
CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpKSB7CiAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5o
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIHZhbHVl
LmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlTbG90KHNs
b3QsIHZhbHVlLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOwpAQCAtMTIx
NCw5ICsxMjI1LDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGUK
IAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBz
bG90KQogewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90KCkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoIXN0cnVj
dHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAg
ICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5saW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBt
ZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlv
biB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCkBAIC0xMjM4LDcgKzEy
NTAsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5CiB7CiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYg
KG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChvYmplY3Qs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBK
U1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdC0+cHJvdG90eXBlKCk7CiAgICAgICAgIGlmICghcHJv
dG90eXBlLmlzT2JqZWN0KCkpCkBAIC0xMjczLDE1ICsxMjg1LDE2IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUp
IHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVChw
cm9wZXJ0eU5hbWUuYXNJbmRleCgpID09IFByb3BlcnR5TmFtZTo6Tm90QW5JbmRleCk7CiAKLSAg
ICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBK
U0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1
dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVz
LCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxp
ZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lm
aWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlzbid0LAogICAgICAgICAgICAgLy8g
b3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAg
ICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+ZGVz
cGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRy
aWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0x
MzAyLDMzICsxMzE1LDMzIEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5h
bCgKIAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZs
eSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+
cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAgICAgICAgICBuZXdCdXR0ZXJmbHkg
PSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5
KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7
Ci0gICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAg
ICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJm
bHkpOworICAgICAgICBpZiAoc3RydWN0dXJlLT5wdXRXaWxsR3Jvd091dE9mTGluZVN0b3JhZ2Uo
KSkKKyAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZS0+c3VnZ2VzdGVkTmV3T3V0
T2ZMaW5lU3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFk
ZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwg
c3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNl
dCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKICAgICAg
ICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8gU2VlIGNvbW1lbnQg
b24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFzcGVjaWZpY0Z1bmN0
aW9uKQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBvZmZzZXQpOwogICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAgc3RydWN0dXJlKCkt
PnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICBzdHJ1Y3R1cmUt
PnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBzaXplX3QgY3VycmVudENh
cGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0
aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCkpIHsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5
ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIGlmIChTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0
cnVjdHVyZShzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbiwgb2Zmc2V0KSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gbV9idXR0ZXJmbHk7Ci0gICAgICAgIGlmIChj
dXJyZW50Q2FwYWNpdHkgIT0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKQotICAgICAg
ICAgICAgbmV3QnV0dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIGN1cnJlbnRDYXBh
Y2l0eSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgaWYgKGN1cnJl
bnRDYXBhY2l0eSAhPSBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpCisgICAgICAg
ICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgY3VycmVudENhcGFj
aXR5LCBuZXdTdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwogCiAgICAgICAgIHZhbGlk
YXRlT2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZz
ZXQob2Zmc2V0KSk7Ci0gICAgICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3RydWN0
dXJlLCBuZXdCdXR0ZXJmbHkpOworICAgICAgICBBU1NFUlQobmV3U3RydWN0dXJlLT5pc1ZhbGlk
T2Zmc2V0KG9mZnNldCkpOworICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5l
d1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQs
IHZhbHVlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIG5ldyBwcm9wZXJ0eTsgdHJhbnNpdGlvbnMg
d2l0aCBzcGVjaWZpYyB2YWx1ZXMgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGFibGUsCiAgICAgICAg
IC8vIHNvIGxlYXZlIHRoZSBzbG90IGluIGFuIHVuY2FjaGFibGUgc3RhdGUuCkBAIC0xMzM5LDcg
KzEzNTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAKICAg
ICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uOwotICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywg
Y3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNl
dCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0
ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNjAsNyArMTM3
Myw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIGNhc2Ug
KDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAgICAgIHNldFN0cnVj
dHVyZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVy
dHlOYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3Qs
IGRvIHRoZSBwdXQsIHJldHVybi4KQEAgLTEzNzIsNyArMTM4NSw3IEBAIGlubGluZSBib29sIEpT
T2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkg
JiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCB0aGlz
LT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9u
LCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0KCkpOwogICAgIAogICAg
IHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNWYWxpZE9m
ZnNldChvZmZzZXQpKTsKQEAgLTE0MDYsNyArMTQxOSw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRTdHJ1Y3R1cmVBbmRSZWEKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVB
bmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiB2bSwgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2Fy
eSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBuZXdTdHJ1
Y3R1cmUpOworICAgICAgICB2bSwgc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwg
bmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRhdGFQcm9w
ZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTE0MzYsMTYgKzE0NDksMTcgQEAgaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFw
KTsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYg
QWNjZXNzb3IpKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IG1fYnV0dGVyZmx5Owot
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAg
ICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0
b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUo
KS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwotICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRl
cmZseSh2bSwgc3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChzdHJ1Y3R1cmUtPnB1dFdpbGxH
cm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZM
aW5lU3RvcmFnZSh2bSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBzdHJ1Y3R1cmUt
PnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKKyAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKKyAg
ICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsK
ICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwgdmFsdWUpOwogfQogCiBpbmxpbmUgSlNWYWx1ZSBK
U09iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVU
eXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmRl
ZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBwcmVmZXJyZWRUeXBlKTsKKyAgICByZXR1cm4gbWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBwcmVmZXJyZWRUeXBl
KTsKIH0KIAogQUxXQVlTX0lOTElORSBKU09iamVjdCogUmVnaXN0ZXI6OmZ1bmN0aW9uKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7CisgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKQEAgLTc3LDYgKzc3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQcm9w
ZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVj
dCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE1
OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw1NSArNzMsNTUgQEAgU3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShj
b25zdCBKU09iamVjdAogYm9vbCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1By
b3h5Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJv
cGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNQcm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCkt
PnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCk7CisgICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3Qp
OwogfQogCiB2b2lkIEpTUHJveHk6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRU
aHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxs
KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0
aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhy
b3cpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93
KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7
Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQog
CiBib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIEpTUHJveHkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0
KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2Vs
bCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIEpTUHJveHk6OmdldFByb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlO
YW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0
aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QtPnRhcmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAogdm9pZCBKU1Byb3h5OjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
QXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTUHJv
eHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVj
dC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVj
dC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5jcHAJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNTdAogSlNPYmplY3QqIEpTU2NvcGU6Om9i
amVjdEF0U2NvcGUoSlNTY29wZSogc2NvcGUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHNj
b3BlOwotICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBX
aXRoU2NvcGVUeXBlKQorICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQog
ICAgICAgICByZXR1cm4ganNDYXN0PEpTV2l0aFNjb3BlKj4ob2JqZWN0KS0+b2JqZWN0KCk7CiAK
ICAgICByZXR1cm4gb2JqZWN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNs
b3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNO
b3RaZXJvKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRP
Zkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9
CkBAIC0xNzQsNiArMTc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwor
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5pc051bGwoKTsgfQpAQCAtNDk3LDcg
KzQ5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxs
KCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQorICAg
IGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYm
IHYuYXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBlOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1
ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaAkocmV2aXNpb24gMTU5NDI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gSlNUeXBlIHsKK2VudW0g
SlNUeXBlIDogdWludDhfdCB7CiAgICAgVW5zcGVjaWZpZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5
cGUsCiAgICAgQm9vbGVhblR5cGUsCkBAIC01NSw2ICs1NSwxOCBAQCBlbnVtIEpTVHlwZSB7CiAg
ICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAgICAgUHJveHlUeXBlLAogICAgIFdpdGhTY29wZVR5cGUs
CisgICAgQXJndW1lbnRzVHlwZSwKKworICAgIEludDhBcnJheVR5cGUsCisgICAgSW50MTZBcnJh
eVR5cGUsCisgICAgSW50MzJBcnJheVR5cGUsCisgICAgVWludDhBcnJheVR5cGUsCisgICAgVWlu
dDhDbGFtcGVkQXJyYXlUeXBlLAorICAgIFVpbnQxNkFycmF5VHlwZSwKKyAgICBVaW50MzJBcnJh
eVR5cGUsCisgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAgICBGbG9hdDY0QXJyYXlUeXBlLAorICAg
IERhdGFWaWV3VHlwZSwKIAogICAgIE5hbWVTY29wZU9iamVjdFR5cGUsCiAgICAgLy8gVmFyaWFi
bGVPYmplY3RUeXBlIG11c3QgYmUgbGVzcyB0aGFuIE1PU1Qgb2YgdGhlIHR5cGVzIG9mIGl0cyBz
dWJjbGFzc2VzIGFuZCBvbmx5IGl0cyBzdWJjbGFzc2VzLgpAQCAtNjQsNiArNzYsOCBAQCBlbnVt
IEpTVHlwZSB7CiAgICAgQWN0aXZhdGlvbk9iamVjdFR5cGUsCiB9OwogCitDT01QSUxFX0FTU0VS
VChzaXplb2YoSlNUeXBlKSA9PSBzaXplb2YodWludDhfdCksIHNpemVvZl9qc3R5cGVfaXNfb25l
X2J5dGUpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFByb2hpYml0c1Byb3BlcnR5Q2FjaGluZyA9IDEgPDwgOTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90ID0gMSA8PCAxMDsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSGFzUmFyZURhdGEgPSAxIDw8IDExOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCAxMjsKIAogICAg
IGNsYXNzIFR5cGVJbmZvIHsKICAgICBwdWJsaWM6CkBAIC02Niw3ICs2Nyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxKU1R5cGU+KG1fdHlwZSk7IH0KLSAgICAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA+PSBPYmplY3RUeXBlOyB9CisgICAgICAgIGJvb2wgaXNP
YmplY3QoKSBjb25zdCB7IHJldHVybiBpc09iamVjdCh0eXBlKCkpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGlzT2JqZWN0KEpTVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID49IE9iamVjdFR5cGU7
IH0KICAgICAgICAgYm9vbCBpc0ZpbmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IEZpbmFsT2JqZWN0VHlwZTsgfQogICAgICAgICBib29sIGlzTnVtYmVyT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IE51bWJlck9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc05h
bWUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gTmFtZUluc3RhbmNlVHlwZTsgfQpAQCAtODQs
NiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBwcm9oaWJpdHNQcm9wZXJ0
eUNhY2hpbmcoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZyk7IH0KICAgICAgICAgYm9vbCBoYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QoKSBj
b25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCk7
IH0KICAgICAgICAgYm9vbCBzdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlz
U2V0T25GbGFnczIoU3RydWN0dXJlSGFzUmFyZURhdGEpOyB9CisgICAgICAgIGJvb2wgc3RydWN0
dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0dXJlSXNJ
bW1vcnRhbCk7IH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGZsYWdzT2Zmc2V0KCkKICAg
ICAgICAgewpAQCAtOTUsNiArOTgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoVHlwZUluZm8sIG1fdHlwZSk7CiAgICAgICAgIH0KIAorICAg
ICAgICB0eXBlZGVmIHVpbnQ4X3QgSW5saW5lVHlwZUZsYWdzOworICAgICAgICBJbmxpbmVUeXBl
RmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorCiAgICAg
cHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5oCShyZXZp
c2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIo
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8aW50MzJfdD4gSW5kZXhUcmFpdHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNTk0MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMg
bm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVy
dGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhh
c09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjIx
LDcgKzIyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVz
dGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9w
ZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVj
LT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBl
eGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5
KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJv
cGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzI1LDE0ICszMjUsMTQgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNz
b3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7CiAgICAgQVNTRVJU
KCFleGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAgTy0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3du
UHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eU5hbWUpLCBkZXNjcmlw
dG9yLCB0cnVlKTsKKyAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJv
cGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eU5hbWUpLCBkZXNjcmlwdG9y
LCB0cnVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE8pOwogfQogCiBzdGF0aWMgSlNW
YWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwg
SlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlO
YW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1l
cywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVydGllcykt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHBy
b3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgpOwogICAg
IFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIEpTVmFsdWUg
ZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdAogICAgICAgICB9CiAgICAgfQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Ci0gICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
W2ldLCBkZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
c1tpXSwgZGVzY3JpcHRvcnNbaV0sIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgfQpAQCAtMzk5LDcgKzM5
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8v
IDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0
eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9p
dGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7
CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tH
ZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQwOSw3ICs0
MDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAg
IC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW0NvbmZp
Z3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxzZSk7
CiAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4KLSAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsICpp
dGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAqaXRlciwgZGVzYywgdHJ1ZSk7CiAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUob2JqKTsKICAgICB9CkBAIC00MjksMTQgKzQyOSwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LmZyZWV6
ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSBhc09iamVjdChvYmopOwogCi0gICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmplY3QpICYm
ICFoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpIHsKKyAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkgJiYgIWhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgIG9iamVjdC0+ZnJlZXpl
KGV4ZWMtPnZtKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAgICAg
fQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAog
ICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywg
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIElu
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJy
YXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxs
aW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpA
QCAtNDUwLDcgKzQ1MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3QKICAgICAgICAgLy8gYy4gSWYgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUsIHNldCBk
ZXNjLltbQ29uZmlndXJhYmxlXV0gdG8gZmFsc2UuCiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJh
YmxlKGZhbHNlKTsKICAgICAgICAgLy8gZC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1d
IGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUCwgZGVzYywgYW5kIHRydWUgYXMgYXJndW1lbnRz
LgotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KG9iamVj
dCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNj
LCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAgIH0KQEAgLTQ4NCw3ICs0ODQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAKICAgICAvLyAyLiBGb3Ig
ZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJy
YXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blBy
b3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3Bl
cnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAg
ICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJv
cGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC01MTQsNyArNTE0LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAgLy8gMi4gRm9y
IGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9w
ZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAx
NTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CiAg
ICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogICAgIGRlc2NyaXB0b3Iuc2V0Q29u
ZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93
blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOwor
ICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNDMsNyArMTQzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0
b3Iuc2V0U2V0dGVyKHNldCk7CiAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwog
ICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwg
ZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0
b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdFByb3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKGV4ZWMsIFN0cmluZyh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IEFTQ0lJTGl0ZXJhbCgi
W29iamVjdCBVbmRlZmluZWRdIikgOiBBU0NJSUxpdGVyYWwoIltvYmplY3QgTnVsbF0iKSkpKTsK
ICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVjKTsKIAot
ICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b2JqZWN0VG9T
dHJpbmdWYWx1ZSgpOworICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoZXhlYy0+dm0oKSktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIXJlc3VsdCkg
ewotICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gV1RGOjp0cnlNYWtlU3Ry
aW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlz
T2JqZWN0KSwgIl0iKTsKKyAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld1N0cmluZyA9IFdU
Rjo6dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpOwogICAgICAgICBpZiAoIW5ld1N0
cmluZykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9y
eUVycm9yKGV4ZWMpKTsKIAogICAgICAgICByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgbmV3U3RyaW5nLnJlbGVhc2UoKSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgp
LT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHJlc3VsdCk7
CisgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZShleGVjLT52bSgpKS0+c2V0T2JqZWN0VG9T
dHJpbmdWYWx1ZShleGVjLT52bSgpLCB0aGlzT2JqZWN0LCByZXN1bHQpOwogICAgIH0KICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTU5NDI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDExICs2OSwxMSBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwg
SlNHCiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5l
ZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZAogICAgICAgICAvLyBhcyBudWxs
IHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0
dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgaWYg
KGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2Jh
bE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0
cmluZygpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIGlm
IChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkg
IT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5mdW5j
dGlvblN0cmluZygpOwogICAgIH0KICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm9iamVjdFN0
cmluZygpOwpAQCAtODksMTUgKzg5LDE1IEBAIGJvb2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUKICAgICBpZiAoIXYuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB2LmlzTnVs
bCgpOwogCi0gICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7CiAgICAg
aWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0
eXBlID49IE9iamVjdFR5cGUpIHsKLSAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUo
KS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkpCisgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKGNhbGxGcmFtZS0+dm0oKSkt
Pm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxs
VHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGNhbGxGcmFtZS0+dm0o
KSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNTk0MjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMSw2ICsyMTEsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNBZGQoQ2Fs
bEZyYW1lKiBjCiAKIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5Gb3JDaGFp
bkFjY2VzcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90
T2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBKU0NlbGwqIGNl
bGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAgIApAQCAt
MjE4LDEwICsyMTksMTAgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZv
cgogICAgICAgICBpZiAoY2VsbC0+aXNQcm94eSgpKQogICAgICAgICAgICAgcmV0dXJuIEludmFs
aWRQcm90b3R5cGVDaGFpbjsKICAgICAgICAgICAgIAotICAgICAgICBpZiAoY2VsbC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkuaGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KCkpCisgICAgICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmhhc0ltcHVyZUdldE93blByb3Bl
cnR5U2xvdCgpKQogICAgICAgICAgICAgcmV0dXJuIEludmFsaWRQcm90b3R5cGVDaGFpbjsKICAg
ICAgICAgICAgIAotICAgICAgICBKU1ZhbHVlIHYgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+cHJvdG90
eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CisgICAgICAgIEpTVmFsdWUgdiA9IGNlbGwtPnN0cnVj
dHVyZSh2bSktPnByb3RvdHlwZUZvckxvb2t1cChjYWxsRnJhbWUpOwogCiAgICAgICAgIC8vIElm
IHdlIGRpZG4ndCBmaW5kIHNsb3RCYXNlIGluIGJhc2UncyBwcm90b3R5cGUgY2hhaW4sIHRoZW4g
YmFzZQogICAgICAgICAvLyBtdXN0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgb2JqZWN0LgpAQCAt
MjM2LDEwICsyMzcsMTAgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZv
cgogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxv
b3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJl
YXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlv
bmFyeSgpKSB7CiAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlP
YmplY3QoY2FsbEZyYW1lLT52bSgpKTsKICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxs
KQotICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGNh
bGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsgCisgICAgICAgICAgICAgICAgc2xvdE9mZnNl
dCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJhbWUtPnZtKCksIHByb3BlcnR5TmFt
ZSk7IAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgKytjb3VudDsKQEAgLTI1MCwx
MiArMjUxLDEzIEBAIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5Gb3IKIAog
aW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNDZWxsKiBiYXNlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBz
aXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChiYXNlLT5pc1By
b3h5KCkpCiAgICAgICAgICAgICByZXR1cm4gSW52YWxpZFByb3RvdHlwZUNoYWluOwogICAgICAg
ICAgICAgCi0gICAgICAgIEpTVmFsdWUgdiA9IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVG
b3JMb29rdXAoY2FsbEZyYW1lKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJl
KHZtKS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVs
bCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwogCkBAIC0yNjMsNyArMjY1LDcgQEAgaW5s
aW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYQogCiAgICAgICAgIC8vIFNpbmNl
IHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0
aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnku
Ci0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAg
IGlmIChiYXNlLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAgICAgIGFz
T2JqZWN0KGJhc2UpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOwog
CiAgICAgICAgICsrY291bnQ7CkBAIC0yNzIsNiArMjc0LDcgQEAgaW5saW5lIHNpemVfdCBub3Jt
YWxpemVQcm90b3R5cGVDaGFpbihDYQogCiBpbmxpbmUgYm9vbCBpc1Byb3RvdHlwZUNoYWluTm9y
bWFsaXplZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgZm9yICg7Oykgewog
ICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBQcm94eVR5cGUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODAsNyArMjgzLDcgQEAgaW5saW5lIGJvb2wg
aXNQcm90b3R5cGVDaGFpbk5vcm1hbGl6ZWQoSgogICAgICAgICBpZiAodi5pc051bGwoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgCi0gICAgICAgIHN0cnVjdHVyZSA9
IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpOworICAgICAgICBzdHJ1Y3R1cmUgPSB2LmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCShy
ZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CkBAIC0yMDIsNiArMjAyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tDb25zaXN0ZW5j
eSgpOwogI2VuZGlmCiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKwogcHJpdmF0ZToKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgdW5zaWduZWQgaW5pdGlhbENh
cGFjaXR5KTsKICAgICBQcm9wZXJ0eVRhYmxlKFZNJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlU
YWJsZSYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlz
aW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhMZWFmVHlwZSwgMCksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhMZWFmVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBERUNMQVJFX0lORk87CkBAIC04NSw2ICs4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdFeHBLZXkga2V5KCkgeyByZXR1cm4gUmVnRXhwS2V5KG1fZmxhZ3MsIG1fcGF0dGVyblN0
cmluZyk7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkocmV2aXNpb24g
MTU5NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1
ZU1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEpTQ2VsbDo6U3RydWN0
dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBKU0NlbGw6OlN0cnVj
dHVyZUZsYWdzOwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTU5
NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU1LDEzICsxNTUsMTQgQEAgdm9pZCBTdHJ1Y3R1cmU6OmR1bXBTdGF0
aXN0aWNzKCkKIAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZv
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKGluZGV4aW5nVHlw
ZSkKKyAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCiAgICAgLCBtX2dsb2JhbE9iamVjdCh2bSwg
dGhpcywgZ2xvYmFsT2JqZWN0LCBXcml0ZUJhcnJpZXI8SlNHbG9iYWxPYmplY3Q+OjpNYXlCZU51
bGwpCiAgICAgLCBtX3Byb3RvdHlwZSh2bSwgdGhpcywgcHJvdG90eXBlKQogICAgICwgbV9jbGFz
c0luZm8oY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJc1dhdGNo
ZWQpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyh0eXBl
SW5mbykKLSAgICAsIG1faW5kZXhpbmdUeXBlKGluZGV4aW5nVHlwZSkKICAgICAsIG1faW5saW5l
Q2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0
aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMTgz
LDEyICsxODQsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAiUwog
CiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJs
eUNlbGwpCisgICAgLCBtX3N0cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFs
bG9jYXRlSUQodGhpcykpCisgICAgLCBtX2luZGV4aW5nVHlwZSgwKQorICAgICwgbV90eXBlSW5m
byhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsKQogICAgICwgbV9wcm90b3R5cGUodm0sIHRoaXMsIGpzTnVsbCgpKQogICAgICwgbV9jbGFz
c0luZm8oaW5mbygpKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJc1dhdGNoZWQp
CiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5mbyhDb21wb3Vu
ZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAgLCBtX2luZGV4aW5nVHlwZSgwKQog
ICAgICwgbV9pbmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGlj
dGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTIw
NSwxMiArMjA3LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSkKIAogU3RydWN0dXJl
OjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgIDogSlND
ZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3N0cnVjdHVyZUlE
KHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQodGhpcykpCisgICAgLCBtX2lu
ZGV4aW5nVHlwZShwcmV2aW91cy0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKQorICAg
ICwgbV90eXBlSW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50eXBlKCksIHByZXZpb3VzLT50eXBl
SW5mbygpLmZsYWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURhdGEpCiAgICAgLCBtX3Byb3RvdHlw
ZSh2bSwgdGhpcywgcHJldmlvdXMtPnN0b3JlZFByb3RvdHlwZSgpKQogICAgICwgbV9jbGFzc0lu
Zm8ocHJldmlvdXMtPm1fY2xhc3NJbmZvKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNl
dChJc1dhdGNoZWQpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBl
SW5mbyhwcmV2aW91cy0+dHlwZUluZm8oKS50eXBlKCksIHByZXZpb3VzLT50eXBlSW5mbygpLmZs
YWdzKCkgJiB+U3RydWN0dXJlSGFzUmFyZURhdGEpCi0gICAgLCBtX2luZGV4aW5nVHlwZShwcmV2
aW91cy0+aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpKQogICAgICwgbV9pbmxpbmVDYXBh
Y2l0eShwcmV2aW91cy0+bV9pbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQo
cHJldmlvdXMtPm1fZGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJs
ZShmYWxzZSkKQEAgLTIyMyw2ICsyMjYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0s
IGNvbnN0IFN0cnVjCiAgICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1ZSkKICAgICAsIG1fc3RhdGlj
RnVuY3Rpb25SZWlmaWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0aW9uUmVpZmllZCkKIHsKKyAg
ICBBU1NFUlQoIXByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CiAg
ICAgaWYgKHByZXZpb3VzLT50eXBlSW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgJiYgcHJl
dmlvdXMtPnJhcmVEYXRhKCktPm5lZWRzQ2xvbmluZygpKQogICAgICAgICBjbG9uZVJhcmVEYXRh
RnJvbSh2bSwgcHJldmlvdXMpOwogICAgIGVsc2UgaWYgKHByZXZpb3VzLT5wcmV2aW91c0lEKCkp
CkBAIC0yMzMsNiArMjM3LDEzIEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3Qg
U3RydWMKICAgICAgICAgbV9nbG9iYWxPYmplY3Quc2V0KHZtLCB0aGlzLCBwcmV2aW91cy0+bV9n
bG9iYWxPYmplY3QuZ2V0KCkpOwogfQogCitTdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKQoreworICAg
IGlmICh0eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5kZWFsbG9jYXRlSUQodGhp
cywgbV9zdHJ1Y3R1cmVJRCk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCog
Y2VsbCkKIHsKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+
U3RydWN0dXJlKCk7CkBAIC0zNTUsNiArMzY2LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdAogCiBib29sIFN0cnVjdHVyZTo6YW55T2JqZWN0SW5DaGFpbk1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0KCktPnZtKCk7CiAgICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIGN1cnJlbnQgPSB0aGlzOyA7
KSB7CiAgICAgICAgIGlmIChjdXJyZW50LT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzYzLDcgKzM3NSw3IEBAIGJvb2wgU3RydWN0
dXJlOjphbnlPYmplY3RJbkNoYWluTWF5SW50ZXIKICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051
bGwoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGN1cnJl
bnQgPSBhc09iamVjdChwcm90b3R5cGUpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgY3VycmVudCA9
IGFzT2JqZWN0KHByb3RvdHlwZSktPnN0cnVjdHVyZSh2bSk7CiAgICAgfQogfQogCkBAIC0xMDA5
LDcgKzEwMjEsNyBAQCBib29sIFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlCiAg
ICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIAotICAgICAgICBjdXJyZW50ID0gcHJvdG90eXBlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUoKTsKKyAgICAgICAgY3VycmVudCA9IHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJ
bmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKIAor
ICAgIH5TdHJ1Y3R1cmUoKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogICAgIHsKQEAgLTk1LDYgKzk3LDggQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVi
bGljOgorICAgIFN0cnVjdHVyZUlEIGlkKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsg
fQorCiAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUqIGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYsIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFBy
b3BlcnR5U2xvdDo6VW5rbm93bkNvbnRleHQpOwpAQCAtMzAxLDYgKzMwNSwyMSBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NJbmZvOyB9CiAKKyAgICBpbnQzMl90IG9iamVjdEluaXRpYWxpemF0aW9uRmllbGRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90
Kj4oJm1faW5kZXhpbmdUeXBlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVj
dHVyZUlET2Zmc2V0KCkKKyAgICB7CisgICAgICAgIC8vIFdlIGxvYWQgbV9zdHJ1Y3R1cmVJRCwg
bV9pbmRleGluZ1R5cGUsIGFuZCBtX3R5cGVJbmZvIGluIGEgc2luZ2xlCisgICAgICAgIC8vIDY0
LWJpdCBpbnN0cnVjdGlvbiwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhleSdyZSBwcm9wZXJs
eSBhbGlnbmVkLgorICAgICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9z
dHJ1Y3R1cmVJRCkgPT0gOCk7CisgICAgICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0
dXJlLCBtX2luZGV4aW5nVHlwZSkgPT0gMTIpOworICAgICAgICBBU1NFUlQoT0JKRUNUX09GRlNF
VE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mbykgPT0gMTMpOworICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCk7CisgICAgfQorCiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBwcm90b3R5cGVPZmZzZXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJvdG90eXBlKTsKQEAgLTQ2OSw3ICs0ODgsMTMgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aEZvck5v
bkV2YWxQdXRCeUlkID0gNTEyOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNwZWNp
ZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7Ci0gICAgICAgIAorICAgIAorICAgIC8vIFRoZXNl
IG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3Ry
dWN0dXJlJworICAgIC8vIHBhcnQgb2YgdGhlIG9iamVjdC4KKyAgICBTdHJ1Y3R1cmVJRCBtX3N0
cnVjdHVyZUlEOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBUeXBlSW5m
byBtX3R5cGVJbmZvOworCiAgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2Jh
bE9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7CiAgICAgbXV0
YWJsZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47
CkBAIC00OTMsOCArNTE4LDYgQEAgcHJpdmF0ZToKICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBh
Y2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsK
IAotICAgIFR5cGVJbmZvIG1fdHlwZUluZm87Ci0gICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdU
eXBlOwogICAgIHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKICAgICAKICAgICBDb25jdXJyZW50
SklUTG9jayBtX2xvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiog
aGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4pLCBpbmZvKCkpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVD
TEFSRV9JTkZPOwogCkBAIC02NCw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU3RydWN0dXJlKiBoZWFkKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUg
PHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK1N0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUoKQorICAgIDogbV9maXJz
dEZyZWVPZmZzZXQoMCkKKyAgICAsIG1fdGFibGUobmV3IFN0cnVjdHVyZU9yT2Zmc2V0W3NfaW5p
dGlhbFNpemVdKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNp
emUpCit7CisgICAgLy8gV2UgcHJlLWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0
aGUgbnVsbCBTdHJ1Y3R1cmUKKyAgICAvLyBjYW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhl
IFN0cnVjdHVyZUlEICcwJy4KKyAgICBhbGxvY2F0ZUlEKDApOworfQorCitTdHJ1Y3R1cmVJRFRh
YmxlOjp+U3RydWN0dXJlSURUYWJsZSgpCit7CisgICAgZGVsZXRlIFtdIG1fdGFibGU7Cit9CisK
K3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6cmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSkKK3sKKyAg
ICAvLyBDcmVhdGUgdGhlIG5ldyB0YWJsZS4KKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogbmV3VGFi
bGUgPSBuZXcgU3RydWN0dXJlT3JPZmZzZXRbbmV3Q2FwYWNpdHldOworCisgICAgLy8gQ29weSB0
aGUgY29udGVudHMgb2YgdGhlIG9sZCB0YWJsZSB0byB0aGUgbmV3IHRhYmxlLgorICAgIG1lbWNw
eShuZXdUYWJsZSwgbV90YWJsZSwgbV9jYXBhY2l0eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNl
dCkpOworCisgICAgLy8gU3RvcmUgZmVuY2UgdG8gbWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVy
eXRoaW5nIGJlZm9yZSBkb2luZyB0aGUgc3dhcC4KKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgp
OworCisgICAgLy8gU3dhcCB0aGUgb2xkIGFuZCBuZXcgdGFibGVzLgorICAgIFN0cnVjdHVyZU9y
T2Zmc2V0KiBvbGRUYWJsZSA9IG1fdGFibGU7CisgICAgbV90YWJsZSA9IG5ld1RhYmxlOworCisg
ICAgLy8gUHV0IHRoZSBvbGQgdGFibGUgKG5vdyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlz
dCBvZiBvbGQgdGFibGVzLgorICAgIG1fb2xkVGFibGVzLmFwcGVuZChvbGRUYWJsZSk7CisKKyAg
ICAvLyBVcGRhdGUgdGhlIGNhcGFjaXR5LgorICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsK
K30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcygpCit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb2xkVGFibGVzLnNpemUoKTsgKytpKQorICAgICAgICBk
ZWxldGUgW10gbV9vbGRUYWJsZXNbaV07CisgICAgbV9vbGRUYWJsZXMuY2xlYXIoKTsKK30KKwor
U3RydWN0dXJlSUQgU3RydWN0dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbV9maXJzdEZyZWVPZmZzZXQp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jYXBhY2l0eSA8PSBVSU5UX01BWCk7CisgICAg
ICAgIGlmIChtX3NpemUgPT0gbV9jYXBhY2l0eSkKKyAgICAgICAgICAgIHJlc2l6ZShtX2NhcGFj
aXR5ICogMik7CisgICAgICAgIEFTU0VSVChtX3NpemUgPCBtX2NhcGFjaXR5KTsKKworICAgICAg
ICBTdHJ1Y3R1cmVPck9mZnNldCBuZXdFbnRyeTsKKyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJl
ID0gc3RydWN0dXJlOworCisgICAgICAgIFN0cnVjdHVyZUlEIHJlc3VsdCA9IG1fc2l6ZTsKKyAg
ICAgICAgbV90YWJsZVtyZXN1bHRdID0gbmV3RW50cnk7CisgICAgICAgIG1fc2l6ZSsrOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIFN0cnVjdHVyZUlEIHJlc3VsdCA9IG1f
Zmlyc3RGcmVlT2Zmc2V0OworICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gbV90YWJsZVttX2ZpcnN0
RnJlZU9mZnNldF0ub2Zmc2V0OworICAgIG1fdGFibGVbcmVzdWx0XS5zdHJ1Y3R1cmUgPSBzdHJ1
Y3R1cmU7CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZTsK
KyNlbmRpZgorfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCit7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICBSRUxFQVNFX0FTU0VSVChtX3RhYmxlW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmUg
PT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxlW3N0cnVjdHVyZUlEXS5vZmZzZXQgPSBtX2ZpcnN0
RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IHN0cnVjdHVyZUlEOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJl
SUQpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJ1Y3R1
cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0dXJlSURUYWJsZV9oCisKKyNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFN0cnVjdHVyZTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCit0eXBlZGVmIHVpbnQzMl90
IFN0cnVjdHVyZUlEOworI2Vsc2UKK3R5cGVkZWYgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRDsKKyNl
bmRpZgorCitjbGFzcyBTdHJ1Y3R1cmVJRFRhYmxlIHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIFN0cnVjdHVyZUlEVGFibGUoKTsKKyAgICB+
U3RydWN0dXJlSURUYWJsZSgpOworCisgICAgdm9pZCoqIGJhc2UoKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUpOyB9CisKKyAgICBTdHJ1Y3R1cmUqIGdldChTdHJ1
Y3R1cmVJRCk7CisgICAgdm9pZCBkZWFsbG9jYXRlSUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQp
OworICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRlSUQoU3RydWN0dXJlKik7CisKKyAgICB2b2lkIGZs
dXNoT2xkVGFibGVzKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0Nh
cGFjaXR5KTsKKyAgICAKKyAgICB1bmlvbiBTdHJ1Y3R1cmVPck9mZnNldCB7CisgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1cmVJRCBvZmZzZXQ7CisgICAgfTsK
KworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19pbml0aWFsU2l6ZSA9IDI1NjsKKworICAgIFZl
Y3RvcjxTdHJ1Y3R1cmVPck9mZnNldCo+IG1fb2xkVGFibGVzOworICAgIHVpbnQzMl90IG1fZmly
c3RGcmVlT2Zmc2V0OworICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBtX3RhYmxlOworICAgIHNpemVf
dCBtX3NpemU7CisgICAgc2l6ZV90IG1fY2FwYWNpdHk7Cit9OworCitpbmxpbmUgU3RydWN0dXJl
KiBTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCit7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gbV90YWJsZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJl
OworI2Vsc2UKKyAgICByZXR1cm4gc3RydWN0dXJlSUQ7CisjZW5kaWYKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdHJ1Y3R1cmVJRFRhYmxlX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkocmV2aXNpb24gMTU5NDI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDg1LDYgKzQ4NSw5IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lO
Rk87CiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKIHByaXZh
dGU6CiAgICAgU2hhcmVkU3ltYm9sVGFibGUoVk0mIHZtKQogICAgICAgICA6IEpTQ2VsbCh2bSwg
dm0uc2hhcmVkU3ltYm9sVGFibGVTdHJ1Y3R1cmUuZ2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCShyZXZpc2lvbiAxNTk0
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKy8q
CiBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkK
IHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTYxLDYgKzYyLDQwIEBAIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvRm9yVHlwZShUeXBlZEEKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiAwOwogfQorKi8KKworSlNUeXBlIHR5cGVGb3JUeXBlZEFycmF5VHlw
ZShUeXBlZEFycmF5VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
Tm90VHlwZWRBcnJheToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkVHlwZTsKKyAgICBjYXNlIFR5cGVJbnQ4OgorICAgICAg
ICByZXR1cm4gSW50OEFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVVaW50ODoKKyAgICAgICAgcmV0
dXJuIFVpbnQ4QXJyYXlUeXBlOworICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAg
cmV0dXJuIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVJbnQxNjoKKyAgICAg
ICAgcmV0dXJuIEludDE2QXJyYXlUeXBlOworICAgIGNhc2UgVHlwZVVpbnQxNjoKKyAgICAgICAg
cmV0dXJuIFVpbnQxNkFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVJbnQzMjoKKyAgICAgICAgcmV0
dXJuIEludDMyQXJyYXlUeXBlOworICAgIGNhc2UgVHlwZVVpbnQzMjoKKyAgICAgICAgcmV0dXJu
IFVpbnQzMkFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVGbG9hdDMyOgorICAgICAgICByZXR1cm4g
RmxvYXQzMkFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVGbG9hdDY0OgorICAgICAgICByZXR1cm4g
RmxvYXQ2NEFycmF5VHlwZTsKKyAgICBjYXNlIFR5cGVEYXRhVmlldzoKKyAgICAgICAgcmV0dXJu
IERhdGFWaWV3VHlwZTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBVbnNwZWNpZmllZFR5cGU7CisgICAgfQorfQog
CiBjb25zdCBDbGFzc0luZm8qIGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5
VHlwZSB0eXBlKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRB
cnJheVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlZEFycmF5VHlwZS5oCShyZXZpc2lvbiAxNTk0MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaWZuZGVmIFR5cGVkQXJyYXlUeXBlX2gKICNkZWZpbmUgVHlwZWRBcnJheVR5cGVfaAog
CisjaW5jbHVkZSAiSlNUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMTAwLDggKzEwMSw4IEBAIGlubGluZSBzaXplX3QgZWxlbWVudFNp
emUoVHlwZWRBcnJheVR5cGUKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBs
b2dFbGVtZW50U2l6ZSh0eXBlKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Gb3JU
eXBlKFR5cGVkQXJyYXlUeXBlKTsKIGNvbnN0IENsYXNzSW5mbyogY29uc3RydWN0b3JDbGFzc0lu
Zm9Gb3JUeXBlKFR5cGVkQXJyYXlUeXBlKTsKK0pTVHlwZSB0eXBlRm9yVHlwZWRBcnJheVR5cGUo
VHlwZWRBcnJheVR5cGUpOwogCiBpbmxpbmUgYm9vbCBpc0ludChUeXBlZEFycmF5VHlwZSB0eXBl
KQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTU5
NDI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw2ICs5MywxOSBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorI2lmICFVU0UoUFRIUkVBRF9HRVRTUEVDSUZJQ19ESVJFQ1QpCitXVEY6OlRocmVh
ZFNwZWNpZmljS2V5IFZNOjpzX2N1cnJlbnRWTSA9IDA7CisKK3ZvaWQgVk06OmluaXRpYWxpemUo
KQoreworICAgIFdURjo6dGhyZWFkU3BlY2lmaWNLZXlDcmVhdGUoJnNfY3VycmVudFZNLCAwKTsK
K30KKyNlbHNlCit2b2lkIFZNOjppbml0aWFsaXplKCkKK3sKK30KKyNlbmRpZgorCiBleHRlcm4g
Y29uc3QgSGFzaFRhYmxlIGFycmF5Q29uc3RydWN0b3JUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNo
VGFibGUgYXJyYXlQcm90b3R5cGVUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgYm9vbGVh
blByb3RvdHlwZVRhYmxlOwpAQCAtMjk0LDYgKzMwNyw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAvLyBJbml0aWFsaXplIHRoaXMgbGFzdCwgYXMgYSBm
cmVlIHdheSBvZiBhc3NlcnRpbmcgdGhhdCBWTSBpbml0aWFsaXphdGlvbiBpdHNlbGYKICAgICAv
LyB3b24ndCB1c2UgdGhpcy4KICAgICBtX3R5cGVkQXJyYXlDb250cm9sbGVyID0gYWRvcHRSZWYo
bmV3IFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyKCkpOworCisgICAgVk06OnNldEN1cnJlbnRW
TSgwKTsKIH0KIAogVk06On5WTSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHJldmlzaW9uIDE1OTQyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDE0IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAjZW5kaWYKIAorI2lmIE9TKERBUldJTikKKyNpbmNsdWRlIDxTeXN0ZW0vcHRocmVh
ZF9tYWNoZGVwLmg+CisKKyNpZiAhZGVmaW5lZChXVEZfVVNFX1BUSFJFQURfR0VUX1NQRUNJRklD
X0RJUkVDVCkgJiYgZGVmaW5lZChfX1BUS19GUkFNRVdPUktfSkFWQVNDUklQVENPUkVfS0VZMSkK
KyNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEX0dFVFNQRUNJRklDX0RJUkVDVCAxCisjZW5kaWYKKyNl
bmRpZiAvLyBPUyhEQVJXSU4pCisKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29kZUJs
b2NrOwpAQCAtNDU2LDEwICs0NjQsMjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRpc2NhcmRBbGxDb2RlKCk7CiAKKyAgICAgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgICAgICBzdGF0aWMgVk0qIGN1cnJlbnRWTSgp
OworICAgICAgICBzdGF0aWMgdm9pZCBzZXRDdXJyZW50Vk0oVk0qKTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwotICAgICAgICAKKworI2lmIFVTRShQVEhS
RUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGNvbnN0IHB0aHJlYWRfa2V5X3Qgc19jdXJyZW50Vk0gPSBfX1BUS19GUkFNRVdPUktfSkFWQVND
UklQVENPUkVfS0VZMTsKKyNlbHNlCisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBX
VEY6OlRocmVhZFNwZWNpZmljS2V5IHNfY3VycmVudFZNOworI2VuZGlmCisKICAgICAgICAgVk0o
Vk1UeXBlLCBIZWFwVHlwZSk7CiAgICAgICAgIHN0YXRpYyBWTSomIHNoYXJlZEluc3RhbmNlSW50
ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpAQCAtNDk4LDYgKzUx
NiwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuICZtX3ZtLT5oZWFwOwogICAg
IH0KIAorICAgIGlubGluZSBWTSogVk06OmN1cnJlbnRWTSgpCisgICAgeworI2lmIFVTRShQVEhS
RUFEX0dFVFNQRUNJRklDX0RJUkVDVCkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Vk0qPihwdGhyZWFkX2dldHNwZWNpZmljKHNfY3VycmVudFZNKSk7CisjZWxzZQorICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWTSo+KFdURjo6dGhyZWFkU3BlY2lmaWNHZXQoc19jdXJy
ZW50Vk0pKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBpbmxpbmUgdm9pZCBWTTo6c2V0Q3Vy
cmVudFZNKFZNKiB2bSkKKyAgICB7CisjaWYgVVNFKFBUSFJFQURfR0VUU1BFQ0lGSUNfRElSRUNU
KQorICAgICAgICBwdGhyZWFkX3NldHNwZWNpZmljKHNfY3VycmVudFZNLCByZWludGVycHJldF9j
YXN0PHZvaWQqPih2bSkpOworI2Vsc2UKKyAgICAgICAgV1RGOjp0aHJlYWRTcGVjaWZpY1NldChz
X2N1cnJlbnRWTSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odm0pKTsKKyNlbmRpZgorICAgIH0K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBWTV9oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgJKHJldmlzaW9uIDE1OTQyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9y
dGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAgICAgV2Vha01hcERhdGEo
Vk0mKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225174</attachid>
            <date>2014-02-25 12:58:48 -0800</date>
            <delta_ts>2014-02-25 19:25:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20140225125842.patch</filename>
            <type>text/plain</type>
            <size>441425</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2MCBA
QAorMjAxNC0wMi0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBKU0NlbGxzIHN1Y2ggdGhhdCB0aGV5IG5vIGxvbmdlciBoYXZlIGEgZnVsbCA2NC1i
aXQgU3RydWN0dXJlCisgICAgICAgIHBvaW50ZXIgaW4gdGhlaXIgaGVhZGVyLiBJbnN0ZWFkIHRo
ZXkgbm93IGhhdmUgYSAzMi1iaXQgaW5kZXggaW50bworICAgICAgICBhIHBlci1WTSB0YWJsZSBv
ZiBTdHJ1Y3R1cmUgcG9pbnRlcnMuIDMyLWJpdCBwbGF0Zm9ybXMgc3RpbGwgdXNlIG5vcm1hbCBT
dHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZnJlZXMg
dXAgYW4gYWRkaXRpb25hbCAzMiBiaXRzIG9mIGluZm9ybWF0aW9uIGluIG91ciBvYmplY3QgaGVh
ZGVycy4KKyAgICAgICAgV2UgdGhlbiB1c2UgdGhpcyBleHRyYSBzcGFjZSB0byBzdG9yZSB0aGUg
aW5kZXhpbmcgdHlwZSBvZiB0aGUgb2JqZWN0LCB0aGUgSlNUeXBlCisgICAgICAgIG9mIHRoZSBv
YmplY3QsIHNvbWUgdmFyaW91cyB0eXBlIGZsYWdzLCBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRh
dGEgKGUuZy4gbWFyayBiaXQpLgorICAgICAgICBCZWNhdXNlIHRoaXMgaW5saW5lIHR5cGUgaW5m
b3JtYXRpb24gaXMgbm93IGZhc3RlciB0byByZWFkLCBpdCBwYXlzIGZvciB0aGUgc2xvd2Rvd24g
CisgICAgICAgIGluY3VycmVkIGJ5IGhhdmluZyB0byBwZXJmb3JtIGFuIGV4dHJhIGluZGlyZWN0
aW9uIHRocm91Z2ggdGhlIFN0cnVjdHVyZUlEVGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHRocmVhZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgVk0gdGhyb3VnaCBtb3JlIG9m
IHRoZSBDKysgcnVudGltZQorICAgICAgICB0byBvZmZzZXQgdGhlIGNvc3Qgb2YgaGF2aW5nIHRv
IGxvb2sgdXAgdGhlIFZNIHRvIGdldCB0aGUgYWN0dWFsIFN0cnVjdHVyZSBwb2ludGVyLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldEV4Y2Vw
dGlvbjpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHdyYXBwZXJGb3JPYmpDT2JqZWN0Ol0pOgor
ICAgICAgICAoLVtKU0NvbnRleHQgd3JhcHBlckZvckpTT2JqZWN0Ol0pOgorICAgICAgICAqIEFQ
SS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZWxlYXNlKToKKyAg
ICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChj
b250YWluZXJWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5j
aDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hTdHJ1Y3R1cmVQdHIpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9TdHJpbmdPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0NlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25Q
ZWVwaG9sZUNvbXBhcmVOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RU
b09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3Qu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVUcnV0aHlPYmplY3QpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjppc0FycmF5VHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omhhc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzVHlw
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9iamVjdCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRNYXJrQnl0ZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU4KToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVCYXJyaWVy
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0dXJl
SURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6aW50ZXJuYWxBcHBlbmQpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRf
b2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNo
ZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YnJhbmNoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6YnJhbmNo
U3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
c3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
bmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
cV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdH
ZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja01hcmtXb3JkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nl
c3MpOgorICAgICAgICAoSlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OndyaXRlQmFycmllcik6
CisgICAgICAgIChKU0M6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkUHV0QnlJZExpc3QpOgor
ICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNh
bGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1
dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChK
U0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3Mp
OgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0
dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aXNGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6
CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKToKKyAgICAgICAg
KiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
VGhpcyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmNsZWFyU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptYXJr
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnY0RhdGFPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGUpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjppc1Byb3h5KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OndyaXRlQmFycmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGFibGVPYmplY3RTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dmlzaXRCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5k
ZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVhZHlFeGlzdHMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpZGVkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxDb250aWd1
b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29u
dGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdl
U2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNB
bmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNl
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcmlt
aXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2VhbCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291
bnRFbGVtZW50cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0
aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnB1dERlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldElu
ZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldERpcmVjdEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3pl
bik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5
U3RvcmFnZU9yTnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmN1cnJlbnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0ds
b2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmFzdEdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0
U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6
CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9y
dGFsKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Onplcm9lZEdDRGF0YU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmlu
Z0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpub3JtYWxpemVQcm90b3R5cGVDaGFp
bkZvckNoYWluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjppZEJsb2IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om9iamVjdEluaXRp
YWxpemF0aW9uRmllbGRzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6On5T
dHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRUYWJsZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmJh
c2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZUZvclR5cGVkQXJyYXlUeXBlKToKKyAgICAgICAgKiBydW50
aW1lL1R5cGVkQXJyYXlUeXBlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgor
CiAyMDE0LTAyLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
QVJNNjQgcnNoaWZ0NjQgc2hvdWxkIGJlIGFuIGFyaXRobWV0aWMgc2hpZnQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDYgKzEwMyw3IEBAIC0gKEpTVmFsdWUgKilldmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKikKIAog
LSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFsdWUgKil2YWx1ZQogeworICAgIEpTQzo6QVBJRW50
cnlTaGltIGVudHJ5U2hpbSh0b0pTKG1fY29udGV4dCkpOwogICAgIGlmICh2YWx1ZSkKICAgICAg
ICAgbV9leGNlcHRpb24uc2V0KHRvSlMobV9jb250ZXh0KS0+dm0oKSwgdG9KUyhKU1ZhbHVlVG9P
YmplY3QobV9jb250ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUodmFsdWUpLCAwKSkpOwogICAgIGVs
c2UKQEAgLTI3MCwxNCArMjcxLDEzIEBAIC0gKHZvaWQpZW5kQ2FsbGJhY2tXaXRoRGF0YTooQ2Fs
bGJhY2tEYXQKIAogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JPYmpDT2JqZWN0OihpZClvYmplY3QK
IHsKLSAgICAvLyBMb2NrIGFjY2VzcyB0byBtX3dyYXBwZXJNYXAKLSAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKHRvSlMobV9jb250ZXh0KSk7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlT
aGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJNYXAganNXcmFwcGVy
Rm9yT2JqZWN0Om9iamVjdF07CiB9CiAKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9ySlNPYmplY3Q6
KEpTVmFsdWVSZWYpdmFsdWUKIHsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMobV9j
b250ZXh0KSk7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0
KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJNYXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOnZh
bHVlXTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVm
LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxNiArNjcsMTAgQEAgSlNDb250ZXh0
R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRhaW4oSgogCiB2b2lkIEpTQ29udGV4dEdyb3VwUmVs
ZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91cCkKIHsKLSAgICBJZGVudGlmaWVyVGFibGUqIHNh
dmVkSWRlbnRpZmllclRhYmxlOwogICAgIFZNJiB2bSA9ICp0b0pTKGdyb3VwKTsKIAotICAgIHsK
LSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgICAgICBzYXZlZElkZW50aWZpZXJU
YWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHZtLmlkZW50
aWZpZXJUYWJsZSk7Ci0gICAgICAgIHZtLmRlcmVmKCk7Ci0gICAgfQotCi0gICAgd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoc2F2ZWRJZGVudGlmaWVyVGFibGUpOwor
ICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oJnZtKTsKKyAgICB2bS5kZXJlZigpOwogfQogCiBz
dGF0aWMgYm9vbCBpbnRlcm5hbFNjcmlwdFRpbWVvdXRDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMs
IHZvaWQqIGNhbGxiYWNrUHRyLCB2b2lkKiBjYWxsYmFja0RhdGEpCkBAIC0xNjQsNyArMTU4LDcg
QEAgdm9pZCBKU0dsb2JhbENvbnRleHRSZWxlYXNlKEpTR2xvYmFsQ29udAogICAgIElkZW50aWZp
ZXJUYWJsZSogc2F2ZWRJZGVudGlmaWVyVGFibGU7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwogICAgIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgICAg
IEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICAgICAgc2F2ZWRJZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0
Q3VycmVudElkZW50aWZpZXJUYWJsZSh2bS5pZGVudGlmaWVyVGFibGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MDcsMTAgKzUwNywxMSBAQCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5
KEpTQ29uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTT2JqZWN0SXNGdW5jdGlvbihK
U0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9iamVjdCkKK2Jvb2wgSlNPYmplY3RJc0Z1bmN0aW9u
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9K
UyhjdHgpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBKU0NlbGwqIGNlbGwgPSB0b0pT
KG9iamVjdCk7CiAgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNl
bGwsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmU7CkBAIC02MDYsMTIgKzYwNywxMiBAQCBKU1By
b3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3BlCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgSlNPYmplY3QqIGpzT2Jq
ZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAg
ICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CiAKKyAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9w
ZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5hbWVzID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1l
QXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFtZUFycmF5IGFycmF5KHZtKTsKICAgICBqc09iamVj
dC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXks
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1ZhbHVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNWYWx1ZS5tbQkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OTgsNiArNjk4LDggQEAgc3RhdGljIGlk
IGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYQogICAgICAgICAgICAgQVNTRVJUKFtjdXJy
ZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNNdXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKTsKICAg
ICAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSAoTlNNdXRhYmxlRGlj
dGlvbmFyeSAqKWN1cnJlbnQub2JqYzsKIAorICAgICAgICAgICAgSlNDOjpBUElFbnRyeVNoaW0g
ZW50cnlTaGltKHRvSlMoY29udGV4dCkpOworCiAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFy
cmF5UmVmIHByb3BlcnR5TmFtZUFycmF5ID0gSlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250
ZXh0LCBqcyk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gSlNQcm9wZXJ0eU5hbWVBcnJh
eUdldENvdW50KHByb3BlcnR5TmFtZUFycmF5KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsNiAr
NjI1LDcgQEAgaWQgdHJ5VW53cmFwT2JqY09iamVjdChKU0dsb2JhbENvbnRleHRSZQogICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVl
VG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0
aW9uKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CiAg
ICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJpdHMoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Pjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIChpZClKU0M6Ompz
Q2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmpl
Y3QoKTsKICAgICBpZiAoaWQgdGFyZ2V0ID0gdHJ5VW53cmFwQ29uc3RydWN0b3Iob2JqZWN0KSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE4LDYgKzcxOCw3IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5j
cHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFi
bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJv
bFRhYmxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1
bm5lclV0aWxzLmNwcCIgLz4KQEAgLTE0MDYsNiArMTQwNyw3IEBACiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGEuaCIgLz4KICAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZS5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3
b3JraW5nIGNvcHkpCkBAIC03OTUsNiArNzk1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3ltYm9sVGFibGUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtMjQzMiw2ICsyNDM1LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RydWN0dXJlSURUYWJsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzc5LDYgKzc3OSw4IEBA
CiAJCTJBQ0NGM0RFMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFD
Q0YzREMxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAg
Ki87IH07CiAJCTJBQ0NGM0RGMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBQ0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2Uu
aCAqLzsgfTsKIAkJMkFEODkzMkIxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29w
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkz
MjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovOyB9OworCQkyQUY3
MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQTE4QkJCRjkyMDA4QTVB
MzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi87IH07CisJCTJBRjczODJEMThCQkJGOTIwMDhB
NUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURU
YWJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0
IC8qIGxpYnouZHlsaWIgKi87IH07CiAJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRl
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJ
CTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjExMCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZD
NkIwMEU2REYxQiAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKQEAgLTIyMjAsNiArMjIy
Miw4IEBACiAJCTJBQ0NGM0RDMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3Rv
cmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdG9yZUJhcnJpZXJFbGlz
aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUNDRjNERDE4NUZF
MjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3Bl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVyYXRpb25TY29wZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcg
LyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxpYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliei5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliei5k
eWxpYjsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTQ0OTA5N0VFMEY4RjgxQjUwMDc2QTMy
NyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gWWFyci5oOyBwYXRoID0geWFyci9ZYXJyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zNzU3LDYgKzM3NjEsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3
OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3Bw
ICovLAorCQkJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmgg
Ki8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJ
CUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJCQkJQkMyNTdERTUw
RTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC00ODQzLDYgKzQ4NDksNyBA
QAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5UHJv
dG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk2MTVFRDhF
NDYwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE1
MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQ
b29sLmggaW4gSGVhZGVycyAqLywKQEAgLTYyODIsNiArNjI4OSw3IEBACiAJCQkJQTVDRUVFMTQx
ODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQUY3MzgyQzE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZE
MDA4MTE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDM0LDcgKzQzNCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8vCi0g
ICAgLy8gQSBEYXRhTGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGluIHRo
ZSBjb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwzMiBp
cyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBhIDMy
LWJpdCBjb25zdGFudCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFzIGJl
ZW4gZ2VuZXJhdGVkLgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBhdGNo
YWJsZUp1bXAoYnJhbmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlh
bFJpZ2h0VmFsdWUpKTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRh
TGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVz
dGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gz
MldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7Cisg
ICAgfQorCiAjaWYgIUNQVShBUk1fVFJBRElUSU9OQUwpCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRj
aGFibGVKdW1wKCkKICAgICB7CkBAIC0zODEsNiArMzg2LDExIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7CiAg
ICAgfQorCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIGFkZHJlc3MsIGltbSkp
OworICAgIH0KICNlbmRpZgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyMCw2ICsyMjIwLDEzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0K
IAorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0
ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAg
ICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICBtb3ZlV2l0aFBhdGNo
KGluaXRpYWxSaWdodFZhbHVlLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2hQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQg
PSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9
IHRydWU7CkBAIC0yMjUyLDYgKzIyNTksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0
Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9
IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0
cnVlOworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQs
IGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hh
YmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAg
fQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAgIG1f
bWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOwpAQCAtMjMyMiw2ICsyMzM3LDcgQEAgcHVibGljOgog
ICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBnZXRD
YWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7IH0KIAogICAgIHN0YXRpYyBi
b29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0
aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9u
RGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsKQEAgLTIzMzQsNiArMjM1MCwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgIH0KICAgICAKKyAgICBz
dGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
T25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyKQorICAgIHsKKyAgICAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgp
OworICAgIH0KKyAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0Jy
YW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdp
c3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICByZWVtaXRJbml0aWFs
TW92ZVdpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBpbml0aWFsVmFs
dWUpOwpAQCAtMjM0NCw2ICsyMzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCwgQWRk
cmVzcywgaW50MzJfdCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgp
OworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNo
KEFSTTY0QXNzZW1ibGVyOjpDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAko
cmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1Myw2ICs3NTMsMTEgQEAgcHVi
bGljOgogICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0K
IAorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0K
KyAgICAKICAgICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3Mp
CiAgICAgewogICAgICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpA
QCAtNzcwLDYgKzc3NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMy
IGltbSwgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7Cisg
ICAgfQorICAgIAogICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFk
ZHJlc3MpCiAgICAgewogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJl
c3MpKTsKQEAgLTE3MjYsNiArMTczNywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAgICAgCisgICAgQUxXQVlTX0lOTElORSBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBU
cnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgewor
ICAgICAgICBsb2FkMzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGRhdGFM
YWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgfQorICAgIAogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxl
QnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tUHRyIHJpZ2h0ID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1
bXBQYXRjaGFibGUgPSB0cnVlOwpAQCAtMTc1OCw2ICsxNzc2LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVK
dW1wIHBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlh
bFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBtX21ha2VKdW1w
UGF0Y2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMldpdGhQYXRj
aChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKTsKKyAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChy
ZXN1bHQpOworICAgIH0KKwogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAg
ewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAtMTc5Niw2ICsxODIyLDcgQEAgcHVibGlj
OgogICAgIH0KICAgICAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY2Fu
SnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRo
UGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBA
IC0xODE5LDExICsxODQ2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlv
bkxhYmVsKCk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxh
YmVsMzIpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAg
ICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2
b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENv
ZGVMb2NhdGlvbkxhYmVsLCBBZGRyZXNzLCB2b2lkKikKICAgICB7CiAgICAgICAgIFVOUkVBQ0hB
QkxFX0ZPUl9QTEFURk9STSgpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBS
ZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWws
IEFkZHJlc3MsIGludDMyX3QpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZP
Uk0oKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICBzdHJ1Y3QgQ1BVU3RhdGUg
ewogICAgICAgICAjZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4Ni5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcs
MTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29u
ZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJl
bCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAg
IHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9p
bV9mb3JjZTMyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJh
c2UpOworICAgICAgICBkYXRhTGFiZWwgPSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwog
ICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxW
YWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQ
YXRjaCgpOwpAQCAtMjc3LDYgKzI4NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMg
Ym9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRp
b25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25E
YXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtMjk5LDYgKzMwOCwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAg
ICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7
CisgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBt
b2RSTUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAg
ICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFs
Qnl0ZXMgPSBvcGNvZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0
ZUJ5dGVzOworICAgICAgICBBU1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCkpOworICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7
CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJh
bmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lz
dGVySUQgcmVnLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJs
ZXI6OnJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRh
YmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBy
ZWcpOwpAQCAtMzEwLDYgKzMzMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVB
ZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFk
ZHJlc3MuYmFzZSk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVj
dGlvblN0YXJ0LCBBZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVB
ZGRyZXNzKCksIGluaXRpYWxWYWx1ZSwgMCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBV
U0UoTUFTTV9QUk9CRSkKICAgICAvLyBGb3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29t
bWVudCBpbiBNYWNyb0Fzc2VtYmxlclg4Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5j
dGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJ
KHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxNiBAQCBw
dWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKICAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQorCisg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBhZGRyZXNzKQorICAgIHsK
KyAgICAgICAgaWYgKHNvdXJjZSA9PSBYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmxfRUFYbShhZGRyZXNzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAg
ICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0K
ICAgICAKICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQog
ICAgIHsKQEAgLTYyNyw2ICs2MzcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRGF0YUxh
YmVsUHRyKHRoaXMpOwogICAgIH0KIAorICAgIERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRy
dXN0ZWRJbW0zMiBpbml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHBhZEJlZm9yZVBhdGNoKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFs
VmFsdWUubV92YWx1ZSwgZGVzdCk7CisgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVk
SW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAg
ICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hS
ZWdpc3Rlcik7CkBAIC02MzksNiArNjU2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisgICAgSnVtcCBi
cmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwg
RGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0g
VHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CisgICAgICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0
aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxh
YmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rl
cik7CkBAIC02ODcsNiArNzEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdpc3RlcklEIHNj
cmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRp
YyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihD
b2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtNjk4LDE2ICs3MjQsMzYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRl
cyk7CiAgICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJh
bmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQor
ICAgIHsKKyAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50
IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsK
KyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzICsg
aW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBs
YWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3Rh
bEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxh
YmVsUHRyIGxhYmVsKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRo
UGF0Y2hPblJlZ2lzdGVyKGxhYmVsKTsKICAgICB9CisKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9u
TGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2Nh
dGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFu
Y2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOworICAgIH0KICAgICAKICAgICBzdGF0aWMg
dm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFs
VmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2
NHIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0
PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAg
IHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcywgaW50MzJf
dCBpbml0aWFsVmFsdWUpCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBU
b19tb3ZsX2kzMnIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBpbml0aWFs
VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0
SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAg
ICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlh
bFZhbHVlKSwgc2NyYXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDYgKzE1NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFj
cm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Mo
bGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0
Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIg
bGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAg
IHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQs
IENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKQEAgLTE3Niw2ICsxODEsMTEg
QEAgcHVibGljOgogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50
VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywg
dmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJh
bmNoMzJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0K
KwogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogI2lmIEVOQUJMRShBU1NF
TUJMRVJfV1hfRVhDTFVTSVZFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMw
LDcgKzEzMzAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRl
T3A4KE9QX01PVl9FYkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9
Ci0gICAgCisKICAgICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwpAQCAtMjA1NCw5ICsyMDU0
LDkgQEAgcHVibGljOgogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFRvX21vdnFfaTY0cih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQ2NF90IGltbSwgUmVnaXN0
ZXJJRCBkc3QpCiAgICAgeworICAgICAgICBjb25zdCBpbnQgaW5zdHJ1Y3Rpb25TaXplID0gMTA7
IC8vIFJFWC5XIE1PViBJTU02NAogICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOwogICAg
ICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwotICAgICAgICBBU1NFUlQocmV4Qnl0ZXMg
KyBvcGNvZGVCeXRlcyA8PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOwogICAgICAgICB1aW50
OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0YXJ0KTsK
ICAgICAgICAgcHRyWzBdID0gUFJFX1JFWCB8ICgxIDw8IDMpIHwgKGRzdCA+PiAzKTsKICAgICAg
ICAgcHRyWzFdID0gT1BfTU9WX0VBWEl2IHwgKGRzdCAmIDcpOwpAQCAtMjA2NiwxMSArMjA2Niwz
MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB1aW50OF90IGFzQnl0ZXNbOF07CiAgICAgICAgIH0g
dTsKICAgICAgICAgdS5hc1dvcmQgPSBpbW07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJl
eEJ5dGVzICsgb3Bjb2RlQnl0ZXM7IGkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpKTsgKytpKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXhCeXRl
cyArIG9wY29kZUJ5dGVzOyBpIDwgaW5zdHJ1Y3Rpb25TaXplOyArK2kpCisgICAgICAgICAgICBw
dHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5dGVzIC0gb3Bjb2RlQnl0ZXNdOworICAgIH0KKwor
ICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb19tb3ZsX2kzMnIodm9pZCogaW5zdHJ1Y3Rpb25T
dGFydCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgLy8gV2Ug
b25seSByZXZlcnQganVtcHMgb24gaW5saW5lIGNhY2hlcywgYW5kIGlubGluZSBjYWNoZXMgYWx3
YXlzIHVzZSB0aGUgc2NyYXRjaCByZWdpc3RlciAocjExKS4KKyAgICAgICAgLy8gRklYTUU6IElm
IHRoZSBhYm92ZSBpcyBldmVyIGZhbHNlIHRoZW4gd2UgbmVlZCB0byBtYWtlIHRoaXMgc21hcnRl
ciB3aXRoIHJlc3BlY3QgdG8gZW1pdHRpbmcgCisgICAgICAgIC8vIHRoZSBSRVggYnl0ZS4KKyAg
ICAgICAgQVNTRVJUKGRzdCA9PSBYODZSZWdpc3RlcnM6OnIxMSk7CisgICAgICAgIGNvbnN0IGlu
dCBpbnN0cnVjdGlvblNpemUgPSA2OyAvLyBSRVggTU9WIElNTTMyCisgICAgICAgIGNvbnN0IGlu
dCByZXhCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CisgICAg
ICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9u
U3RhcnQpOworICAgICAgICBwdHJbMF0gPSBQUkVfUkVYIHwgKGRzdCA+PiAzKTsKKyAgICAgICAg
cHRyWzFdID0gT1BfTU9WX0VBWEl2IHwgKGRzdCAmIDcpOworICAgICAgICAKKyAgICAgICAgdW5p
b24geworICAgICAgICAgICAgdWludDMyX3QgYXNXb3JkOworICAgICAgICAgICAgdWludDhfdCBh
c0J5dGVzWzRdOworICAgICAgICB9IHU7CisgICAgICAgIHUuYXNXb3JkID0gaW1tOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzOyBpIDwgaW5zdHJ1Y3Rp
b25TaXplOyArK2kpCiAgICAgICAgICAgICBwdHJbaV0gPSB1LmFzQnl0ZXNbaSAtIHJleEJ5dGVz
IC0gb3Bjb2RlQnl0ZXNdOwogICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgc3RhdGljIHZvaWQg
cmV2ZXJ0SnVtcFRvX2NtcGxfaXJfZm9yY2UzMih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQz
Ml90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBjb25zdCBpbnQgb3Bjb2Rl
Qnl0ZXMgPSAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJv
ZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywyNCArNzcs
MjUgQEAgdm9pZCBkdW1wQXJyYXlNb2RlcyhQcmludFN0cmVhbSYgb3V0LCBBcgogCiB2b2lkIEFy
cmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRM
b2NrZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBpZiAoIW1fbGFzdFNlZW5TdHJ1
Y3R1cmUpCisgICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJlSUQpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0dXJl
KG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVyZSogbGFzdFNlZW5TdHJ1Y3R1cmUg
PSBjb2RlQmxvY2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX2xhc3RTZWVuU3Ry
dWN0dXJlSUQpOworICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHw9IGFycmF5TW9kZUZyb21TdHJ1
Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAogICAgIGlmICghbV9kaWRQZXJmb3JtRmly
c3RSdW5QcnVuaW5nCiAgICAgICAgICYmIGhhc1R3b09yTW9yZUJpdHNTZXQobV9vYnNlcnZlZEFy
cmF5TW9kZXMpKSB7Ci0gICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVzID0gYXJyYXlNb2RlRnJv
bVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICAgICAgbV9vYnNlcnZlZEFycmF5
TW9kZXMgPSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAg
ICAgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nID0gdHJ1ZTsKICAgICB9CiAgICAgCiAgICAg
bV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgfD0KLSAgICAgICAgbV9sYXN0U2VlblN0cnVj
dHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5X
aGVuTGVuZ3RoSXNOb3RaZXJvKCk7CisgICAgICAgIGxhc3RTZWVuU3RydWN0dXJlLT50eXBlSW5m
bygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKTsKLSAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3Ry
dWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpCi0gICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlz
T3JpZ2luYWxUeXBlZEFycmF5U3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpKQorICAgIGlm
ICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1
cmUpCisgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxUeXBlZEFycmF5U3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKSkKICAgICAgICAgbV91c2VzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZXMgPSBmYWxzZTsKLSAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gMDsKKyAgICBtX2xhc3RT
ZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCiBDU3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNj
cmlwdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogY29k
ZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xh
c3MgQXJyYXlQcm9maWxlIHsKIHB1YmxpYzoKICAgICBBcnJheVByb2ZpbGUoKQogICAgICAgICA6
IG1fYnl0ZWNvZGVPZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQot
ICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmUoMCkKKyAgICAgICAgLCBtX2xhc3RTZWVuU3Ry
dWN0dXJlSUQoMCkKICAgICAgICAgLCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQogICAgICAgICAs
IG1fb3V0T2ZCb3VuZHMoZmFsc2UpCiAgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMoZmFsc2UpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIEFycmF5
UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmUoMCkKKyAg
ICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQoMCkKICAgICAgICAgLCBtX21heVN0b3JlVG9I
b2xlKGZhbHNlKQogICAgICAgICAsIG1fb3V0T2ZCb3VuZHMoZmFsc2UpCiAgICAgICAgICwgbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCkBAIC0xNTksMTQgKzE1OSwxNCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgCi0gICAgU3RydWN0dXJlKiogYWRkcmVzc09mTGFz
dFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZTsgfQorICAgIFN0
cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkgeyByZXR1cm4gJm1fbGFz
dFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMqIGFkZHJlc3NPZkFycmF5TW9kZXMo
KSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0KICAgICBib29sKiBhZGRyZXNzT2ZN
YXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3JlVG9Ib2xlOyB9CiAgICAgYm9vbCog
YWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9vdXRPZkJvdW5kczsgfQogICAgIAog
ICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgICAgIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYsIENvZGVC
bG9jayopOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUq
PihyZWludGVycHJldF9jYXN0PHZvaWQqPigxKSk7IH0KICAgICAKICAgICB1bnNpZ25lZCBtX2J5
dGVjb2RlT2Zmc2V0OwotICAgIFN0cnVjdHVyZSogbV9sYXN0U2VlblN0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQ7CiAgICAgYm9vbCBtX21heVN0b3JlVG9I
b2xlOyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVy
IHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3Ms
IGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUg
YmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0
b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFt
ZSBpbXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kczsKICAgICBib29sIG1fbWF5SW50ZXJj
ZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDYgKzY2OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbnN0YW50QnVmZmVyQXNWZWN0b3IoaW5kZXgp
LmRhdGEoKTsKICAgICB9CiAKKyAgICBIZWFwKiBoZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFw
OyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFs
T2JqZWN0LmdldCgpOyB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yKENv
ZGVPcmlnaW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBK
U0NlbGw6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwg
SlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiB9OwpA
QCAtNTc5LDcgKzU3OSw3IEBAIHByaXZhdGU6CiAKIHByb3RlY3RlZDoKIAotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgVGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uLAogICAgICAg
ICBHbG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nCiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yRGV0YWNoKTsKKyAgICBKU19FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yRGV0YWNo
KTsKIAogICAgIEJyZWFrcG9pbnRJRCBzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQsIHVuc2lnbmVk
JiBhY3R1YWxMaW5lLCB1bnNpZ25lZCYgYWN0dWFsQ29sdW1uKTsKICAgICB2b2lkIHJlbW92ZUJy
ZWFrcG9pbnQoQnJlYWtwb2ludElEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEhlYXAuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEpTQXJyYXlC
dWZmZXJWaWV3X2xlbmd0aCkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X21vZGUpIFwK
ICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld192ZWN0b3IpIFwKLSAgICBtYWNybyhKU0NlbGxf
c3RydWN0dXJlKSBcCisgICAgbWFjcm8oSlNDZWxsX3N0cnVjdHVyZUlEKSBcCisgICAgbWFjcm8o
SlNDZWxsX2luZGV4aW5nVHlwZSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKSBc
CisgICAgbWFjcm8oSlNDZWxsX3R5cGVJbmZvVHlwZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25f
ZXhlY3V0YWJsZSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fc2NvcGVDaGFpbikgXAogICAgIG1h
Y3JvKEpTT2JqZWN0X2J1dHRlcmZseSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMjMgKzEyMCwxNCBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIGlmIChtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7CiAgICAgICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1
bXAuZmlsbCgKLSAgICAgICAgICAgICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1B0cigK
LSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgIGppdCwgaml0LT5tX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3N0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gQWxhcywgd2UgbmVlZCB0byByZWxvYWQgdGhlIHN0cnVjdHVyZSBi
ZWNhdXNlIHNpbGVudCBzcGlsbGluZyBkb2VzIG5vdCBzYXZlCi0gICAgICAgICAgICAvLyB0ZW1w
b3Jhcmllcy4gTm9yIHdvdWxkIGl0IGJlIHVzZWZ1bCBmb3IgaXQgdG8gZG8gc28uIEVpdGhlciB3
YXkgd2UncmUgdGFsa2luZwotICAgICAgICAgICAgLy8gYWJvdXQgYSBsb2FkLgotICAgICAgICAg
ICAgaml0LT5tX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIG1fc3RydWN0dXJl
R1BSKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRmluYWxseSwgY2hlY2sgdGhhdCB3
ZSBoYXZlIHRoZSBraW5kIG9mIGFycmF5IHN0b3JhZ2UgdGhhdCB3ZSB3YW50ZWQgdG8gZ2V0Lgog
ICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMgYSBiYWNrd2FyZHMgc3BlY3VsYXRpb24g
Y2hlY2ssIHdoaWNoIHdpbGwgcmVzdWx0IGluIHRoZSAKICAgICAgICAgICAgIC8vIGJ5dGVjb2Rl
IG9wZXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYXJyYXlpZmljYXRpb24gYmVpbmcgcmVl
eGVjdXRlZC4KICAgICAgICAgICAgIC8vIFRoYXQncyBmaW5lLCBzaW5jZSBhcnJheWlmaWNhdGlv
biBpcyBub3QgdXNlci12aXNpYmxlLgogICAgICAgICAgICAgaml0LT5tX2ppdC5sb2FkOCgKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3N0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BSKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CiAgICAgICAgICAgICBtX2JhZEluZGV4
aW5nVHlwZUp1bXAuZmlsbCgKICAgICAgICAgICAgICAgICBqaXQsIGppdC0+anVtcFNsb3dGb3JV
bndhbnRlZEFycmF5TW9kZShtX3N0cnVjdHVyZUdQUiwgbV9hcnJheU1vZGUpKTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyAgIHZlcnNpb25zIG9mIHRob3NlIG5vZGVzIHRoYXQg
YmFja3dhcmQtZXhpdCBpbnN0ZWFkLCBidXQgSSdtIG5vdCBjb252aW5jZWQKICAgICAvLyAgIG9m
IHRoZSBzb3VuZG5lc3MuCiAgICAgLy8KLSAgICAvLyAtIFNvbWUgbm9kZXMgbGllLCBhbmQgY2xh
aW0gdGhhdCB0aGV5IGRvIG5vdCByZWFkIHRoZSBKU0NlbGxfc3RydWN0dXJlLgorICAgIC8vIC0g
U29tZSBub2RlcyBsaWUsIGFuZCBjbGFpbSB0aGF0IHRoZXkgZG8gbm90IHJlYWQgdGhlIEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCwgSlNDZWxsX3R5cGVJbmZvRmxhZ3MsIGV0Yy4KICAgICAvLyAgIFRoZXNl
IGFyZSBub2RlcyB0aGF0IHVzZSB0aGUgc3RydWN0dXJlIGluIGEgd2F5IHRoYXQgZG9lcyBub3Qg
ZGVwZW5kIG9uCiAgICAgLy8gICB0aGluZ3MgdGhhdCBjaGFuZ2UgdW5kZXIgc3RydWN0dXJlIHRy
YW5zaXRpb25zLgogICAgIC8vCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAvLyAgIHNtYWxsIGhhY2tpbmcuCiAgICAgCiAgICAg
aWYgKGVkZ2VzVXNlU3RydWN0dXJlKGdyYXBoLCBub2RlKSkKLSAgICAgICAgcmVhZChKU0NlbGxf
c3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgIAogICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25zdGFudDoKQEAgLTQxMiwxOSAr
NDEyLDMwIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAg
ICAgCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRp
b25XYXRjaHBvaW50OgorICAgIGNhc2UgSW5zdGFuY2VPZjoKKyAgICAgICAgcmVhZChKU0NlbGxf
c3RydWN0dXJlSUQpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIENoZWNrQXJyYXk6Cisg
ICAgICAgIHJlYWQoSlNDZWxsX2luZGV4aW5nVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5
cGVJbmZvVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAg
cmV0dXJuOworCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgotICAgIGNhc2UgSW5zdGFuY2VP
ZjoKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChKU0NlbGxf
dHlwZUluZm9GbGFncyk7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBjYXNlIENo
ZWNrRXhlY3V0YWJsZToKICAgICAgICAgcmVhZChKU0Z1bmN0aW9uX2V4ZWN1dGFibGUpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgIGNhc2Ug
UGhhbnRvbVB1dFN0cnVjdHVyZToKLSAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZSk7Cisg
ICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF90
eXBlSW5mb1R5cGUpOworICAgICAgICB3cml0ZShKU0NlbGxfdHlwZUluZm9GbGFncyk7CisgICAg
ICAgIHdyaXRlKEpTQ2VsbF9pbmRleGluZ1R5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CkBAIC00NDQsOSArNDU1LDExIEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgCiAgICAg
Y2FzZSBBcnJheWlmeToKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAgIHJl
YWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsK
KyAgICAgICAgcmVhZChKU0NlbGxfaW5kZXhpbmdUeXBlKTsKICAgICAgICAgcmVhZChKU09iamVj
dF9idXR0ZXJmbHkpOwotICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAg
d3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5n
VHlwZSk7CiAgICAgICAgIHdyaXRlKEpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAgICAgIGNsb2Ji
ZXJpemVGb3JBbGxvY2F0aW9uKHJlYWQsIHdyaXRlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY5
LDE3ICs0ODIsMTcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKLSAg
ICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0
dXJlSUQpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7CiAgICAgICAgIHJlYWQo
QWJzdHJhY3RIZWFwKE5hbWVkUHJvcGVydGllcywgbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEo
KS5pZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0
dGVyZmx5KTsKICAgICAgICAgd3JpdGUoQWJzdHJhY3RIZWFwKE5hbWVkUHJvcGVydGllcywgbm9k
ZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgICAgIGlm
IChub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLndyaXRlc1N0cnVjdHVyZXMoKSkKLSAgICAg
ICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgd3JpdGUoSlNDZWxs
X3N0cnVjdHVyZUlEKTsKICAgICAgICAgaWYgKG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCku
cmVhbGxvY2F0ZXNTdG9yYWdlKCkpIHsKICAgICAgICAgICAgIHdyaXRlKEpTT2JqZWN0X2J1dHRl
cmZseSk7CiAgICAgICAgICAgICBjbG9iYmVyaXplRm9yQWxsb2NhdGlvbihyZWFkLCB3cml0ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw3ICsyNDksMjkgQEAgcHVibGljOgogICAgICAgICBh
ZGRXZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
LSAgICAKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgSnVtcCBicmFuY2hXZWFrU3Ry
dWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1cmUqIHdlYWtT
dHJ1Y3R1cmUpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIEp1bXAgcmVzdWx0
ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHdlYWtTdHJ1Y3R1cmUtPmlkKCkp
KTsKKyAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrU3RydWN0dXJlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2hXZWFrUHRyKGNvbmQsIGxl
ZnQsIHdlYWtTdHJ1Y3R1cmUpOworI2VuZGlmCisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBKdW1wIGJyYW5jaFN0cnVjdHVyZVB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFQgbGVmdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIoc3Ry
dWN0dXJlLT5pZCgpKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxl
ZnQsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lk
IG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJl
bCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiAgICAgewogICAgICAgICAvLyBP
U1IgZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5
IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ2NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDggKzEyMSw4IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVy
Ojpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCk7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBl
cnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+
YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3Jh
dGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhzY3JhdGNo
MSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3Jh
dGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyNjQuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDkgKzEx
Niw5IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5ncHIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3Jh
dGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEs
IFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAgICAgIG1faml0
LnN0b3JlMzIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFk
ZHJlc3ModmFsdWUsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBz
Y3JhdGNoMik7CiAgICAgICAgICAgICAgICAgbV9qaXQub3IzMihzY3JhdGNoMiwgQXNzZW1ibHlI
ZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZBcnJheU1vZGVz
KCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYyLDkgKzE2Miw5IEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhl
bHBlcnMKIH0KIAogI2lmIEVOQUJMRShHR0MpCi1zdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcg
c2NyYXRjaDIpCitzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQs
IEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gpCiB7Ci0gICAgQXNzZW1ibHlIZWxwZXJzOjpK
dW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBqaXQuZ2VuZXJpY1dyaXRlQmFycmllcihvd25lciwg
c2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZGVmaW5pdGVs
eU5vdE1hcmtlZCA9IGppdC5nZW5lcmljV3JpdGVCYXJyaWVyKG93bmVyKTsKIAogICAgIC8vIFdl
IG5lZWQgdGhlc2UgZXh0cmEgc2xvdHMgYmVjYXVzZSBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUgd2lsbCB1c2UgcG9rZSBvbiB4ODYuCiAjaWYgQ1BVKFg4NikKQEAgLTE3Miw4ICsxNzIsOCBA
QCBzdGF0aWMgdm9pZCBvc3JXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzCiAjZW5kaWYKIAogICAg
IGppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob3duZXIpOwotICAgIGppdC5tb3ZlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9wZXJh
dGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoMSk7Ci0gICAgaml0LmNhbGwoc2NyYXRjaDEp
OworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KG9wZXJhdGlvbk9TUldyaXRlQmFycmllcikpLCBzY3JhdGNoKTsKKyAgICBq
aXQuY2FsbChzY3JhdGNoKTsKIAogI2lmIENQVShYODYpCiAgICAgaml0LmFkZFB0cihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZih2b2lkKikgKiAzKSwgTWFjcm9Bc3NlbWJsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChDQ2FsbEhlbHBlcnMmCiAgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmNhbGxlcikgewogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2Nr
ID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pOwogICAgICAgICBqaXQubW92
ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYmFzZWxpbmVDb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpKSwgR1BSSW5mbzo6bm9uQXJnR1BSMCk7IAotICAgICAgICBvc3JXcml0ZUJh
cnJpZXIoaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIxLCBHUFJJ
bmZvOjpub25BcmdHUFIyKTsKKyAgICAgICAgb3NyV3JpdGVCYXJyaWVyKGppdCwgR1BSSW5mbzo6
bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMSk7CiAgICAgICAgIGlmICghY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE2NDY1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4
ZWNTdGF0ZSogZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVl
LCBzdHJpY3QpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleChv
YmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwgc3RyaWN0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMjIyLDEyICsyMjIsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UbwogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvciwgaW50MzJfdCBpbmxpbmVDYXBh
Y2l0eSkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgQVNTRVJUKGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3RE
YXRhKGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLCBjb25zdHJ1Y3REYXRhKSA9PSBD
b25zdHJ1Y3RUeXBlSlMpOworICAgIEFTU0VSVChqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVj
dG9yKS0+bWV0aG9kVGFibGUodm0pLT5nZXRDb25zdHJ1Y3REYXRhKGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4oY29uc3RydWN0b3IpLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOwogI2Vu
ZGlmCiAgICAgCiAgICAgcmV0dXJuIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5hbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVD
YXBhY2l0eSktPnN0cnVjdHVyZSgpKTsKQEAgLTM5Miw4ICszOTIsOCBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGFycmF5LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgCiAgICAgaWYgKGluZGV4ID49IDAp
IHsKICAgICAgICAgYXJyYXktPnB1dEJ5SW5kZXhJbmxpbmUoZXhlYywgaW5kZXgsIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCB0cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5k
Lm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7Cisg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQ
YXlsb2FkR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAKICAgICAg
ICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5k
Lm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBicmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOwogICAgCiAg
ICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdw
cigpOwpAQCAtMTEzNiwxOCArMTEzNiwxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
T2JqZWN0RXF1YWxpCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkg
c3RydWN0dXJlKHRoaXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJl
LmdwcigpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMTE1OSw3ICsxMTU5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xMjEzLDEwICsx
MjEzLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLApAQCAtMTI0MSwxMCArMTI0MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdH
UFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCkBAIC0xMzIwLDEwICsxMzIwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKQEAgLTEzNDcs
MTAgKzEzNDcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQog
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRD
aGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2Vs
bCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTQ0Mywx
MCArMTQ0MywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9k
ZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgc3RydWN0dXJlR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0xNTczLDEwICsxNTczLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hH
UFIpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRh
Z0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LApAQCAtMzA3Nyw3ICszMDc3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBh
eWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIpOwpAQCAtMzExMCw3ICszMTEw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
b3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CkBAIC0zNDc3LDcgKzM0NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIo
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRoaXNWYWx1ZVRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCkBAIC0zNzg3LDEyICszNzg3LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBCYWRDYWNoZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAsCiAgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoV2Vha1B0cigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAg
ICAgCkBAIC0zODIzLDcgKzM4MjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50
KCk7CiAgICAgICAgIGlzT0subGluaygmbV9qaXQpOwogI2Vsc2UKQEAgLTM4NDcsNyArMzg0Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRp
b25EYXRhKCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgp
Lm5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7
CiAgICAgICAgIGJyZWFrOwpAQCAtNDA1MSw3ICs0MDUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRo
aXMpOwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3By
KCkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2Uu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KSkpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDA4MCw3ICs0MDgwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5i
cmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CkBAIC00MTI0LDcgKzQxMjQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2
YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQxNzgs
NyArNDE3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJl
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAgICAg
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAg
ICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIp
LCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5nKTsKQEAgLTQ3MDgsNyArNDcw
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAgICBpZiAo
IWlzS25vd25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdHUFIsIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVy
R1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRl
bHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CiAgICAg
c3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsK
ICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lv
biAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsMTIgKzI0NywxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVt
b3RlR2xvYmFsT2JqZWN0KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAg
ICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGFyZ0dQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1f
aml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVz
dGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdEdQUik7CiAgICAgICAgIG5vdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CkBAIC0yNjEsNiArMjY0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShhcmdH
UFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNl
dCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihp
bnZlcnQgPyBKSVRDb21waWxlcjo6Tm90RXF1YWwgOiBKSVRDb21waWxlcjo6RXF1YWwsIGxvY2Fs
R2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CiAgICAg
fQpAQCAtMzExLDE2ICszMTUsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRp
dmVQZWVwaAogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9i
amVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlz
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFp
c0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQu
YnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAg
ICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDog
bm90VGFrZW4pOworICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgCisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpLCAKKyAgICAgICAgICAgIGludmVydCA/IHRha2VuIDogbm90VGFr
ZW4pOwogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVt
b3RlR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1
Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0
cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxP
YmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwogICAgIH0KQEAgLTE1MTksNDEg
KzE1MjcsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAg
CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkp
IHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHN0cnVj
dHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ay
R1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNTc2LDM3ICsxNTc5LDI2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOwogICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwot
ICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOwogCiAgICAgYm9vbCBtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkID0KICAgICAgICAgbWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKIAotICAgIGlmICghbWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewotICAgICAgICAvLyBUaGUgbWFzcXVlcmFk
ZXMgYXMgdW5kZWZpbmVkIGNhc2Ugd2lsbCB1c2UgdGhlIHN0cnVjdHVyZSByZWdpc3Rlciwgc28g
YWxsb2NhdGUgaXQgaGVyZS4KLSAgICAgICAgLy8gRG8gdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBm
dW5jdGlvbiB0byBhdm9pZCBicmFuY2hpbmcgYXJvdW5kIGEgcmVnaXN0ZXIgYWxsb2NhdGlvbi4K
LSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIHN0cnVj
dHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKLSAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0
dXJlLmdwcigpOwotICAgIH0KLQogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChv
cDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAg
LTE2MTgsMjEgKzE2MTAsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZQogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQg
bXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxk
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjc5LDM3ICsxNjcwLDI2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBHUFJSZWcg
b3AxR1BSID0gb3AxLmdwcigpOwogICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0
dXJlOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOwogICAgIAotICAg
IGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CisgICAgYm9vbCBt
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkID0gCiAgICAgICAgIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CiAKLSAgICBpZiAoIW1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgLy8gVGhlIG1hc3F1
ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIs
IHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0gICAgICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0
aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRp
b24uCi0gICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOwotICAgICAgICBz
dHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7Ci0gICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0
cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0KICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBs
ZWZ0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KIApA
QCAtMTcyMSwyMSArMTcwMSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGls
ZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBv
aW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVl
UmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hp
bGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAg
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xODMzLDYgKzE4MTIs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlOwog
ICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBJbnZhbGlkR1BSUmVnOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoOworICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gSW52YWxpZEdQUlJlZzsKIAogICAg
IGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAgIG1h
c3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7CkBAIC0xODQxLDMy
ICsxODIyLDM0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAg
ICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdpbGwgdXNlIHRoZSBz
dHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCiAgICAgICAgIC8vIERvIHRo
aXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNoaW5nIGFyb3VuZCBh
IHJlZ2lzdGVyIGFsbG9jYXRpb24uCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJl
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFNjcmF0Y2godGhpcyk7CiAgICAgICAg
IHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc2NyYXRjaC5hZG9wdChy
ZWFsU2NyYXRjaCk7CiAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAg
ICAgICAgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgfQogCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1h
c3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKLQogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKKyAgICAg
ICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWVHUFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRj
aEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCBub2RlVXNlLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIApAQCAtMTk4NSwzMSArMTk2OCw0MSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyCiB7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZVVzZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
OwogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNo
R1BSID0gc2NyYXRjaC5ncHIoKTsKLSAgICAKKyAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gSW52
YWxpZEdQUlJlZzsKKworICAgIGlmICghbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJ
c1N0aWxsVmFsaWQoKSkgeworICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlz
KTsKKyAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUpOworICAgICAgICBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgfQorCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSk7ICAgICAgICAgICAgICAgIAogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKLQogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVj
Q2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVl
UmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgc2NyYXRjaEdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6
Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6WmVybywgCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSk7CiAKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWVH
UFIsIHN0cnVjdHVyZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
KSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsK
QEAgLTM0MTcsNyArMzQxMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgCiAg
ICAgICAgIGFscmVhZHlQcmltaXRpdmUubGluaygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tb3Zl
KG9wMUdQUiwgcmVzdWx0R1BSKTsKQEAgLTM0NDMsMTAgKzM0MzksMTAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aDIgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCBy
ZXN1bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM2NjUsNyArMzY2MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBl
bWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UocmVzdWx0R1BSLCBzdG9yYWdlR1BSKSk7CiAgICAgICAg
ICAgICBtX2ppdC5zdWJQdHIoc2NyYXRjaEdQUiwgc3RvcmFnZUdQUik7CiAgICAgICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKLSAgICAgICAg
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgSW1tUHRyKHN0cnVj
dHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwor
ICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2gyR1BS
LCBzbG93Q2FzZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNp
emVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9m
VmVjdG9yTGVuZ3RoKCkpKTsKQEAgLTM4MDMsMTEgKzM3OTksOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDY0
KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRoaXNWYWx1ZUdQUiwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFs
dWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVH
UFIsIHRlbXBHUFIpOwogICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSiBmdW5jdGlvbjsKQEAgLTQw
OTgsMjQgKzQwOTIsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVj
dHVyZSgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJl
c3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgICAg
ICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUtPnN0cnVjdHVyZVNldCgp
LnNpemUoKSAtIDE7ICsraSkKLSAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFu
Y2hXZWFrUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLT5zdHJ1
Y3R1cmVTZXQoKVtpXSkpOworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5j
aFdlYWtTdHJ1Y3R1cmUoSklUQ29tcGlsZXI6OkVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1Y3R1
cmVTZXQoKVtpXSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlLmdwcigpKSwgMCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAotICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwg
bm9kZS0+c3RydWN0dXJlU2V0KCkubGFzdCgpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoV2Vha1N0cnVjdHVyZSgKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTQxMzEsMTIg
KzQxMjEsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAvLyB3ZSBzaG91bGRuJ3QgcmVhbGx5IGxvYWQgaXQgc2luY2UgdGhhdCBjb3VsZCBiZSBh
IHdhc3RlLiBGb3Igbm93IHRob3VnaCwKICAgICAgICAgLy8gd2UnbGwganVzdCByZWx5IG9uIHRo
ZSBmYWN0IHRoYXQgd2hlbiBhIHdhdGNocG9pbnQgZmlyZXMgdGhlbiB0aGF0J3MKICAgICAgICAg
Ly8gcXVpdGUgYSBoaW50IGFscmVhZHkuCi0gICAgICAgIAorCiAgICAgICAgIG1faml0LmFkZFdl
YWtSZWZlcmVuY2Uobm9kZS0+c3RydWN0dXJlKCkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBp
bGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAg
ICAgICBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAg
ICAgICAgaXNPSy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtNDE1NSwxNCArNDE0OCwxOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgfQogICAgICAgICAK
ICAgICBjYXNlIFB1dFN0cnVjdHVyZTogeworICAgICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSA9IG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlvdXNTdHJ1Y3R1cmU7Cisg
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJlVHJhbnNpdGlv
bkRhdGEoKS5uZXdTdHJ1Y3R1cmU7CisKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24u
bm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwg
bV9qaXQuY29kZUJsb2NrKCksIG5vZGUpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDEodGhpcyk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQuc3Rv
cmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNp
dGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQob2xk
U3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgQVNT
RVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOworICAgICAgICBtX2ppdC5zdG9y
ZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3U3RydWN0dXJlLT5pZCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00MzQyLDggKzQzMzksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogCiAgICAgICAgIC8v
IFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgotICAg
ICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwotICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hU
ZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQu
YnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCisgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogCiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTQzNzEsOCArNDM3MCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENv
bXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1
ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwogCkBAIC00NDE5LDggKzQ0MjAs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkp
OwotICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQu
Y29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisgICAg
ICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIAorICAgICAgICAgICAgcmVzdWx0Lmdw
cigpKTsKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CiAgICAgICAgIApAQCAtNDQ1OSw4ICs0NDYyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVHlwZU9mOiB7CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsK
ICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmVKdW1w
czsKQEAgLTQ0NzQsOCArNDQ3NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVl
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlm
ICghbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCB0ZW1wR1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1f
aml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0
ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0
cmluZ1R5cGUpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1f
aml0LmJyYW5jaDgoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCAKKyAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdU
eXBlKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmlu
Z1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVl
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0cmlu
Z1N0cmluZygpKSwgcmVzdWx0R1BSKTsKQEAgLTUwMjUsNyArNTAyOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAgICBpZiAoIWlzS25vd25DZWxsKHZhbHVl
VXNlLm5vZGUoKSkpCiAgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRD
b21waWxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9q
aXQsIG93bmVyR1BSKTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBz
Y3JhdGNoMSwgc2NyYXRjaDIpOwogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5OCw5ICs2OTgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgY2FzZSBBcnJheTo6
U2xvd1B1dEFycmF5U3RvcmFnZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwotICAgICAgICBtX2ppdC5sb2Fk
UHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwotICAgICAgICBtX2ppdC5sb2FkOChNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIDAsCiAgICAgICAgICAgICBqdW1wU2xv
d0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5vZGUtPmFycmF5TW9kZSgpKSk7CkBAIC03
MDksMTggKzcwNywyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5v
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBBcnJheTo6QXJndW1lbnRzOgotICAg
ICAgICBleHBlY3RlZENsYXNzSW5mbyA9IEFyZ3VtZW50czo6aW5mbygpOwotICAgICAgICBicmVh
azsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChiYXNlUmVnKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5jaDgoCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQXJndW1l
bnRzVHlwZSkpKTsKKworICAgICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGV4cGVjdGVkQ2xhc3NJbmZvID0gY2xhc3NJ
bmZvRm9yVHlwZShub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2g4KAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHR5
cGVGb3JUeXBlZEFycmF5VHlwZShub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpKSkp
KTsKKyAgICAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhwZWN0ZWRDbGFzc0luZm8pOwogICAgIAog
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCB0ZW1wLmdwcigpKTsKKyAgICBHUFJUZW1wb3JhcnkgdGVtcDIodGhpcyk7CisgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUoYmFzZVJlZywgdGVtcC5ncHIoKSwgdGVtcDIuZ3ByKCkpOwog
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLAogICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC03
NTAsMTYgKzc1OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlKiBub2Rl
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIAogICAgIGlmIChu
b2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoCisgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5i
cmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAot
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJl
KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHN0cnVjdHVyZUdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkOCgKLSAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBH
UFIpOwogICAgICAgICAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGp1bXBTbG93Rm9yVW53YW50
ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsKICAgICB9CkBAIC0xMTMx
LDI0ICsxMTM3LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUK
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNw
ZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAg
ICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hp
bGQxKCksIAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVj
T2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAg
IEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxk
MigpLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBz
dHJ1Y3R1cmUuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OworICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShvcDFHUFIsIHN0cnVjdHVyZUdQUiwg
dGVtcC5ncHIoKSk7CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLApAQCAtMTE2Myw3ICsxMTcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOworICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShvcDJHUFIsIHN0cnVjdHVyZUdQ
UiwgdGVtcC5ncHIoKSk7CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MkdQUiksIG5vZGUtPmNoaWxkMigpLApAQCAtMjUyNCwxOCArMjUzMSwxNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBH
UFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnKQor
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQ
UlJlZyB2YWx1ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcsIEdQ
UlJlZyBzY3JhdGNoMlJlZykKIHsKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBv
YmplY3QuCi0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b3R5
cGVSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmTm90
T2JqZWN0KHNjcmF0Y2hSZWcpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKCksIDAsIG1faml0LmJyYW5jaElmQ2VsbE5vdE9iamVjdChwcm90b3R5cGVSZWcpKTsK
ICAgICAKICAgICAvLyBJbml0aWFsaXplIHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFsdWUgYmVpbmcg
Y2hlY2tlZC4KICAgICBtX2ppdC5tb3ZlKHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsKICAgICAKICAg
ICAvLyBXYWxrIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4gb2YgdGhlIHZhbHVlIChpbiBzY3JhdGNo
UmVnKSwgY29tcGFyaW5nIHRvIHByb3RvdHlwZVJlZy4KICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFi
ZWwgbG9vcCgmbV9qaXQpOwotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc2NyYXRjaFJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwor
ICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHNjcmF0Y2hSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0
Y2gyUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwg
c2NyYXRjaFJlZyk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNJbnN0YW5jZSA9IG1faml0
LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywgcHJvdG90eXBlUmVn
KTsKQEAgLTI1NzQsOSArMjU4MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBw
cm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoUmVn
ID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2gyUmVnID0gc2NyYXRjaDIu
Z3ByKCk7CiAgICAgICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEdQUlJlZyB2YWx1
ZVJlZyA9IHZhbHVlLmdwcigpOwpAQCAtMjU5Myw3ICsyNjAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICAKICAgICAgICAgaXNDZWxsLmxpbmso
Jm1faml0KTsKICAgICAgICAgCi0gICAgICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5v
ZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgICAgICBjb21waWxl
SW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNo
UmVnLCBzY3JhdGNoMlJlZyk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
IApAQCAtMjYwOSwxMiArMjYxNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5z
dGFuY2VPZihOCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKICAgICAKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgCiAgICAgR1BSUmVnIHZhbHVlUmVnID0g
dmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHByb3RvdHlwZVJlZyA9IHByb3RvdHlwZS5ncHIoKTsK
ICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0
Y2gyUmVnID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgCi0gICAgY29tcGlsZUluc3RhbmNlT2ZGb3JP
YmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZyk7CisgICAgY29t
cGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHByb3RvdHlwZVJlZywgc2Ny
YXRjaFJlZywgc2NyYXRjaDJSZWcpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBqc1ZhbHVl
UmVzdWx0KHNjcmF0Y2hSZWcsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwpAQCAtNDM2Miwx
MCArNDM3MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAg
ICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZTogewogICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpFcXVhbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworCisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxl
cjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAg
IHJlc3VsdEdQUiwKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSk7CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUo
bm9kZS0+Y2hpbGQxKCksIHJlc3VsdEdQUik7CiAgICAgICAgIApAQCAtNDM5MiwxMCArNDQwNCwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPbkNlCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykgewotICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVkQ2FsbCA9IG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZShv
cDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwogICAg
ICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNDU5NiwxMCArNDYwOCwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3QoRWRnCiAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5n
cHIoKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZ3ByKSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTQ2MDgs
MTQgKzQ2MjAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplYwog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3BlcmFuZCh0
aGlzLCBlZGdlKTsKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgIEdQUlJl
ZyBncHIgPSBvcGVyYW5kLmdwcigpOwotICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgIERGR19UWVBF
X0NIRUNLKAogICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBT
cGVjRmluYWxPYmplY3QsIG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwK
ICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiB9CiAKQEAgLTQ2
MzIsMTAgKzQ2NDEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JP
dAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQo
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKGdwciks
IGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygm
bV9qaXQpOwogICAgIGlmIChuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhl
cikpIHsKQEAgLTQ2NTUsMTAgKzQ2NjQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlT2JqZWN0T3JPdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPQogICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAg
SlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5
bG9hZEdQUiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVj
T3RoZXIpKSB7CkBAIC00Njc4LDEwICs0Njg3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3QKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZyhF
ZGdlIGVkZ2UsIEdQUlJlZyBjZWxsKQogewogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZywgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsKSwgZWRn
ZSwgU3BlY1N0cmluZywgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3Rv
cmFnZSkKQEAgLTQ3MzQsNyArNDc0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZyhFZGcKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0
KEVkZ2UgZWRnZSwgR1BSUmVnIGdwcikKIHsKLSAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JT
dHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSk7CisgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2Us
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVk
Z2UpCkBAIC00NzYwLDE2ICs0NzY5LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZ09yU3QKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKICAgICBpZiAoIW5l
ZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNTdHJpbmcgfCBTcGVjU3RyaW5nT2JqZWN0KSkKICAgICAg
ICAgcmV0dXJuOworCisgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZUlEKHRoaXMpOworICAgIEdQ
UlJlZyBzdHJ1Y3R1cmVJREdQUiA9IHN0cnVjdHVyZUlELmdwcigpOworCisgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgc3RydWN0dXJlSURHUFIpOyAKKyAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLAorICAg
ICAgICBzdHJ1Y3R1cmVJREdQUiwgCisgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSk7CiAgICAgCi0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKLSAgICBH
UFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIAotICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKLSAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9
IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmVH
UFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7Ci0g
ICAgCi0gICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIHN0cnVjdHVy
ZUdQUik7CisgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIHN0cnVj
dHVyZUlER1BSKTsKICAgICAKICAgICBpc1N0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgCkBAIC01
MDM0LDEwICs1MDQ0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5v
ZGUKICNlbmRpZgogICAgICAgICAKICAgICAgICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsK
ICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdz
LnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CkBAIC01MzM0LDEwICs1MzQ0LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcoTm8KICNlbmRpZgogICAgICAgICAKICAgICAg
ICAgYWRkQnJhbmNoKAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
bV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFS
ZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAg
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSwKICAgICAgICAg
ICAgIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0
Y2hTdHJpbmdPblN0cmluZyhkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSk7CkBAIC01NDI2LDMw
ICs1NDM2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdG9yZUJhcnJpZXIKICAg
ICBub1Jlc3VsdChub2RlKTsKIH0KIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6
OmdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BS
UmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCitKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxh
dGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93
bmVyKQogewotICAgIGppdC5tb3ZlKG93bmVyLCBzY3JhdGNoMSk7Ci0gICAgaml0Lm1vdmUob3du
ZXIsIHNjcmF0Y2gyKTsKLQotICAgIGppdC5hbmRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gxKTsKLSAgICBqaXQuYW5kUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKH5NYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwg
c2NyYXRjaDIpOwotCi0gICAgLy8gU2hpZnQgaW5kZXgKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAg
IGppdC5yc2hpZnQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hcmtlZEJsb2NrOjph
dG9tU2hpZnRBbW91bnQgKyBNYXJrZWRCbG9jazo6bWFya0J5dGVTaGlmdEFtb3VudCksIHNjcmF0
Y2gyKTsKLSNlbHNlCi0gICAgaml0LnJzaGlmdDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoTWFya2VkQmxvY2s6OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNo
aWZ0QW1vdW50KSwgc2NyYXRjaDIpOwotI2VuZGlmCi0KLSAgICAvLyBFbWl0IGxvYWQgYW5kIGJy
YW5jaAotICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1h
Y3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaDEsIHNjcmF0Y2gyLCBNYWNyb0Fzc2VtYmxl
cjo6VGltZXNPbmUsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtzKCkpKTsKKyAgICByZXR1cm4g
aml0LmJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOwogfQogCiBKSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGpp
dCwgSlNDZWxsKiBvd25lcikKIHsKLSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJrZWRCbG9j
azo6YmxvY2tGb3Iob3duZXIpOwotICAgIHNpemVfdCBtYXJrSW5kZXggPSAocmVpbnRlcnByZXRf
Y2FzdDxzaXplX3Q+KG93bmVyKSAmIH5NYXJrZWRCbG9jazo6YmxvY2tNYXNrKSA+PiAoTWFya2Vk
QmxvY2s6OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNoaWZ0QW1vdW50
KTsKLSAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ocmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oYmxvY2spICsgTWFya2VkQmxvY2s6Om9mZnNldE9mTWFya3Mo
KSkgKyBtYXJrSW5kZXg7CisgICAgdWludDhfdCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KG93bmVyKSArIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCk7CiAgICAgcmV0dXJuIGpp
dC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFic29s
dXRlQWRkcmVzcyhhZGRyZXNzKSk7CiB9CiAKQEAgLTU1MDksMTQgKzU1MDMsMTQgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZwogICAgIGlmIChIZWFwOjppc01hcmtl
ZCh2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmlu
aXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUiwgc2Ny
YXRjaDEsIHNjcmF0Y2gyKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFy
a2VkID0gZ2VuZXJpY1dyaXRlQmFycmllcihtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9X
cml0ZUJhcnJpZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CiAgICAgZGVm
aW5pdGVseU5vdE1hcmtlZC5saW5rKCZtX2ppdCk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OndyaXRlQmFycmllcihHUFJSZWcgb3duZXJHUFIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNj
cmF0Y2gyKQogewotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBn
ZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsK
KyAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIo
b3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CiAgICAgZGVmaW5pdGVseU5vdE1hcmtlZC5s
aW5rKCZtX2ppdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw3ICsyOTYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKEdQUlJlZyBj
ZWxsLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCBzdG9yZVRv
V3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsbCosIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0
Y2gyKTsKIAotICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVy
KENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVn
IHNjcmF0Y2gyKTsKKyAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAgZ2VuZXJpY1dyaXRlQmFy
cmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyKTsKICAgICBzdGF0aWMgSklUQ29t
cGlsZXI6Okp1bXAgZ2VuZXJpY1dyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgSlNDZWxs
KiBvd25lcik7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2Ny
YXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAgICAgdm9pZCB3cml0ZUJhcnJpZXIoR1BSUmVnIG93
bmVyLCBKU0NlbGwqIHZhbHVlLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CkBA
IC03MzksNyArNzM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9IGZhbHNlKTsKICAgICBib29sIG5vblNw
ZWN1bGF0aXZlU3RyaWN0RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIAotICAg
IHZvaWQgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywg
R1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hBbmRSZXN1bHRSZWcpOworICAgIHZv
aWQgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1ZVJlZywgR1BS
UmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hBbmRSZXN1bHRSZWcsIEdQUlJlZyBzY3Jh
dGNoMlJlZyk7CiAgICAgdm9pZCBjb21waWxlSW5zdGFuY2VPZihOb2RlKik7CiAgICAgCiAgICAg
cHRyZGlmZl90IGNhbGxlZUZyYW1lT2Zmc2V0KGludCBudW1BcmdzKQpAQCAtMjEwNSw3ICsyMTA1
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNsb3dQYXRoOwogICAgIH0K
LSAgICAKKwogICAgIC8vIEFsbG9jYXRvciBmb3IgYSBjZWxsIG9mIGEgc3BlY2lmaWMgc2l6ZS4K
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU3RydWN0dXJlVHlwZT4gLy8gU3RydWN0dXJlVHlwZSBj
YW4gYmUgR1BSIG9yIEltbVB0ci4KICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQ2VsbChHUFJSZWcg
cmVzdWx0R1BSLCBHUFJSZWcgYWxsb2NhdG9yR1BSLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwK
QEAgLTIxMjAsNyArMjEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2Ny
YXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYWxsb2NhdG9yR1BSLCBNYXJrZWRBbGxv
Y2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAogICAgICAgICAvLyBJbml0aWFsaXpl
IHRoZSBvYmplY3QncyBTdHJ1Y3R1cmUuCi0gICAgICAgIG1faml0LnN0b3JlUHRyKHN0cnVjdHVy
ZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSk7CisgICAgICAgIG1faml0LmVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhz
dHJ1Y3R1cmUsIHJlc3VsdEdQUiwgc2NyYXRjaEdQUik7CiAgICAgfQogCiAgICAgLy8gQWxsb2Nh
dG9yIGZvciBhbiBvYmplY3Qgb2YgYSBzcGVjaWZpYyBzaXplLgpAQCAtMzA0NSw4ICszMDQ1LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZQogICAgIGlmICghbV9z
dGF0ZS5mb3JOb2RlKGVkZ2UpLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2YoU3Ry
dWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCiAgICAgICAgICAgICBOb3RTdHJpbmdPYmplY3QsIEpTVmFsdWVSZWdzKCksIDAsCi0g
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgVHJ1c3RlZEltbVB0cihzdHJpbmdPYmplY3RT
dHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3Ry
aW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiQVBJU2hpbXMuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAjaW5jbHVkZSAi
REZHTG9uZ0xpdmVkU3RhdGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gMTY0NjU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5OjpBYnN0cmFjdEhlYXBSZXBvCiAgICAgRk9SX0VBQ0hfQUJTVFJBQ1RfRklFTEQoQUJTVFJB
Q1RfRklFTERfSU5JVElBTElaQVRJT04pCiAjdW5kZWYgQUJTVFJBQ1RfRklFTERfSU5JVElBTEla
QVRJT04KICAgICAKLSAgICAsIEpTQ2VsbF9mcmVlTGlzdE5leHQoSlNDZWxsX3N0cnVjdHVyZSkK
KyAgICAsIEpTQ2VsbF9mcmVlTGlzdE5leHQoSlNDZWxsX3N0cnVjdHVyZUlEKQogICAgIAogI2Rl
ZmluZSBJTkRFWEVEX0FCU1RSQUNUX0hFQVBfSU5JVElBTElaQVRJT04obmFtZSwgb2Zmc2V0LCBz
aXplKSAsIG5hbWUoY29udGV4dCwgJnJvb3QsICNuYW1lLCBvZmZzZXQsIHNpemUpCiAgICAgRk9S
X0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKElOREVYRURfQUJTVFJBQ1RfSEVBUF9JTklUSUFM
SVpBVElPTikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAg
IG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19tb2RlLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZNb2RlKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmll
d192ZWN0b3IsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSBcCi0gICAgbWFj
cm8oSlNDZWxsX3N0cnVjdHVyZSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkgXAorICAgIG1h
Y3JvKEpTQ2VsbF9zdHJ1Y3R1cmVJRCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCisg
ICAgbWFjcm8oSlNDZWxsX3R5cGVJbmZvRmxhZ3MsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSBcCisgICAgbWFjcm8oSlNDZWxsX3R5cGVJbmZvVHlwZSwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF9pbmRleGluZ1R5cGUsIEpTQ2VsbDo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfZ2NEYXRhLCBKU0NlbGw6Omdj
RGF0YU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fc2NvcGUs
IEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigpKSBcCiAgICAgbWFjcm8oSlNPYmplY3Rf
YnV0dGVyZmx5LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpIFwKQEAgLTYyLDYgKzY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKE1hcmtlZEJsb2Nr
X21hcmtCaXRzLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSBcCiAgICAgbWFjcm8oU3Ry
aW5nSW1wbF9kYXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJp
bmdJbXBsX2hhc2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSkgXAorICAgIG1h
Y3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9P
ZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdUeXBl
LCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY0NjU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NDAsMTIgKzE1NDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgZXhpdEtpbmQgPSBCYWRDYWNoZTsKICAgICAgICAgCi0gICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxsLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2Rl
LT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRlKAog
ICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0gICAgICAg
ICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0
cnVjdHVyZVNldCgpWzBdKSkpOworICAgICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVj
dHVyZUlELCB3ZWFrU3RydWN0dXJlKG1fbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xNTU1LDE0ICsxNTU1LDE0
IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGUtPnN0
cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7ICsraSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bmV4dFN0cnVjdHVyZSA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ2hlY2tTdHJ1Y3R1cmUgbmV4
dFN0cnVjdHVyZSIpKTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAg
ICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2ludGVyKG1fbm9kZS0+c3RydWN0dXJlU2V0
KClbaV0pKSwKKyAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0
cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSksCiAgICAgICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShuZXh0U3RydWN0dXJlKSk7CiAgICAgICAgICAgICBt
X291dC5hcHBlbmRUbyhuZXh0U3RydWN0dXJlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgZXhpdEtpbmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwg
MCwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9u
b2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7CisgICAgICAgICAgICBtX291dC5ub3RFcXVh
bChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3Qo
KSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xNjAyLDEwICsx
NjAyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1
cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFycmF5aWZ5VG9TdHJ1Y3R1cmUgdW5leHBlY3Rl
ZCBzdHJ1Y3R1cmUiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9O
RVdfQkxPQ0sobV9vdXQsICgiQXJyYXlpZnlUb1N0cnVjdHVyZSBjb250aW51YXRpb24iKSk7CiAg
ICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBt
X291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAK
ICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0
dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZSgpKSksCisgICAgICAgICAgICBtX291
dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZSgp
KSksCiAgICAgICAgICAgICByYXJlbHkodW5leHBlY3RlZFN0cnVjdHVyZSksIHVzdWFsbHkoY29u
dGludWF0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1f
b3V0LmFwcGVuZFRvKHVuZXhwZWN0ZWRTdHJ1Y3R1cmUsIGNvbnRpbnVhdGlvbik7CkBAIC0xNjQ2
LDEwICsxNjQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZSk7CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZElu
ZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAotICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZSgpKSkpOworICAg
ICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2Rl
LT5zdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBA
IC0xNjU4LDEwICsxNjU3LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlUHV0U3RydWN0
dXJlKCkKICAgICB7CiAgICAgICAgIG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLm5vdGlmeUNv
bXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9ncmFwaC5tX3BsYW4sIGNvZGVCbG9jaygpLCBt
X25vZGUpOwotICAgICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoCi0gICAgICAgICAgICB3
ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJl
KSwKLSAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZSk7CisKKyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBtX25vZGUt
PnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlvdXNTdHJ1Y3R1cmU7CisgICAgICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgp
Lm5ld1N0cnVjdHVyZTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7
CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICAg
ICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbmV3U3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSk7CisKKyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1f
bm9kZS0+Y2hpbGQxKCkpOyAKKyAgICAgICAgbV9vdXQuc3RvcmUzMigKKyAgICAgICAgICAgIHdl
YWtTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKSwKKyAgICAgICAgICAgIGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbVB1
dFN0cnVjdHVyZSgpCkBAIC0yNzQxLDE4ICsyNzQ3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZTogewogICAgICAgICAgICAg
TFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlKTsKKyAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxs
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFN0cmluZyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiVG9TdHJpbmcg
U3RyaW5nT3JTdHJpbmdPYmplY3Qgbm90IHN0cmluZyBjYXNlIikpOwogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJUb1N0cmluZyBT
dHJpbmdPclN0cmluZ09iamVjdCBjb250aW51YXRpb24iKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNpbXBsZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihjZWxsKTsK
ICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5lcXVhbChz
dHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSks
CisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50
MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSwKICAgICAgICAgICAgICAgICB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZywgY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVy
ZShtX25vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgc3BlY3VsYXRlU3Ry
aW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQobV9ub2RlLT5jaGlsZDEoKSwgc3RydWN0dXJlSUQpOwog
ICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgdW5ib3hlZFJlc3VsdCA9IG1fb3V0LmFuY2hvcigK
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNXcmFwcGVyT2Jq
ZWN0X2ludGVybmFsVmFsdWUpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKQEAgLTI3ODgsOCArMjc5NCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgaXNT
dHJpbmdQcmVkaWNhdGU7CiAgICAgICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS0+cHJlZGlj
dGlvbigpICYgU3BlY1N0cmluZykgewogICAgICAgICAgICAgICAgIGlzU3RyaW5nUHJlZGljYXRl
ID0gbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodmFsdWUs
IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAorICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5p
ZCgpKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBpc1N0cmluZ1ByZWRp
Y2F0ZSA9IG1fb3V0LmJvb2xlYW5GYWxzZTsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1N0
cmluZ1ByZWRpY2F0ZSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsK
QEAgLTMwODEsMTEgKzMwODcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEdldEJ5SWRWYXJp
YW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGotLTspIHsKICAgICAgICAgICAg
ICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSgKLSAgICAgICAgICAgICAgICAgICAgd2Vha1Bv
aW50ZXIodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKVtqXSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7
CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUodmFyaWFudC5zdHJ1Y3R1cmVTZXQo
KVtqXSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICBtX291dC5sb2Fk
UHRyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksIGNhc2VzLCBleGl0LCBXZWlnaHQo
MCkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7CiAgICAgICAgIAogICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOwogICAgICAgICAKQEAgLTMxNDcs
MTAgKzMxNTMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52
YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlh
bnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAgICAgY2FzZXMuYXBwZW5kKAotICAgICAg
ICAgICAgICAgIFN3aXRjaENhc2Uod2Vha1BvaW50ZXIodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSks
IGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CisgICAgICAgICAgICAgICAgU3dpdGNoQ2FzZSh3ZWFr
U3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpLCBibG9ja3NbaV0sIFdlaWdodCgxKSkp
OwogICAgICAgICB9CiAgICAgICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKAotICAgICAgICAg
ICAgbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLCBjYXNlcywg
ZXhpdCwgV2VpZ2h0KDApKTsKKyAgICAgICAgICAgIG1fb3V0LmxvYWQzMihiYXNlLCBtX2hlYXBz
LkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGNhc2VzLCBleGl0LCBXZWlnaHQoMCkpOwogICAgICAgICAK
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5tX25leHRCbG9jazsKICAgICAg
ICAgCkBAIC0zMTcyLDggKzMxNzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBzdG9yYWdlID0gc3RvcmFnZUZvclRyYW5zaXRpb24oCiAgICAgICAgICAg
ICAgICAgICAgIGJhc2UsIHZhcmlhbnQub2Zmc2V0KCksIHZhcmlhbnQub2xkU3RydWN0dXJlKCks
IHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlUHRy
KAotICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcih2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKworICAgICAgICAgICAgICAgIEFT
U0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZh
cmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gdmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlw
ZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0
dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHN0b3JlUHJv
cGVydHkodmFsdWUsIHN0b3JhZ2UsIGRhdGEuaWRlbnRpZmllck51bWJlciwgdmFyaWFudC5vZmZz
ZXQoKSk7CkBAIC0zOTQyLDE0ICszOTUyLDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291
dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1
ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAogICAgICAgICAgICAganNWYWx1ZVZhbHVl
KGNlbGwpLCBlZGdlLCBmaWx0ZXIsCi0gICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUs
IG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJh
ZFR5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICBtX291
dC50ZXN0Tm9uWmVybzgoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoc3RydWN0dXJlLCBt
X2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAgICAgICBtX291dC5s
b2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAg
CkBAIC0zOTk3LDcgKzQwMDcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LmxvYWRQ
dHIocmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9mcmVlTGlzdE5leHQpLAogICAgICAgICAgICAgYWxs
b2NhdG9yLCBtX2hlYXBzLk1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQpOwogICAgICAgICAK
LSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RydWN0dXJlLCByZXN1bHQsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihz
dHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJlX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgTFZhbHVl
IGluZGV4aW5nVHlwZSA9IG1fb3V0LmxvYWQ4KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVf
aW5kZXhpbmdUeXBlKTsKKyAgICAgICAgTFZhbHVlIHR5cGVJbmZvVHlwZSA9IG1fb3V0LmxvYWQ4
KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgTFZh
bHVlIHR5cGVJbmZvRmxhZ3MgPSBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0
dXJlX3R5cGVJbmZvRmxhZ3MpOworCisgICAgICAgIG1fb3V0LnN0b3JlMzIoc3RydWN0dXJlSUQs
IHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICBtX291dC5zdG9y
ZTgoaW5kZXhpbmdUeXBlLCByZXN1bHQsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlOCh0eXBlSW5mb1R5cGUsIHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxf
dHlwZUluZm9UeXBlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU4KHR5cGVJbmZvRmxhZ3MsIHJlc3Vs
dCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyk7CisgICAgICAgIG1fb3V0LnN0b3JlOCht
X291dC5jb25zdEludDgoMCksIHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfZ2NEYXRhKTsKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDIxOSw4ICs0MjM4LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgIGpz
VmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAg
ICAgICAgICAgICBtX291dC5lcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0
cih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3Ry
dWN0dXJlLT5pZCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC00MjMxLDE4ICs0MjUwLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBtYXNxdWVyYWRlc0Nhc2UgPQogICAgICAgICAgICAgICAgIEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiRXF1YWxOdWxsT3JVbmRlZmluZWQgbWFzcXVlcmFkZXMgY2FzZSIpKTsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHZhbHVl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IobV9vdXQuYm9vbGVhbkZhbHNlKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCgKICAgICAgICAgICAgICAgICBtX291dC50
ZXN0Tm9uWmVybzgoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4KHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9GbGFncyksCisgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmxvYWQ4KHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwKICAg
ICAgICAgICAgICAgICByYXJlbHkobWFzcXVlcmFkZXNDYXNlKSwgdXN1YWxseShjb250aW51YXRp
b24pKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obWFzcXVlcmFk
ZXNDYXNlLCBwcmltaXRpdmVDYXNlKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVl
IHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUodmFsdWUpOworICAgICAgICAgICAgCiAgICAgICAg
ICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQu
ZXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCkBAIC01MDAzLDggKzUwMjIs
OCBAQCBwcml2YXRlOgogICAgIExWYWx1ZSBpc09iamVjdChMVmFsdWUgY2VsbCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKLSAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBtX291dC5s
b2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAorICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KICAgICAK
ICAgICBMVmFsdWUgaXNOb3RTdHJpbmcoTFZhbHVlIGNlbGwpCkBAIC01MDE1LDggKzUwMzQsOCBA
QCBwcml2YXRlOgogICAgIExWYWx1ZSBpc1N0cmluZyhMVmFsdWUgY2VsbCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwg
bV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBtX291dC5sb2FkMzIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAorICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpOwogICAgIH0KICAgICAKICAgICBM
VmFsdWUgaXNOb3RPYmplY3QoTFZhbHVlIGNlbGwpCkBAIC01MDMwLDkgKzUwNDksNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgY2FzZSBBcnJheTo6RG91
YmxlOgogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOiB7Ci0gICAgICAgICAgICBMVmFs
dWUgaW5kZXhpbmdUeXBlID0gbV9vdXQubG9hZDgoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9h
ZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAgIG1f
aGVhcHMuU3RydWN0dXJlX2luZGV4aW5nVHlwZSk7CisgICAgICAgICAgICBMVmFsdWUgaW5kZXhp
bmdUeXBlID0gbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0NlbGxfaW5kZXhpbmdUeXBlKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3dpdGNoIChhcnJheU1vZGUuYXJyYXlDbGFzcygp
KSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpPcmlnaW5hbEFycmF5OgpAQCAtNTA2MCw3ICs1
MDc3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3NJbmZvKGNlbGwsIGNsYXNzSW5mb0ZvclR5
cGUoYXJyYXlNb2RlLnR5cGVkQXJyYXlUeXBlKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBtX291
dC5lcXVhbCgKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkOChjZWxsLCBtX2hlYXBzLkpTQ2Vs
bF90eXBlSW5mb1R5cGUpLCAKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgodHlwZUZv
clR5cGVkQXJyYXlUeXBlKGFycmF5TW9kZS50eXBlZEFycmF5VHlwZSgpKSkpOwogICAgICAgICB9
CiAgICAgfQogICAgIApAQCAtNTA2OCw3ICs1MDg3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoCi0gICAg
ICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUp
LAorICAgICAgICAgICAgICAgIGxvYWRTdHJ1Y3R1cmUoY2VsbCksCiAgICAgICAgICAgICAgICAg
bV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKGNsYXNzSW5mbykpOwogICAgIH0KQEAgLTUwNzYsOSArNTA5NSw3IEBAIHByaXZhdGU6CiAg
ICAgTFZhbHVlIGlzVHlwZShMVmFsdWUgY2VsbCwgSlNUeXBlIHR5cGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkOCgKLSAgICAgICAg
ICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0g
ICAgICAgICAgICAgICAgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9UeXBlKSwKKyAgICAgICAg
ICAgIG1fb3V0LmxvYWQ4KGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludDgodHlwZSkpOwogICAgIH0KICAgICAKQEAgLTUxNjUsMTMg
KzUxODIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nID0gRlRM
X05FV19CTE9DSyhtX291dCwgKCJTcGVjdWxhdGUgU3RyaW5nT3JTdHJpbmdPYmplY3Qgbm90IHN0
cmluZyBjYXNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIlNwZWN1bGF0ZSBTdHJpbmdPclN0cmluZ09iamVjdCBjb250aW51YXRp
b24iKSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0
cihsb3dDZWxsKGVkZ2UpLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFs
dWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIobG93Q2VsbChlZGdlKSwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpOwogICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBtX291
dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJl
LmdldCgpKSksCisgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmVJRCwgbV9vdXQuY29u
c3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpLAogICAgICAgICAgICAgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgCiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nLCBjb250aW51YXRp
b24pOwotICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoZWRn
ZSwgc3RydWN0dXJlSUQpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAg
LTUxODEsMTAgKzUxOTgsMTAgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvckNlbGwoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7Ci0gICAgICAg
IHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBtX291dC5sb2FkUHRyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSkpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmVJRChlZGdlLCBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0Nl
bGxfc3RydWN0dXJlSUQpKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUoRWRnZSBlZGdlLCBMVmFsdWUgc3RydWN0dXJlKQorICAgIHZvaWQg
c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoRWRnZSBlZGdlLCBMVmFsdWUgc3Ry
dWN0dXJlSUQpCiAgICAgewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVy
ZSA9CiAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpOwpAQCAtNTE5NCwyMiArNTIxMSwyMyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgTm90
U3RyaW5nT2JqZWN0LCBub1ZhbHVlKCksIDAsCi0gICAgICAgICAgICBtX291dC5ub3RFcXVhbChz
dHJ1Y3R1cmUsIHdlYWtQb2ludGVyKHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKTsKKyAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlKHN0cmluZ09iamVj
dFN0cnVjdHVyZSkpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVOb25OdWxsT2Jq
ZWN0KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOwogICAg
ICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRn
ZSwgU3BlY09iamVjdCwgCi0gICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0
LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
bV9vdXQuZXF1YWwoCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKHZt
KCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSkpOwogICAgICAgICBpZiAobWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVW
YWx1ZShjZWxsKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICBtX291dC50ZXN0Tm9uWmVybzgo
Ci0gICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVy
ZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkOChjZWxsLCBtX2hl
YXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dDgoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC01MjY0LDEwICs1
MjgyLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFsdWUgbG9hZE1hcmtCeXRlKExWYWx1ZSBi
YXNlKQogICAgIHsKLSAgICAgICAgTFZhbHVlIG1hcmtlZEJsb2NrID0gbV9vdXQuYml0QW5kKGJh
c2UsIG1fb3V0LmNvbnN0SW50NjQoTWFya2VkQmxvY2s6OmJsb2NrTWFzaykpOwotICAgICAgICBM
VmFsdWUgYmFzZU9mZnNldCA9IG1fb3V0LmJpdEFuZChiYXNlLCBtX291dC5jb25zdEludDY0KH5N
YXJrZWRCbG9jazo6YmxvY2tNYXNrKSk7Ci0gICAgICAgIExWYWx1ZSBtYXJrQnl0ZUluZGV4ID0g
bV9vdXQubFNocihiYXNlT2Zmc2V0LCBtX291dC5jb25zdEludDY0KE1hcmtlZEJsb2NrOjphdG9t
U2hpZnRBbW91bnQgKyBNYXJrZWRCbG9jazo6bWFya0J5dGVTaGlmdEFtb3VudCkpOwotICAgICAg
ICByZXR1cm4gbV9vdXQubG9hZDgobV9vdXQuYmFzZUluZGV4KG1faGVhcHMuTWFya2VkQmxvY2tf
bWFya0JpdHMsIG1hcmtlZEJsb2NrLCBtYXJrQnl0ZUluZGV4LCBTY2FsZU9uZSwgTWFya2VkQmxv
Y2s6Om9mZnNldE9mTWFya3MoKSkpOworICAgICAgICByZXR1cm4gbV9vdXQubG9hZDgoYmFzZSwg
bV9oZWFwcy5KU0NlbGxfZ2NEYXRhKTsKICAgICB9CiAKICAgICB2b2lkIGVtaXRTdG9yZUJhcnJp
ZXIoTFZhbHVlIGJhc2UsIExWYWx1ZSB2YWx1ZSwgRWRnZSB2YWx1ZUVkZ2UpCkBAIC01NzMyLDEy
ICs1NzQ3LDI1IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLm1fcGxhbi53ZWFr
UmVmZXJlbmNlcy5hZGRMYXppbHkodGFyZ2V0KTsKICAgICB9Ci0gICAgCisKKyAgICBMVmFsdWUg
bG9hZFN0cnVjdHVyZShMVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBMVmFsdWUgdGFibGVJ
bmRleCA9IG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwor
ICAgICAgICBMVmFsdWUgdGFibGVCYXNlID0gbV9vdXQuZ2V0KG1fb3V0LmNvbnN0SW50UHRyKHZt
KCkuaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpKSk7CisgICAgICAgIHJldHVybiBtX291
dC5nZXQobV9vdXQuYmFzZUluZGV4KHRhYmxlQmFzZSwgdGFibGVJbmRleCwgU2NhbGVFaWdodCkp
OworICAgIH0KKwogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50ZXIpCiAgICAg
ewogICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHBvaW50ZXIpOwogICAgICAgICByZXR1cm4gbV9v
dXQuY29uc3RJbnRQdHIocG9pbnRlcik7CiAgICAgfQorCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1
cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBhZGRXZWFrUmVmZXJlbmNl
KHN0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+
aWQoKSk7CisgICAgfQogICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBi
YXNlLCBpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOSArMTA2LDkgQEAgc3RhdGljIHZvaWQg
Y29tcGlsZVN0dWIoCiAgICAgICAgIGlmIChleGl0Lm1fa2luZCA9PSBCYWRDYWNoZSB8fCBleGl0
Lm1fa2luZCA9PSBCYWRJbmRleGluZ1R5cGUpIHsKICAgICAgICAgICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGU7CiAgICAgICAgICAgICBp
ZiAoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3Io
Y29kZU9yaWdpbiktPmdldEFycmF5UHJvZmlsZShjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKSB7
Ci0gICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7
Ci0gICAgICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QxLCBhcnJheVByb2Zp
bGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIGppdC5s
b2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwgU3RydWN0dXJlOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgICAgICAgICBq
aXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAg
aml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNl
ZW5TdHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
LCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMigxKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAgICAgIGpp
dC5sc2hpZnQzMihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICAgICAg
ICAgIGppdC5vcjMyKEdQUkluZm86OnJlZ1QyLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRy
ZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2RlcygpKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsy
NjcsNyBAQCBwdWJsaWM6CiAgICAgTFZhbHVlIGxvYWQ2NChMVmFsdWUgYmFzZSwgY29uc3QgQWJz
dHJhY3RGaWVsZCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ2NChhZGRyZXNzKGJhc2UsIGZpZWxkKSk7
IH0KICAgICBMVmFsdWUgbG9hZFB0cihMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYg
ZmllbGQpIHsgcmV0dXJuIGxvYWRQdHIoYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAgTFZh
bHVlIGxvYWREb3VibGUoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxkKSB7
IHJldHVybiBsb2FkRG91YmxlKGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQorICAgIHZvaWQgc3Rv
cmU4KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxk
KSB7IHN0b3JlOCh2YWx1ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAgdm9pZCBzdG9y
ZTMyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxk
KSB7IHN0b3JlMzIodmFsdWUsIGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIHZvaWQgc3Rv
cmU2NChMVmFsdWUgdmFsdWUsIExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVs
ZCkgeyBzdG9yZTY0KHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICB2b2lkIHN0
b3JlUHRyKExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZp
ZWxkKSB7IHN0b3JlUHRyKHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAxNjQ2NTQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogI2RlZmlu
ZSBBU1NFUlRfR0NfT0JKRUNUX0xPT0tTX1ZBTElEKGNlbGwpIGRvIHsgXAogICAgIFJFTEVBU0Vf
QVNTRVJUKGNlbGwpO1wKLSAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT51bnZhbGlkYXRlZFN0cnVj
dHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpID09IGNlbGwtPnVudmFsaWRhdGVkU3RydWN0
dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkpOyBc
CisgICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpID09IGNl
bGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKS0+c3RydWN0dXJlKCkpOyBcCiB9IHdoaWxlICgw
KQogCiAjZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMob2JqZWN0LCBjbGFzc0luZm8p
IGRvIHtcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNyw2ICs0MzcsNyBAQCB2b2lkIEhlYXA6OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVy
Um9vdHMoCiAgICAgSlNDZWxsKiogcmVnaXN0ZXJSb290cyA9IHN0YWNrUm9vdHMucm9vdHMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrUm9vdENvdW50OyBpKyspIHsKICAgICAg
ICAgc2V0TWFya2VkKHJlZ2lzdGVyUm9vdHNbaV0pOworICAgICAgICByZWdpc3RlclJvb3RzW2ld
LT5tYXJrKCk7CiAgICAgICAgIHJvb3RzLmFkZChyZWdpc3RlclJvb3RzW2ldKTsKICAgICB9CiB9
CkBAIC04NTcsNiArODU4LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KCkKIAogICAgIHsKICAgICAg
ICAgR0NQSEFTRShTdG9wQWxsb2NhdGlvbik7CisgICAgICAgIG1fc3RydWN0dXJlSURUYWJsZS5m
bHVzaE9sZFRhYmxlcygpOwogICAgICAgICBtX29iamVjdFNwYWNlLnN0b3BBbGxvY2F0aW5nKCk7
CiAgICAgICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCiAg
ICAgICAgICAgICBtX3N0b3JhZ2VTcGFjZS5kaWRTdGFydEZ1bGxDb2xsZWN0aW9uKCk7CkBAIC0x
MTEwLDggKzExMTIsMTEgQEAgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBm
cgogewogI2lmIEVOQUJMRShHR0MpCiAgICAgQVNTRVJUX0dDX09CSkVDVF9MT09LU19WQUxJRChj
b25zdF9jYXN0PEpTQ2VsbCo+KGZyb20pKTsKLSAgICBpZiAoIWZyb20gfHwgIWlzTWFya2VkKGZy
b20pKQorICAgIGlmICghZnJvbSB8fCAhZnJvbS0+aXNNYXJrZWQoKSkgeworICAgICAgICBBU1NF
UlQoIWZyb20gfHwgIWlzTWFya2VkKGZyb20pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBBU1NFUlQoaXNNYXJrZWQoZnJvbSkpOwogICAgIGFkZFRvUmVtZW1iZXJlZFNldChmcm9tKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyb20pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFya2Vk
U3BhY2UuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAiV2Vha0hhbmRsZU93bmVy
LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyQnVmZmVyLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJy
aWVyU3VwcG9ydC5oIgpAQCAtMjAxLDYgKzIwMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0RlZmVycmVkKCkgY29uc3QgeyByZXR1cm4gISFtX2RlZmVycmFs
RGVwdGggfHwgT3B0aW9uczo6ZGlzYWJsZUdDKCk7IH0KIAorICAgICAgICBCbG9ja0FsbG9jYXRv
ciYgYmxvY2tBbGxvY2F0b3IoKTsKKyAgICAgICAgU3RydWN0dXJlSURUYWJsZSYgc3RydWN0dXJl
SURUYWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlSURUYWJsZTsgfQorCiAjaWYgVVNFKENGKQog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHJlbGVhc2VTb29uKFJldGFpblB0cjxU
PiYmKTsKICNlbmRpZgpAQCAtMjU5LDcgKzI2Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzaXplX3Qgc2l6ZUFmdGVyQ29sbGVjdCgpOwogCiAgICAgICAgIEpTU3RhY2smIHN0YWNrKCk7
Ci0gICAgICAgIEJsb2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOwogICAgICAgICAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbmNyZW1lbnREZWZlcnJhbERlcHRoKCk7CiAg
ICAgICAgIHZvaWQgZGVjcmVtZW50RGVmZXJyYWxEZXB0aCgpOwpAQCAtMjgwLDYgKzI4Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgSGVhcE9wZXJhdGlvbiBtX29wZXJh
dGlvbkluUHJvZ3Jlc3M7CiAgICAgICAgIEJsb2NrQWxsb2NhdG9yIG1fYmxvY2tBbGxvY2F0b3I7
CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUgbV9zdHJ1Y3R1cmVJRFRhYmxlOwogICAgICAgICBN
YXJrZWRTcGFjZSBtX29iamVjdFNwYWNlOwogICAgICAgICBDb3BpZWRTcGFjZSBtX3N0b3JhZ2VT
cGFjZTsKICAgICAgICAgR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXQ8QXJyYXlCdWZmZXI+IG1fYXJy
YXlCdWZmZXJzOwpAQCAtMzkzLDE4ICszOTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgog
ICAgIH0KIAotICAgIGlubGluZSB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwq
IGZyb20sIEpTQ2VsbCogdG8pCi0gICAgewotI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJ
TElORykKLSAgICAgICAgV3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVCYXJyaWVyKCk7
Ci0jZW5kaWYKLSAgICAgICAgaWYgKCFmcm9tIHx8ICFpc01hcmtlZChmcm9tKSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgaWYgKCF0byB8fCBpc01hcmtlZCh0bykpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGFkZFRvUmVtZW1iZXJlZFNldChmcm9tKTsKLSAgICB9Ci0KICAg
ICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU1Zh
bHVlIHRvKQogICAgIHsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDE2NDY1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0NCwyMCArMjQ0LDIyIEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxs
b2NhdGVXaXRoTm8KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytp
KSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKICAgICAg
ICAgbV9ub3JtYWxTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7Ci0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ld
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3Ry
dWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0g
ICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKSB7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQogICAgICAg
ICBtX25vcm1hbFNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOwotICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3Jz
W2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKLSAgICB9Ci0KICAgICBtX25vcm1hbFNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9j
ayhmdW5jdG9yKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyAr
K2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ld
LmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJl
Y2lzZUNvdW50OyArK2kpCisgICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1fbm9ybWFsRGVzdHJ1
Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1faW1tb3J0
YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7
ICsraSkKKyAgICAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5pbXByZWNp
c2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmxhcmdlQWxsb2NhdG9yLmZvckVhY2hCbG9jayhmdW5jdG9y
KTsKIAogICAgIHJldHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOCw5ICsxMDgsMTIgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNs
b3RWaXNpdG9yOjppbnRlcm5hbAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAgIHZhbGlk
YXRlKGNlbGwpOwogI2VuZGlmCi0gICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkg
fHwgIWNlbGwtPnN0cnVjdHVyZSgpKQorICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKGNl
bGwpIHx8ICFjZWxsLT5zdHJ1Y3R1cmUoKSkgeworICAgICAgICBBU1NFUlQoY2VsbC0+c3RydWN0
dXJlKCkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgY2VsbC0+bWFyaygpOwogICAg
IG1fYnl0ZXNWaXNpdGVkICs9IE1hcmtlZEJsb2NrOjpibG9ja0ZvcihjZWxsKS0+Y2VsbFNpemUo
KTsKICAgICAgICAgCiAgICAgTUFSS19MT0dfQ0hJTEQoKnRoaXMsIGNlbGwpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODYsOSArMjg2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcGF5
bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9wZXJhbmQpKTsKICAgICB9CiAK
LSAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBzdHJ1Y3R1cmVSZWcpCisgICAgSnVt
cCBicmFuY2hJZkNlbGxOb3RPYmplY3QoR1BSUmVnIGNlbGxSZWcpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BSUmVnIHByZXNlcnZlMSA9IEludmFsaWRHUFJS
ZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUzID0g
SW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNCA9IEludmFsaWRHUFJSZWcpCkBAIC0zODcs
MjEgKzM4Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGppdEFzc2VydEFyZ3VtZW50Q291bnRTYW5l
KCkgeyB9CiAjZW5kaWYKIAotICAgIEp1bXAgZ2VuZXJpY1dyaXRlQmFycmllcihHUFJSZWcgb3du
ZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKQorICAgIEp1bXAgZ2VuZXJpY1dy
aXRlQmFycmllcihHUFJSZWcgb3duZXIpCiAgICAgewotICAgICAgICBtb3ZlKG93bmVyLCBzY3Jh
dGNoMSk7Ci0gICAgICAgIG1vdmUob3duZXIsIHNjcmF0Y2gyKTsKLSAgICAKLSAgICAgICAgYW5k
UHRyKFRydXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gxKTsKLSAg
ICAgICAgYW5kUHRyKFRydXN0ZWRJbW1QdHIofk1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3Jh
dGNoMik7Ci0gICAgCi0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgcnNoaWZ0NjQoVHJ1c3Rl
ZEltbTMyKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91bnQgKyBNYXJrZWRCbG9jazo6bWFya0J5
dGVTaGlmdEFtb3VudCksIHNjcmF0Y2gyKTsKLSNlbHNlCi0gICAgICAgIHJzaGlmdDMyKFRydXN0
ZWRJbW0zMihNYXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtC
eXRlU2hpZnRBbW91bnQpLCBzY3JhdGNoMik7Ci0jZW5kaWYKLSAgICAKLSAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q4KFplcm8sIEJhc2VJbmRleChzY3JhdGNoMSwgc2NyYXRjaDIsIFRpbWVzT25l
LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSk7CisgICAgICAgIHJldHVybiBicmFuY2hU
ZXN0OChaZXJvLCBBZGRyZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7CiAgICAg
fQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBjb252ZXJ0IGJldHdlZW4gZG91YmxlcywgYW5kIGRv
dWJsZXMgYm94ZWQgYW5kIEpTVmFsdWVzLgpAQCAtNTU5LDYgKzU0Nyw4MSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBvZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMoY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpOwogICAgIH0KIAorICAgIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoUmVn
aXN0ZXJJRCBzb3VyY2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAg
IHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc291cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyAgICAg
ICAgbG9hZFB0cih2bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCksIHNjcmF0Y2gp
OworICAgICAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgZGVz
dCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQpLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIFVO
VVNFRF9QQVJBTShzY3JhdGNoKTsKKyAgICAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3QpOworI2VuZGlm
CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdExvYWRTdHJ1Y3R1cmUoQXNzZW1ibHlIZWxw
ZXJzJiBqaXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNj
cmF0Y2gpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5sb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
ZGVzdCk7CisgICAgICAgIGppdC5sb2FkUHRyKGppdC52bSgpLT5oZWFwLnN0cnVjdHVyZUlEVGFi
bGUoKS5iYXNlKCksIHNjcmF0Y2gpOworICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QmFzZUluZGV4KHNjcmF0Y2gsIGRlc3QsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwg
ZGVzdCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7CisgICAgICAgIGpp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIGRlc3QpOworI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQg
ZGVzdCwgUmVnaXN0ZXJJRCkKKyAgICB7CisgICAgICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbygqdGhpcywgc3RydWN0dXJlLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIGVtaXRT
dG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhSZWdpc3RlcklEIHN0cnVjdHVyZSwgUmVnaXN0ZXJJ
RCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0Y2gpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIGxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVy
ZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgICAgICBzdG9yZTY0KHNjcmF0
Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSkpOworI2Vsc2UKKyAgICAgICAgLy8gU3RvcmUgYWxsIHRoZSBpbmZvIGZsYWdzIHVzaW5n
IGEgc2luZ2xlIDMyLWJpdCB3aWRlIGxvYWQgYW5kIHN0b3JlLgorICAgICAgICBsb2FkMzIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3JlMzIoc2NyYXRjaCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworCisgICAg
ICAgIC8vIFN0b3JlIHRoZSBTdHJ1Y3R1cmVJRAorICAgICAgICBzdG9yZVB0cihzdHJ1Y3R1cmUs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOworI2VuZGlmCisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJl
V2l0aFR5cGVJbmZvKEFzc2VtYmx5SGVscGVycyYgaml0LCBUcnVzdGVkSW1tUHRyIHN0cnVjdHVy
ZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgY29uc3QgU3RydWN0dXJlKiBzdHJ1
Y3R1cmVQdHIgPSBzdGF0aWNfY2FzdDxjb25zdCBTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUubV92YWx1
ZSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgdWludDY0X3QgYmxvYlRvU3RvcmUgPSAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHN0cnVjdHVyZVB0cikgKyBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpOwor
ICAgICAgICBqaXQuc3RvcmU2NChUcnVzdGVkSW1tNjQoYmxvYlRvU3RvcmUpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKworI2lm
bmRlZiBOREVCVUcKKyAgICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMy
KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSk7CisgICAgICAgIGpp
dC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RTdHJ1Y3R1cmUubGluaygmaml0KTsKKwor
ICAgICAgICBKdW1wIGNvcnJlY3RJbmRleGluZ1R5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIGpp
dC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RJbmRleGluZ1R5cGUubGluaygmaml0KTsK
KworICAgICAgICBKdW1wIGNvcnJlY3RUeXBlID0gaml0LmJyYW5jaDgoRXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkpOworICAgICAgICBqaXQu
YnJlYWtwb2ludCgpOworICAgICAgICBjb3JyZWN0VHlwZS5saW5rKCZqaXQpOworCisgICAgICAg
IEp1bXAgY29ycmVjdEZsYWdzID0gaml0LmJyYW5jaDgoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KHN0cnVjdHVyZVB0ci0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkpOworICAgICAgICBq
aXQuYnJlYWtwb2ludCgpOworICAgICAgICBjb3JyZWN0RmxhZ3MubGluaygmaml0KTsKKyNlbmRp
ZgorI2Vsc2UKKyAgICAgICAgLy8gRG8gYSAzMi1iaXQgd2lkZSBzdG9yZSB0byBpbml0aWFsaXpl
IHRoZSBjZWxsJ3MgZmllbGRzLgorICAgICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoc3Ry
dWN0dXJlUHRyLT5vYmplY3RJbml0aWFsaXphdGlvbkZpZWxkcygpKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkpOworICAgICAgICBq
aXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgd3Jp
dGVCYXJyaWVyKEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIs
IFdyaXRlQmFycmllclVzZUtpbmQgdXNlS2luZCkKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShvd25lcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE2NDY1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
NSw3ICszMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZW1p
dExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwogICAgICAgICB2b2lk
IGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7Ci0g
ICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZyk7
CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVn
KTsKIAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBT
dHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAgICAg
ICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgUmVnaXN0ZXJJRCBz
Y3JhdGNoKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51
bSBXcml0ZUJhcnJpZXJNb2RlIHsgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgU2hvdWxkRmls
dGVyVmFsdWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB9OwogICAgICAgICAvLyB2YWx1ZSBy
ZWdpc3RlciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQgYmVmb3JlIGFueSBzY3JhdGNoIHJlZ2lz
dGVycwogICAgICAgICAvLyBzbyBtYXkgc2FmZWx5IGJlIHRoZSBzYW1lIGFzIGVpdGhlciBvZiB0
aGUgc2NyYXRjaCByZWdpc3RlcnMuCi0gICAgICAgIEp1bXAgY2hlY2tNYXJrV29yZChSZWdpc3Rl
cklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gxLCBSZWdpc3RlcklEIHNjcmF0Y2gyKTsKKyAg
ICAgICAgSnVtcCBjaGVja01hcmtXb3JkKFJlZ2lzdGVySUQgb3duZXIpOwogICAgICAgICBKdW1w
IGNoZWNrTWFya1dvcmQoSlNDZWxsKiBvd25lcik7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFy
cmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUpOwog
ICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgdW5zaWduZWQgdmFs
dWUsIFdyaXRlQmFycmllck1vZGUpOwpAQCAtMzI4LDggKzMyOCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQcm9maWxlKik7CiAg
ICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCk7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwotICAgICAgICB2b2lk
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5
cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7Ci0gICAgICAgIHZvaWQgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVB
bmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCk7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVy
SUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSopOworICAgICAg
ICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVn
aXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENh
c2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91
bmRzU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApAQCAtMzY5LDYgKzM2OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgZW51bSBGaW5hbE9iamVjdE1v
ZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKKyAgICAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IEp1bXAgYnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24sIFQgbGVm
dEhhbmRTaWRlLCBTdHJ1Y3R1cmUqKTsKKwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAg
IGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBvcDEsIGludCBvcDIsIGlu
dCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3
MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnMKIAogICAgIGVt
aXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKTsKKyAg
ICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKTsKIAogICAg
IGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAgICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUo
KTsKQEAgLTI2Niw4ICsyNjUsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBv
cGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAg
ICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgICAgIHN0b3JlUHRy
KHJlZ1QxLCBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0gMl0udS5hcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7Cisg
ICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9j
YWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkp
OwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0zNDIs
NyArMzQxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAg
IEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1Y3R1cmUpKSk7Cisg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1Y3R1
cmUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgVHJ1c3RlZEltbVB0cihl
eHBlY3RlZEV4ZWN1dGFibGUpKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QxKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDggKzE4
OCw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29kZUkKICAgICAgICAg
aWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CiAgICAg
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKICAgICAgICAgICAgIEp1
bXAgZG9uZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgICAgICAgICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAg
ICAgICAgICAgc3RvcmVQdHIocmVnVDAsIGluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2Fs
bCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVnVDApOworICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgaW5zdHJ1Y3Rpb25bT1BD
T0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2Vl
blN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAgICB9
CiAgICAgCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3Vy
ZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAg
c2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkp
OworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBleHBlY3RlZFN0cnVjdHVyZSkp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0
ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMCArMTAxLDEwIEBAIHZvaWQg
SklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmYKIAogdm9pZCBKSVRCeUlkR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3JvQXNzZW1ibGVyJiBqaXQsIEdQUlJlZyBi
dXR0ZXJmbHkpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2goCisgICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwKLSAgICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2FkR1BSKCksIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIG1fc3RydWN0dXJlSW1tLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKICAgICAKICAgICBtX3Byb3BlcnR5U3RvcmFnZUxv
YWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBi
dXR0ZXJmbHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBKU1ZhbHVlUmVncyBtX2Jhc2U7CiAgICAg
SlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVs
UHRyIG1fc3RydWN0dXJlSW1tOworICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRhTGFiZWwzMiBtX3N0
cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVy
ZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3Bl
cnR5U3RvcmFnZUxvYWQ7CiAgICAgQXNzZW1ibGVyTGFiZWwgbV9sb2FkT3JTdG9yZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxNjQ2NTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxG
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVzKQogewotICAgIGZh
aWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRk
cmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0KCkpLCBkc3QpOwog
ICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZHN0KSk7CkBAIC01NTcsNyAr
NTU3LDcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogCiBBTFdB
WVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhy
ZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiB9CiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAtNjA1LDkgKzYwNSw5IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8KICAgICBqdW1wLmxpbmtUbyht
X2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXRdLCB0aGlzKTsKIH0KIAot
QUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90T2JqZWN0KFJlZ2lzdGVy
SUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElm
Q2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0gICAgcmV0dXJuIGJyYW5jaDgo
QmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4gYnJhbmNoOChCZWxv
dywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKQEAg
LTY3OCwxMSArNjc4LDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3Qo
UmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CiAgICAgc3RvcmVQdHIo
c2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVl
TGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJl
Ci0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkg
c3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgQWRkcmVzcyhy
ZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworCisgICAgLy8gaW5pdGlhbGl6
ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJ
bmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogaW5saW5lIHZvaWQgSklUOjpl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlKQpAQCAtNzE4
LDIyICs3MTgsMTkgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKAog
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9ieXRlY29kZU9mZnNldCk7CiB9CiAKLWlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFu
ZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2ZpbGUqIGFycmF5UHJv
ZmlsZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJl
Z2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmlsZSogYXJy
YXlQcm9maWxlKQogewotICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsgLy8gV2UgaGFkIGZvdW5k
IHRoaXMgc2NyYXRjaCByZWdpc3RlciB1c2VmdWwgaGVyZSBiZWZvcmUsIHNvIEkgd2lsbCBrZWVw
IGl0IGZvciBub3cuCi0gICAgCi0gICAgUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVB
bmRJbmRleGluZ1R5cGU7Ci0gICAgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVB
bmRJbmRleGluZ1R5cGU7Ci0gICAgCi0gICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKLSAg
ICAgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlKCkpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAg
bG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CisgICAgICAgIHN0b3JlMzIoaW5kZXhpbmdUeXBlLCBh
cnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgfQogCi0g
ICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpLCBpbmRleGluZ1R5cGUpOworICAgIGxvYWQ4KEFkZHJlc3MoY2VsbCwgSlNDZWxsOjppbmRl
eGluZ1R5cGVPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1
cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2Rl
SW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoc3Ry
dWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJh
eVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRo
Q2VsbChjZWxsLCBpbmRleGluZ1R5cGUsIG1fY29kZUJsb2NrLT5nZXRPckFkZEFycmF5UHJvZmls
ZShieXRlY29kZUluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmls
ZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCkBAIC0x
MDgyLDYgKzEwNzksMjYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFRhZ0FzQm9vbElt
bQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
aXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwg
VHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICByZXR1cm4gYnJhbmNo
UHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwor
I2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
YnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNzZW1ibGVyOjpSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGppdC5icmFuY2gzMihj
b25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQdHIoY29uZGl0aW9u
LCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkp
OworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDggKzIxMCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OCha
ZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKQEAgLTIzMCw4ICsyMjksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5j
ZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsK
ICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0g
ICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dD
YXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAvLyBPcHRpbWlzdGlj
YWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3BpbmcuCiAgICAgLy8gSW5p
dGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIgc3RpbGwgY29udGFp
bnMgdmFsdWUuCkBAIC0yNDEsNyArMjM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2Vv
ZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9mIHRoZSBjZWxsIGlu
IHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndp
c2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9m
IHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGxvYWQzMihB
ZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0
YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBicmFuY2hUZXN0MzIo
Tm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTI5NywxMiArMjk1LDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIEp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAg
IG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5s
aW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmUzMihFcXVh
bCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zNDEsOCArMzM5LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMSwg
cmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBjb21wYXJl
OChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBhcmU4KEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAg
IGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtMzgxLDcgKzM3OCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdU
MCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAg
aXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAtNTAxLDkgKzQ5OCw4
IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAKIAogICAgIEp1bXAg
aXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNo
ZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwot
ICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywg
QWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdldCk7
CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9IGp1bXAoKTsKQEAg
LTUyNyw5ICs1MjMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24q
CiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3QsIGhhbmRsZSBKU0Nl
bGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0
dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8s
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAg
IGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAgd2FzTm90SW1t
ZWRpYXRlID0ganVtcCgpOwpAQCAtNTgzLDggKzU3OCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19v
cF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2Uo
aXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0
YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2VuZXJpY0Nhc2Uu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAgICAgLy8gU3Ry
aW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIHJl
Z1QwLCByZWdUMik7CkBAIC02MjcsOCArNjIyLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25l
cShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRTbG93Q2FzZShpdGVy
KSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3Mg
ZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5lcmljQ2FzZS5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAgICAvLyBTdHJpbmcg
Y2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpbmdFcSwgcmVnVDAs
IHJlZ1QyKTsKQEAgLTY1OCw4ICs2NTMsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEo
SW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlmIGJvdGggYXJlIHN0
cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFs
LCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RDZWxsLmxpbmsodGhp
cyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzEwLDEyICs3MDUsMTIg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2Fk
KHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwot
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAgSnVtcCB3YXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29tcGFy
ZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTc0MSwxMiArNzM2LDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0TG9hZChzcmMs
IHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBK
dW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJl
c3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAgd2FzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmUzMihO
b3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC03ODUsMTAgKzc4MCw4IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0TG9hZChiYXNlLCBy
ZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1lZGlhdGUo
YmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlmIChWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90T2JqZWN0LmFwcGVu
ZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlmIChWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8IG1fY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZD
ZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ug
d2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhpcyBjYWxsIGRvZXNu
J3Qgc2VlbSB0byBiZSBob3QuCkBAIC04NDEsNyArODM0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZvcihiYXNlKSwgcmVn
VDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVz
cyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwg
bV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHByb3RvdHlwZSBj
aGFpbgpAQCAtODUyLDcgKzg0NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRfcG5hbWUoSW5z
dHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBjYWxsSGFzUHJv
cGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnBy
b3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNh
bGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhy
ZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1Y3R1cmUqKSksIHJl
Z1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVnVDMpKS5saW5rVG8o
Y2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTA5MSw4ICsxMDg0LDggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3Rlciwg
cmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVyZTo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwog
ICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDgg
KzExOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwogCiAgICAgLy8gQ2hl
Y2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRT
bG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2Yo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzOCw4ICsxMzcsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlw
ZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVj
dChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1Qx
KSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVzdWx0IHRydWUsIGFu
ZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3RpbGwgY29udGFpbnMg
cHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTQ5LDcgKzE0Nyw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAogICAgIC8vIExvYWQg
dGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0
byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxs
IC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4u
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwgcmVnVDMpOwogICAg
IGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgcmVn
VDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1Qx
KTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwgdGhpcyk7CkBAIC0x
NzQsMTIgKzE3MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3Rp
CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIEp1bXAg
bm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdU
MSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIoRXF1YWwsIHJlZ1Qw
LCByZWdUMSwgcmVnVDApOwpAQCAtMjIxLDggKzIxOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lz
X3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCBy
ZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsK
ICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVy
ZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1Qw
KTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwogICAgIGVtaXRU
YWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAK
QEAgLTI3Nyw4ICsyNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMo
SW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BS
KTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmV0dXJuVmFsdWVH
UFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZOb3RP
YmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmpl
Y3QocmV0dXJuVmFsdWVHUFIpOwogCiAgICAgLy8gUmV0dXJuLgogICAgIGVtaXRGdW5jdGlvbkVw
aWxvZ3VlKCk7CkBAIC0zMDIsNyArMjk4LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0
aXZlKEluc3RydWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAg
ICAgCiAgICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgCisgICAgICAg
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBt
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBpc0ltbS5saW5rKHRoaXMpOwogCiAg
ICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0zNTMsOCArMzUxLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
amVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBlbWl0SnVtcElm
Tm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0g
Y2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7
Ci0gICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsK
ICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIG1hc3F1ZXJh
ZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAtMzc2LDggKzM3NCw4IEBAIHZv
aWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbioKICAgICBKdW1wIGlzSW1tZWRp
YXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICAvLyBGaXJzdCwgaGFuZGxl
IEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBz
dHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOwotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgo
WmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGVtaXRMb2Fk
U3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7
CkBAIC00NzIsMTAgKzQ3MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1
Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1QwKTsKICAgICBpZiAo
IW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBpc05vdE9i
amVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAgIGlmIChiYXNlICE9
IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2NvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1p
dEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoYmFzZSAhPSBtX2NvZGVC
bG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZkNlbGxOb3RPYmplY3Qo
cmVnVDApKTsKIAogICAgIC8vIFdlIGNvdWxkIGlubGluZSB0aGUgY2FzZSB3aGVyZSB5b3UgaGF2
ZSBhIHZhbGlkIGNhY2hlLCBidXQKICAgICAvLyB0aGlzIGNhbGwgZG9lc24ndCBzZWVtIHRvIGJl
IGhvdC4KQEAgLTUyOSw3ICs1MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKElu
c3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAKICAg
ICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUo
cmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRP
RihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSkpOwogCiAgICAg
Ly8gVGVzdCBiYXNlJ3MgcHJvdG90eXBlIGNoYWluCkBAIC01NDAsNyArNTM2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIExhYmVsIGNoZWNrUHJvdG90
eXBlKHRoaXMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoZW1pdEp1bXBJ
Zk5vdEpTQ2VsbChyZWdUMikpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwg
cmVnVDIsIHJlZ1QxKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihz
aXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBB
ZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0aGlzKTsKQEAgLTcxMCwxMiAr
NzA2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRl
ID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShU
cnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlz
KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAg
LTc0MiwxMiArNzM4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9u
KiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1wIGlz
SW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAg
ICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQu
bGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsK
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVn
VDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIs
IHJlZ1QwKTsKQEAgLTgxNSwxMSArODExLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMo
SW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpT
Q2VsbChyZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVh
bCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgbG9hZFB0cihjYWNoZWRTdHJ1Y3R1cmUsIHJl
Z1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKKyAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC04OTMsNiAr
ODkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1Y3RpbwogICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfdG9fdGhp
cyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM4
LDcgKzQzOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
JnZtLCBleGVjKTsKIAotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkg
PiBiYXNlLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CisgICAgQVNTRVJUKHN0
cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJhc2UtPnN0cnVjdHVyZSh2bSktPm91dE9m
TGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVCghdm0uaGVhcC5zdG9yYWdlQWxsb2NhdG9yKCku
ZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNp
emVvZihKU1ZhbHVlKSkpOwogICAgIGJhc2UtPnNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9y
YWdlSWZOZWNlc3Nhcnkodm0sIHN0cnVjdHVyZSk7CiAgICAgYmFzZS0+cHV0RGlyZWN0KHZtLCBv
ZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwpAQCAtNDQ2LDYgKzQ0Niw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKIAogc3RhdGljIHZvaWQgcHV0QnlW
YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNj
cmlwdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAg
ICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwogICAgICAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpIHsKQEAgLTQ1Myw3ICs0NTQsNyBAQCBzdGF0aWMgdm9pZCBwdXRCeVZhbChDYWxsRnJhbWUq
IGNhbGxGcmFtCiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkp
CiAgICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkoY2FsbEZyYW1lLT52bSgp
LCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgY2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgY2FsbEZyYW1lLCBpLCB2
YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGNhbGxGcmFtZSwgaSwgdmFs
dWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICB9IGVsc2Ug
aWYgKGlzTmFtZShzdWJzY3JpcHQpKSB7CkBAIC01MDMsOSArNTA0LDkgQEAgdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZQogICAgICAgICBCeVZhbEluZm8mIGJ5VmFsSW5m
byA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRCeVZhbEluZm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsK
ICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8uc3R1YlJvdXRpbmUpOwogCi0gICAgICAgIGlmICho
YXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlm
IChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAg
ICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUg
YXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkp
OworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0
cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9k
ZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxl
UHV0QnlWYWwoJnZtLCBleGVjLT5jb2RlQmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRp
ZE9wdGltaXplID0gdHJ1ZTsKQEAgLTUxOSw3ICs1MjAsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWwoRXhlCiAgICAgICAgICAgICAvLyB3aGVyZSB3ZSBzZWUgbm9uLWlu
ZGV4LWludGVyY2VwdGluZyBvYmplY3RzLCB0aGlzIGdpdmVzIDEwIGl0ZXJhdGlvbnMgd29ydGgg
b2YKICAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IGZvciB1cyB0byBvYnNlcnZlIHRoYXQgdGhl
IGdldF9ieV92YWwgbWF5IGJlIHBvbHltb3JwaGljLgogICAgICAgICAgICAgaWYgKCsrYnlWYWxJ
bmZvLnNsb3dQYXRoQ291bnQgPj0gMTAKLSAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZl
bldoZW5MZW5ndGhJc05vdFplcm8oKSkgeworICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRl
eEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgICAgICAvLyBEb24ndCBl
dmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgICAgICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0
Y2hCdWZmZXIoZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hCdWZm
ZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOwpAQCAtNTQ5LDkg
KzU1MCw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVYKICAgICAg
ICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5nZXRCeVZh
bEluZm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8uc3R1
YlJvdXRpbmUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGhhc09wdGltaXphYmxlSW5kZXhpbmco
b2JqZWN0LT5zdHJ1Y3R1cmUoKSkpIHsKKyAgICAgICAgaWYgKGhhc09wdGltaXphYmxlSW5kZXhp
bmcob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgLy8gQXR0ZW1wdCB0byBv
cHRpbWl6ZS4KLSAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUgPSBqaXRBcnJheU1v
ZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBKSVRBcnJh
eU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0
dXJlKHZtKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlICE9IGJ5VmFsSW5mby5hcnJheU1v
ZGUpIHsKICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVEaXJlY3RQdXRCeVZhbCgmdm0sIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCksICZieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JF
VFVSTl9BRERSRVNTKSwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgICAgICBkaWRPcHRpbWl6ZSA9
IHRydWU7CkBAIC01NjUsNyArNTY2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VgogICAgICAgICAgICAgLy8gd2hlcmUgd2Ugc2VlIG5vbi1pbmRleC1pbnRlcmNl
cHRpbmcgb2JqZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mCiAgICAgICAg
ICAgICAvLyBvcHBvcnR1bml0eSBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBnZXRfYnlfdmFs
IG1heSBiZSBwb2x5bW9ycGhpYy4KICAgICAgICAgICAgIGlmICgrK2J5VmFsSW5mby5zbG93UGF0
aENvdW50ID49IDEwCi0gICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3Ro
SXNOb3RaZXJvKCkpIHsKKyAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSkt
PnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxl
bmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8g
b3B0aW1pemUuCiAgICAgICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVs
aW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyks
IEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYykpOwpAQCAtNzgwLDEx
ICs3ODEsMTIgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVDbG9zdXJlQ2FsbAogICAg
IGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
KyAgICBWTSYgdm0gPSBleGVjQ2FsbGVlLT52bSgpOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwogICAgIEpTRnVuY3Rp
b24qIG9sZENhbGxlZSA9IGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCk7CiAgICAgCiAgICAgaWYg
KCFvbGRDYWxsZWUKLSAgICAgICAgfHwgb2xkQ2FsbGVlLT5zdHJ1Y3R1cmUoKSAhPSBjYWxsZWUt
PnN0cnVjdHVyZSgpCisgICAgICAgIHx8IG9sZENhbGxlZS0+c3RydWN0dXJlKHZtKSAhPSBjYWxs
ZWUtPnN0cnVjdHVyZSh2bSkKICAgICAgICAgfHwgb2xkQ2FsbGVlLT5leGVjdXRhYmxlKCkgIT0g
Y2FsbGVlLT5leGVjdXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTEz
NDQsMjIgKzEzNDYsMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblByb2ZpbGVXaWxs
QwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNoZWNrSGFzSW5zdGFu
Y2UoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlVmFsKQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwog
CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAg
IEpTVmFsdWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbCk7CiAKICAg
ICBpZiAoYmFzZVZhbC5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbCk7Ci0gICAgICAgIEFTU0VSVCghYmFzZU9iamVjdC0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKTsKLSAgICAg
ICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJ
bnN0YW5jZSgpKSB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VPYmplY3QsIGV4ZWMsIHZhbHVlKTsKKyAg
ICAgICAgQVNTRVJUKCFiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKSB7CisgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFz
SW5zdGFuY2UoYmFzZU9iamVjdCwgZXhlYywgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4
ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9CiAKQEAgLTE0NTAs
OSArMTQ1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJ
bmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLnN0dWJS
b3V0aW5lKTsKICAgICAgICAgCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9i
amVjdC0+c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5n
KG9iamVjdC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0
aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2Rl
Rm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlN
b2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVy
ZSh2bSkpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2Rl
KSB7CiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlR2V0QnlWYWwoJnZtLCBleGVjLT5jb2Rl
QmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1Mp
LCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKQEAgLTE0
NjYsNyArMTQ2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UK
ICAgICAgICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24taW5kZXgtaW50ZXJjZXB0aW5nIG9iamVj
dHMsIHRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZgogICAgICAgICAgICAgLy8gb3Bw
b3J0dW5pdHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgZ2V0X2J5X3ZhbCBtYXkgYmUgcG9s
eW1vcnBoaWMuCiAgICAgICAgICAgICBpZiAoKytieVZhbEluZm8uc2xvd1BhdGhDb3VudCA+PSAx
MAotICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW50
ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygp
KSB7CisgICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygp
LmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFpl
cm8oKSkgewogICAgICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgog
ICAgICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihleGVjLT5jb2RlQmxv
Y2soKSk7CiAgICAgICAgICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0
aW9uKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgRnVuY3Rpb25QdHIob3Bl
cmF0aW9uR2V0QnlWYWxHZW5lcmljKSk7CkBAIC0xNTMwLDcgKzE1MzIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlCiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2JqZWN0KGV4ZWMpOwotICAgIGJvb2wgY291bGREZWxldGUg
PSBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCAq
aWRlbnRpZmllcik7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxl
KHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgKmlkZW50aWZpZXIpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVsZXRlKTsKICAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKQEAgLTE1NDIsNyArMTU0NCw3IEBAIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25HZXRQTmFtZXMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9i
ai0+c3RydWN0dXJlKHZtKTsKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CiAgICAgaWYgKCFq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFBy
b3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKICAgICAg
ICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0
ZShleGVjLCBvYmopOwpAQCAtMTY3MiwxMCArMTY3NCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgfQogCiAgICAgLy8gQ292ZXJzIGltcGxpY2l0IGds
b2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3
ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCi0gICAgaWYg
KHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBzY29wZSAmJiBz
Y29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgeworICAg
IGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUg
JiYgc2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkg
ewogICAgICAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFByb3BlcnR5IHx8IG1v
ZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mp
IHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVjLT52bSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgICAgIHBjWzZdLnUub3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgSklU
OjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpTSW50ZXJmYWNl
SklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5k
KGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGppdCwgTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHZtLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5ndGggdG8gcmVnVDEs
IGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBvaW50ZXIgaW50byBy
ZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxwZXJzOjpqc1N0cmlu
Z0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMTMyLDggKzEzMiw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93Q2FzZShicmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwotICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAg
ICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7CisgICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgcHJvZmlsZSk7CiAgICAg
YW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwogCiAgICAgUGF0
Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjM1LDcgKzIzNCw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0
cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5
VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQ
dHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CkBAIC0y
NzYsOCArMjc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgog
ICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2Vs
bChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDEs
IHJlZ1QzLCBwcm9maWxlKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVn
VDAsIHJlZ1QxLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFw
ZU1hc2spLCByZWdUMSk7CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtNDc1
LDEwICs0NzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAg
ICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCi0gICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAg
ICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgocmVnVDIsIHJlZ1Qz
LCBtX2J5dGVjb2RlT2Zmc2V0KTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQorICAgICAgICBlbWl0
QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJlZ1QwLCByZWdUMiwg
bV9ieXRlY29kZU9mZnNldCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0
OjpzcGVjaWFsUmVnaXN0ZXJzKCksCkBAIC02MzQsNyArNjMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRMb2FkUGF5bG9hZChpdGVyLCByZWdU
MSk7CiAgICAgCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwog
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEs
IE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVy
ZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSksIHJlZ1QzKTsKICAgICBzdWIzMihUcnVz
dGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTczMSw3ICs3MjcsNyBAQCB2b2lkIEpJVDo6ZW1pdExv
YWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAgZW1pdExvYWQoc2NvcGUsIHJlZ1QxLCBy
ZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVTbG90LCByZWdUMik7Ci0gICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsMTAgQEAgSklUOjpD
b2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpTSW50ZXJmYWNlSklU
IGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGpp
dC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGppdCwKKyAgICAgICAgTm90RXF1
YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCAKKyAgICAgICAgdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgLy8gTG9hZCBz
dHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0
aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFkZHJlc3MocmVnVDAs
IFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1QyKTsKQEAgLTEwNiw4
ICsxMDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAg
emVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0
aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5k
ZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBA
IC0yMDQsNyArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1
YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwg
Y2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3RyaW5n
ID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJlbChtX3ZtLT5nZXRD
VElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKSk7CiAgICAgSnVtcCBm
YWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVn
aXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yNzUsNyArMjc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChy
ZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9G
KEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsKICAgICBsb2Fk
MzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVn
VDMpOwpAQCAtMzE2LDggKzMyMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5z
dHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9F
eHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShyZWdU
MiwgcmVnVDMsIHByb2ZpbGUpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChy
ZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0zMihJbmRleGluZ1No
YXBlTWFzayksIHJlZ1QyKTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC01
MTMsMTAgKzUxNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioK
ICAgICAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsK
ICAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMSwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQp
OwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVG
b3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDAsIHJlZ1QxLCBtX2J5dGVjb2RlT2Zmc2V0KTsK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMo
KSwKQEAgLTY5Myw3ICs2OTQsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hl
Y2soaW50CiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwgcmVnVDApOwogICAg
IGxvYWRQdHIoc3RydWN0dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCByZWdUMSkpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBy
ZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAKIHZvaWQgSklUOjpl
bWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkKQEAgLTc1NCw2ICs3
NTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUoSW5zCiAgICAgaWYg
KHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBDbG9zdXJlVmFyKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkg
fHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQor
ICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAg
IGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21TY29wZSwgZHN0LCBj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODU1LDYgKzg2MCw4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHIKICAgICBpZiAoKHJlc29sdmVUeXBlID09IEdsb2Jh
bFZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQog
ICAgICAgICAmJiBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50U2V0LT5zdGF0ZSgp
ICE9IElzSW52YWxpZGF0ZWQpCiAgICAgICAgIGxpbmtDb3VudCsrOworICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtDb3VudCsrOwogICAgIGlmICghbGlu
a0NvdW50KQogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3VudC0tKQpAQCAtODcy
LDI1ICs4NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5pdF9nbG9iYWxfY29uc3QoSW5zdAog
CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29y
ZChSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gxLCBSZWdpc3RlcklEIHNjcmF0
Y2gyKQorSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChSZWdpc3RlcklEIG93bmVyKQogewot
ICAgIG1vdmUob3duZXIsIHNjcmF0Y2gxKTsKLSAgICBtb3ZlKG93bmVyLCBzY3JhdGNoMik7Ci0K
LSAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRj
aDEpOwotICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKH5NYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwg
c2NyYXRjaDIpOwotCi0gICAgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyKDMgKyA0KSwgc2NyYXRjaDIp
OwotCi0gICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEJhc2VJbmRleChzY3JhdGNoMSwgc2Ny
YXRjaDIsIFRpbWVzT25lLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSk7CisgICAgcmV0
dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0
KCkpKTsKIH0KIAogSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChKU0NlbGwqIG93bmVyKQog
ewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9ja0Zvcihvd25lcik7
Ci0gICAgc2l6ZV90IGluZGV4ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pihvd25lcikgJiB+
TWFya2VkQmxvY2s6OmJsb2NrTWFzaykgPj4gKDMgKyA0KTsKLSAgICB2b2lkKiBhZGRyZXNzID0g
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSArIE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1h
cmtzKCkpICsgaW5kZXg7Ci0KKyAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsKICAgICByZXR1cm4g
YnJhbmNoVGVzdDgoWmVybywgQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKTsKIH0KIApAQCAtOTA4
LDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmUKICAg
ICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90
Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKTsKIAot
ICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QwLCByZWdUMSwgcmVn
VDIpOworICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QwKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1Qw
KTsKICAgICBvd25lck5vdE1hcmtlZC5saW5rKHRoaXMpOwogCkBAIC05NTcsNyArOTUzLDcgQEAg
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZQogICAgIGlmIChtb2RlID09
IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxsID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0g
ICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQocmVnVDEsIHJlZ1QwLCByZWdU
Mik7CisgICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQocmVnVDEpOwogICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgcmVnVDEp
OwogICAgIG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7CiAKQEAgLTEwMTMsNyArMTAwOSw3IEBA
IEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICAgICAgc3RydWN0
dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0Y2hwb2ludChtX2Nv
ZGVCbG9jaykpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJhbmNoUHRyKEVxdWFs
LCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSkpOworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKEVxdWFs
LCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVy
ZSk7CiAgICAgICAgIGJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0aGlzKTsKICNlbmRp
ZgpAQCAtMTAyMiw3ICsxMDE4LDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNp
dGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIob2JqZWN0KSwgc2Ny
YXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAg
ICByZXR1cm4gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiB9CiAKIHZvaWQgSklUOjphZGRT
dHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiBvYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMs
IFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTExODAsOCArMTE3Niw4IEBAIEpJVDo6SnVtcExpc3Qg
SklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7
CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKyAgICBsb2FkOChBZGRyZXNzKGJhc2Us
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9y
VHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFi
b3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9m
ZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgYmFzZSk7CiAgICAgCkBAIC0xMjUwLDkgKzEyNDYs
OSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdlCiAjZW5kaWYKICAg
ICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJh
c2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkp
KTsKKworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIHNjcmF0Y2gpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwg
c2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVz
cyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBi
YXNlKTsKICAgICAKQEAgLTEzMDQsOCArMTMwMCw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0
SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0g
ICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJs
eVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CisgICAgbG9hZDgoQWRkcmVzcyhiYXNl
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKKyAgICBiYWRU
eXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRjaCwgVHJ1c3RlZElt
bTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIEp1bXAgaW5Cb3VuZHMgPSBi
cmFuY2gzMihCZWxvdywgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVj
aWFsQ2FzZShwcm9maWxlKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CkBAIC0xMzc2LDggKzEz
NzIsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheVB1CiAgICAgCiAg
ICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBiYWRUeXBlID0g
cGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGVhcmx5U2NyYXRjaCwgU3RydWN0
dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0
eXBlKSkpOworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5v
dEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUo
dHlwZSkpKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CiAgICAg
ZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7CiAgICAgSnVt
cCBkb25lID0ganVtcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CiAjZW5kaWYKIAotICAgICAgICBKdW1wIGVt
aXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVn
LCBKU1R5cGUpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFz
ZVJlZywgSlNUeXBlKTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3Rl
cklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkpOwpAQCAtMjI0LDEwICsyMjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAjZW5kaWYK
IAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6
OmVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNo
UmVnLCBKU1R5cGUgdHlwZSkKKyAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1w
IEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpT
VHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aDgoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CisgICAgICAgIHJldHVybiBicmFuY2g4KE5v
dEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBKU0lu
dGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMTY0NjU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVk
ZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgiCisjaW5j
bHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNQdXRC
eUlkTGlzdC5oIgpAQCAtMTAzLDcgKzEwNSw3IEBAIHN0YXRpYyB2b2lkIHJlcGF0Y2hCeUlkU2Vs
ZkFjY2VzcyhWTSYgdm0KICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAgLy8gUGF0Y2ggdGhl
IHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9m
ZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1
Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2hlY2tJbW1Ub0NhbGwpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RydWN0dXJlLT5pZCgpKSk7
CiAgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9mZnNldCkpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCkBAIC0xMzEsMTAgKzEzMywxMCBAQCBz
dGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAgICAgIC8vIElmIHdl
IGV4ZWN1dGUgdGhpcyBjb2RlLCB0aGUgb2JqZWN0IG11c3QgaGF2ZSB0aGUgc3RydWN0dXJlIHdl
IGV4cGVjdC4gQXNzZXJ0CiAgICAgICAgIC8vIHRoaXMgaW4gZGVidWcgbW9kZXMuCiAgICAgICAg
IGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2hH
UFIpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5icmFuY2hQdHIoCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gYnJhbmNoU3RydWN0dXJlKGppdCwKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKTsKICAgICAgICAgaml0LmJy
ZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluaygmaml0KTsKICNlbmRpZgpAQCAtMTQzLDEwICsx
NDUsMTAgQEAgc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgIAog
ICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0
Y2hHUFIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoCi0gICAgICAgIGppdC5icmFuY2hQdHIo
CisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShqaXQsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKIH0KIAogc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJh
bnNpdGlvbkNoZWNrKApAQCAtMTY1LDEwICsxNjcsMTAgQEAgc3RhdGljIHZvaWQgYWRkU3RydWN0
dXJlVHJhbnNpdGlvbkNoZWNrKAogCiBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoUmVwYXRj
aEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBjb25z
dCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0KQogewotICAgIGlmIChNYWNyb0Fzc2VtYmxl
cjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgeworICAgIGlm
IChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwbGFjZVdpdGhKdW1wKAotICAgICAgICAg
ICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRk
cmVzcygKLSAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsUHRyQXRPZmZzZXQoCisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoCisgICAgICAgICAgICAgICAgc3R1YkluZm8u
Y2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoCiAgICAgICAgICAgICAgICAg
ICAgIC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCkpLAogICAg
ICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CiAgICAgICAgIHJldHVybjsKQEAg
LTI0OSw3ICsyNTEsMTAgQEAgc3RhdGljIFByb3RvQ2hhaW5HZW5lcmF0aW9uUmVzdWx0IGdlbmVy
YQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAg
Ci0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
KSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAg
IHN0cnVjdHVyZSkpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVByb3BlcnR5Rmly
ZXNXYXRjaHBvaW50cygpKQpAQCAtMzgwLDggKzM4NSw3IEBAIHN0YXRpYyBib29sIHRyeUNhY2hl
R2V0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgCi0gICAgICAgIHN0dWJKaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc2NyYXRjaEdQUik7IAotICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSXNBcnJh
eSkpKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzaykpKTsKICAgICAgICAgCkBAIC01NzMsNyArNTc3LDEwIEBA
IHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAgICAgICAgCiAgICAg
ICAgIENDYWxsSGVscGVycyBzdHViSml0KHZtLCBjb2RlQmxvY2spOwogICAgICAgICAKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgd3JvbmdTdHJ1Y3QgPSBzdHViSml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgd3JvbmdTdHJ1Y3Qg
PSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIHN0cnVjdHVyZSk7CiAg
ICAgICAgIAogICAgICAgICAvLyBUaGUgc3RyYXRlZ3kgd2UgdXNlIGZvciBzdHVicyBpcyBhcyBm
b2xsb3dzOgogICAgICAgICAvLyAxKSBDYWxsIERGRyBoZWxwZXIgdGhhdCBjYWxscyB0aGUgZ2V0
dGVyLgpAQCAtODE3LDcgKzgyNCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCB3cml0
ZUJhcnJpZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAgIEFTU0VSVChvd25l
ciAhPSBzY3JhdGNoMik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90
TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFycmllcihqaXQsIG93
bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRlZmlu
aXRlbHlOb3RNYXJrZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVy
KGppdCwgb3duZXIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwgPSBzdG9yZVRvV3Jp
dGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgYWxsb2NhdG9y
KTsKICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CiAgICAgcmV0dXJuIGNhbGw7
CkBAIC04NTgsMTAgKzg2NSwxMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAK
ICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoc3R1YkppdCk7
CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBzdHViSml0LmJyYW5j
aFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBicmFuY2hTdHJ1
Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgpKSkKQEAgLTk3NSw3
ICs5ODIsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICAg
ICAgCiAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCi0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihvbGRTdHJ1Y3R1cmUpKSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG9sZFN0cnVjdHVyZSkpOwogICAgIAogICAgIGFk
ZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgb2xkU3RydWN0dXJlLT5zdG9yZWRQ
cm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBzdHViSml0LCBmYWlsdXJl
Q2FzZXMsCkBAIC0xMDI2LDcgKzEwMzYsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRp
b25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2UgPSB0cnVlOwogICAgIH0KIAot
ICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSkpOworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09
IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gc3RydWN0dXJlLT50eXBlSW5mbygpLmlu
bGluZVR5cGVGbGFncygpKTsKKyAgICBBU1NFUlQob2xkU3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSA9PSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICBzdHViSml0LnN0b3JlMzIoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihzdHJ1
Y3R1cmUtPmlkKCkpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJKaXQuc3RvcmU2NCh2
YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNl
dE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zm
c2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CkBAIC0xMjcxLDcgKzEyODQsNyBAQCBzdGF0aWMg
Ym9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEzNDYs
MTAgKzEzNTksMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgICAgICAgICAgbmVl
ZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
c3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3Ry
dWN0dXJlKHN0dWJKaXQsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUp
KTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwog
ICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNX
YXRjaHBvaW50cygpKQpAQCAtMTUwMCwxMCArMTUxMywxMCBAQCB2b2lkIGxpbmtDbG9zdXJlQ2Fs
bCgKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAgICAgICAgc3R1YkppdC5i
cmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVz
cyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIENDYWxs
SGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBzbG93UGF0aC5hcHBlbmQoCiAg
ICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTU3MywxNiArMTU4NiwxNiBAQCB2b2lkIGxp
bmtDbG9zdXJlQ2FsbCgKIHZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hC
dWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICByZXBhdGNoQ2FsbChy
ZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSk7Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVs
ID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50
cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7Ci0gICAgaWYgKE1hY3Jv
QXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0
Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKKyAgICBD
b2RlTG9jYXRpb25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2gu
ZGVsdGFDaGVja0ltbVRvQ2FsbCk7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVw
bGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKKyAgICAgICAgcmVwYXRjaEJ1ZmZl
ci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKAorICAg
ICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
T25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAgICAgICAgICAgICAgICBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9pbnRlcikp
OwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBhdGNoQnVmZmVyLnJl
cGF0Y2goc3RydWN0dXJlTGFiZWwsIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIp
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5m
by5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkBAIC0xNjA3LDE2ICsxNjIw
LDE2IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2gKICAgICAgICAg
b3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emU7CiAgICAgfQogICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIENvZGVMb2NhdGlvbkRhdGFM
YWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1U
b0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVmZmVyLnJldmVydEp1bXBS
ZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAgICAgICAgICAgUmVw
YXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhz
dHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgc3RydWN0dXJlTGFi
ZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGlu
dHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOworICAgIGlmIChNYWNy
b0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpKSB7
CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUiksCi0g
ICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgICAgICAgICAgICAg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNo
KHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7
CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBzdGF0aWNfY2FzdDxp
bnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICByZXBhdGNo
QnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSksIDApOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2lmIEVO
QUJMRShKSVQpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCiAjaW5j
bHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAgLTY3LDE0ICs2OSwx
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNTdHJpbmdBcmd1bWVudChW
TSYgdm0sIGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAgICAgICAgICBtX2ZhaWx1
cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoKnRoaXMsIE5v
dEVxdWFsLCAKKyAgICAgICAgICAgICAgICBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZEFyZ3VtZW50V2l0aFNwZWNp
ZmljQ2xhc3MoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGludCBhcmd1bWVudCwgUmVnaXN0
ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICAgICAgewogICAgICAgICAgICAgbG9h
ZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVz
cyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgICAg
IGVtaXRMb2FkU3RydWN0dXJlKGRzdCwgc2NyYXRjaCwgZHN0KTsKICAgICAgICAgICAgIGFwcGVu
ZEZhaWx1cmUoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKKyAgICAgICAg
ICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVj
dHVyZSBjbG9iYmVyZWQgaXQuCisgICAgICAgICAgICBsb2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50
LCBkc3QpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWRJbnQzMkFyZ3Vt
ZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxUYXJnZXQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJUaHVua0dl
bmVyYXRvcnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkRGR1NwZWN1
bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKQEAgLTE4OSw3ICsxOTAsNyBAQCBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JUCiAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5kaWYKLSAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0TG9hZFN0cnVjdHVyZShqaXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMiwgR1BS
SW5mbzo6cmVnVDEpOwogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAgaml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCkBAIC05NTksOSArOTYwLDcg
QEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdAogICAgIGppdC5sb2Fk
MzIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpv
ZmZzZXRPZk5leHRJbmRleCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDEpOwogICAgIAog
ICAgIC8vIFB1bGwgb3V0IHRoZSBidXR0ZXJmbHkgZnJvbSBpdGVyYXRlZE9iamVjdAotICAgIGpp
dC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7Ci0gICAgCi0gICAg
aml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIsIFN0cnVjdHVyZTo6
aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CisgICAg
aml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTQ2VsbDo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CiAgICAgaml0
LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOwogICAgIAogICAg
IGppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1VudXNlZFBv
aW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1VudXNlZFBv
aW50ZXIuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9V
bnVzZWRQb2ludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDExIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisjaWYgVVNFKEpTVkFMVUU2NCkKK3N0YXRpYyBjb25zdCB1aW50cHRyX3Qg
dW51c2VkUG9pbnRlciA9IDB4MDsKKyNlbHNlCiBzdGF0aWMgY29uc3QgdWludHB0cl90IHVudXNl
ZFBvaW50ZXIgPSAweGQxZTdiZWVmOworI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTUzMSw2ICs1MzEsMTMgQEAgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRV
bmNoZQogICAgICAgICBwYXlsb2FkKQogZW5kCiAKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5
cGVJbmZvKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBzdG9yZXAgc3RydWN0dXJlLCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0KKworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9pbmRl
eGluZ1R5cGVbc3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3JlaSBzY3JhdGNoLCBKU0NlbGw6
Om1faW5kZXhpbmdUeXBlW2NlbGxdCitlbmQKKwogbWFjcm8gd3JpdGVCYXJyaWVyT25PcGVyYW5k
KGNlbGxPcGVyYW5kKQogICAgIGlmIEdHQwogICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
Y2VsbE9wZXJhbmQsIHQxKQpAQCAtNzQ4LDcgKzc1NSw3IEBAIF9sbGludF9vcF90b190aGlzOgog
ICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2Vs
bFRhZywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93
CiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgYnBuZXEgdDAsIHQyLCAub3BU
b1RoaXNTbG93CkBAIC04NjgsNyArODc1LDcgQEAgX2xsaW50X29wX2VxX251bGw6CiAgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BFcU51bGxN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAwLCB0MQogICAgIGptcCAub3BFcU51bGxO
b3RJbW1lZGlhdGUKQEAgLTkxNSw3ICs5MjIsNyBAQCBfbGxpbnRfb3BfbmVxX251bGw6CiAgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlh
dGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm9wTmVx
TnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDEsIHQxCiAgICAgam1wIC5vcE5l
cU51bGxOb3RJbW1lZGlhdGUKQEAgLTk0Miw4ICs5NDksOCBAQCBtYWNybyBzdHJpY3RFcShlcXVh
bGl0eU9wZXJhdGlvbiwgc2xvd1BhCiAgICAgYmluZXEgdDIsIHQzLCAuc2xvdwogICAgIGJpYiB0
MiwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MV0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
dDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFdLCB0MwogICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
bm90U3RyaW5nCiAgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKIC5ub3RTdHJpbmc6CkBAIC0xMjI1LDcgKzEyMzIs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBsb2FkaSAxMltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDBdLCB0MAogICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNl
U2xvdwogICAgIGRpc3BhdGNoKDUpCiAKQEAgLTEyNDAsNyArMTI0Nyw3IEBAIF9sbGludF9vcF9p
bnN0YW5jZW9mOgogICAgIGxvYWRpIDEyW1BDXSwgdDAKICAgICBsb2FkaSA0W1BDXSwgdDMKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgYmJiIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9m
U2xvdwogICAgIGxvYWRpIDhbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCkBAIC0xMjQ4LDcgKzEyNTUs
NyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHBy
b3RvdHlwZSwgdDIgPSB2YWx1ZQogICAgIG1vdmUgMSwgdDAKIC5vcEluc3RhbmNlb2ZMb29wOgot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQyCiAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFBheWxvYWRPZmZzZXRbdDJdLCB0MgogICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9u
ZQogICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcApAQCAtMTI3NSw3ICsxMjgyLDcgQEAg
X2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNVbmRlZmluZWRDZWxsOgotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0M10sIHQxCiAgICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCkBAIC0xMzE4LDcgKzEzMjUsNyBAQCBfbGxpbnRfb3BfaXNfc3Ry
aW5nOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykKICAgICBzdG9yZWkg
Qm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYmluZXEgdDAsIENlbGxUYWcs
IC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQwCiAgICAgY2JlcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgdDEK
ICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgz
KQpAQCAtMTM4Nyw3ICsxMzk0LDcgQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2Up
CiAgICAgICAgIHQzLAogICAgICAgICB0MCwKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFn
ZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgNFtQQ10sIHQxCiAg
ICAgICAgICAgICBsb2FkaSBUYWdPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gK
ICAgICAgICAgICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHQy
CkBAIC0xNDE1LDcgKzE0MjIsNyBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBs
b2FkaSA4W1BDXSwgdDAKICAgICBsb2FkcCAxNltQQ10sIHQxCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRBcnJheUxlbmd0aFNsb3cpCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQyCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBi
dGl6IHQyLCBJc0FycmF5LCAub3BHZXRBcnJheUxlbmd0aFNsb3cKICAgICBidGl6IHQyLCBJbmRl
eGluZ1NoYXBlTWFzaywgLm9wR2V0QXJyYXlMZW5ndGhTbG93CkBAIC0xNDYwLDcgKzE0NjcsNyBA
QCBtYWNybyBwdXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAgICAgdDAsCiAgICAgICAg
IHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAg
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAg
ICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRT
bG93CiAgICAgICAgICAgICBsb2FkaSAyMFtQQ10sIHQxCiAgICAgICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0Miwgc2NyYXRjaCwgdDIpCiAgICAgICAgICAgICBzdG9yZWkgc2Ny
YXRjaCwgVGFnT2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDFdCkBAIC0xNDg4LDcgKzE0OTUsNyBA
QCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzCiAgICAgbG9hZGkgMTZb
UENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0
MCwgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMTJbUENdLCB0MgotICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRpdGlvbmFsQ2hl
Y2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCiAgICAgbG9hZGkgMjBbUENdLCB0MQogICAgIGdl
dFByb3BlcnR5U3RvcmFnZSgKQEAgLTE1MDAsNyArMTUwNyw3IEBAIG1hY3JvIHB1dEJ5SWRUcmFu
c2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICAgICAgICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W3QzXQogICAgICAgICAgICAgbG9hZGkgMjRbUENdLCB0MQogICAgICAgICAgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W3QzXQotICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXQorICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURb
dDBdCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQogICAgICAgICBlbmQpCiAKQEAgLTE1MjIsNyAr
MTUyOSw3IEBAIG1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBi
aWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVs
bFRhZywgLmRvbmUKIC5sb29wOgogICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQ
YXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQogICAgIGJwbmVxIG9sZFN0cnVj
dHVyZSwgW3NjcmF0Y2hdLCBzbG93UGF0aAogICAgIGFkZHAgNCwgc2NyYXRjaAogICAgIGJpbmVx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRh
ZywgLmxvb3AKQEAgLTE1NDksNyArMTU1Niw3IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaSA4W1BDXSwgdDIKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDBdLCB0MgogICAgIGxvYWRwIDE2W1BDXSwgdDMKICAgICBhcnJheVByb2ZpbGUo
dDIsIHQzLCB0MSkKICAgICBsb2FkaSAxMltQQ10sIHQzCkBAIC0xNjMzLDcgKzE2NDAsNyBAQCBf
bGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCiAgICAgbG9hZGkgMjBbUENdLCB0
MAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCi0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QyXSwgdDAKICAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRT
dHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxvYWRpIDI0W1BDXSwgdDAKICAg
ICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCkBAIC0xNjc1LDcgKzE2ODIsNyBAQCBtYWNybyBwdXRC
eVZhbChob2xlQ2hlY2ssIHNsb3dQYXRoKQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwg
MykKICAgICBsb2FkaSA0W1BDXSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDFdLCB0
MgogICAgIGxvYWRwIDE2W1BDXSwgdDMKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MCkKICAg
ICBsb2FkaSA4W1BDXSwgdDAKQEAgLTE3ODEsNyArMTc4OCw3IEBAIG1hY3JvIGVxdWFsTnVsbChj
ZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCiAgICAgY2VsbEhh
bmRsZXIodDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwg
LnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQogCkBAIC0xOTEyLDcgKzE5MTksNyBAQCBfbGxpbnRf
b3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hK
dW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0Mgog
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdLCB0MQogICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBi
aW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
ICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCkBAIC0xOTYxLDkgKzE5NjgsOSBA
QCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKCkKICAgICBuZWdpIHQzCiAgICAgYmluZXEgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCBDZWxsVGFnLCAuZG9uZQog
ICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0s
IHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbihDYWxs
T3BDb2RlU2l6ZSAtIDIsIHQxKQotICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RT
ZWVuU3RydWN0dXJlW3QxXQorICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVu
U3RydWN0dXJlSURbdDFdCiAuZG9uZToKIGVuZAogCkBAIC0yMDI2LDcgKzIwMzMsNyBAQCBfbGxp
bnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgogICAgIGxvYWRpIDRbUENdLCB0MgogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBiYmIg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUs
IC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAogICAgIGRvUmV0dXJuKCkKIApAQCAtMjA0Miw3
ICsyMDQ5LDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAgICBsb2FkaSA0W1BDXSwgdDMK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCiAgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MgogICAgIGJi
bmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdU
eXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCkBAIC0yMDcxLDcgKzIwNzgsNyBAQCBfbGxp
bnRfb3BfbmV4dF9wbmFtZToKICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KICAgICBsb2FkaSA4W1BDXSwgdDMKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdLCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdwogICAg
IGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJd
LCB0MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBAIC0yMDc5
LDcgKzIwODYsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNoZWNrUHJv
dG90eXBlTG9vcDoKICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRb
dDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDJdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQxCiAg
ICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBhZGRwIDQsIHQwCiAgICAg
YnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCkBAIC0yMzI0LDcgKzIz
MzEsNyBAQCBtYWNybyBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKG9wZXJhbmQsIHNsCiAgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwg
dDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEsIHNsb3dQYXRoCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW3QwXSwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NDIsNiArNDQy
LDI5IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAgICBzdG9y
ZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAorbWFjcm8g
bG9hZFN0cnVjdHVyZShjZWxsLCBzdHJ1Y3R1cmUpCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgc2NyYXRjaAorICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVtzY3JhdGNoXSwgc2Ny
YXRjaAorICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3Ry
dWN0dXJlSURUYWJsZTo6bV90YWJsZVtzY3JhdGNoXSwgc2NyYXRjaAorICAgIGxvYWRpIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisgICAgbG9hZHAgW3NjcmF0Y2gsIHN0
cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQorZW5kCisKK21hY3JvIGxvYWRTdHJ1Y3R1cmVBbmRDbG9i
YmVyRmlyc3RBcmcoY2VsbCwgc3RydWN0dXJlKQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFtjZWxsXSwgc3RydWN0dXJlCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNlbGwKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bY2VsbF0sIGNlbGwKKyAgICBsb2FkcCBWTTo6aGVhcCAr
IEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbY2Vs
bF0sIGNlbGwKKyAgICBsb2FkcCBbY2VsbCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCitlbmQK
KworbWFjcm8gc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJlLCBzY3Jh
dGNoKQorICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9zdHJ1Y3R1cmVJRFtzdHJ1Y3R1cmVdLCBzY3Jh
dGNoCisgICAgc3RvcmVxIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQorZW5k
CiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTU5NSwxMCArNjE4
LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5v
cFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxP
YmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBicG5l
cSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNzEzLDExICs3MzYsMTEgQEAg
bWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIs
IHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJ0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0
MApAQCAtMTA1NCw4ICsxMDc3LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNs
b3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0NlbGw6
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0lu
c3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgpA
QCAtMTA2NywyNCArMTA4OSwyMyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMywgdDApCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9m
U2xvdworICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNl
b2ZTbG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHQwLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCiAgICAgCiAgICAgIyBS
ZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEsIHQw
CiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKLSAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwgdDIKKyAgICBsb2FkU3Ry
dWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHQyLCB0MykKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlW3QzXSwgdDIKICAgICBicWVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKICAg
ICBidHF6IHQyLCB0YWdNYXNrLCAub3BJbnN0YW5jZW9mTG9vcAogCiAgICAgbW92ZSAwLCB0MAog
Lm9wSW5zdGFuY2VvZkRvbmU6CiAgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDEsIHQzKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlz
cGF0Y2goNCkKIApAQCAtMTEwNCwxNyArMTEyNSwxNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVk
OgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5k
ZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBi
dGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlND
ZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0
MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAgbG9h
ZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCi0gICAg
Y3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQzCi0gICAgb3JxIFZhbHVl
RmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBjcGVxIFN0cnVjdHVy
ZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAKKyAg
ICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtMTE0Nyw4
ICsxMTY4LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgYnRxbnog
dDAsIHRhZ01hc2ssIC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAotICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0MF0s
IFN0cmluZ1R5cGUsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBb
Y2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQpAQCAtMTIwMCwxNCArMTIyMCwxNSBAQCBtYWNy
byBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CiAgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigyLCB0MCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQotICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2go
dDMsIHQyLCB0MSkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKKyAgICBicG5lcSB0
MiwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0
MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gp
Ci0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CisgICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCiAgICAgICAg
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgICAgICAgICBsb2FkcSBbcHJv
cGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBb
Y2ZyLCB0MSwgOF0KQEAgLTEyMzMsNyArMTI1NCw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVu
Z3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21JbnN0
cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5v
cEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQogICAgIGJ0
aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXogdDIsIEluZGV4
aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTEyNzEsMTUgKzEyOTIsMTYg
QEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0
MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIsIHQx
LCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDAsCiAg
ICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAg
ICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgICAgICAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbcHJvcGVy
dHlTdG9yYWdlLCB0MV0KICAgICAgICAgICAgIGRpc3BhdGNoKDkpCkBAIC0xMzA0LDkgKzEzMjYs
MTAgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQorICAgIGJwbmVxIHQyLCB0
MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgdDIpCiAgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MykK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgZ2V0UHJvcGVydHlTdG9yYWdl
KAogICAgICAgICB0MCwKQEAgLTEzMTYsMTUgKzEzMzksMTYgQEAgbWFjcm8gcHV0QnlJZFRyYW5z
aXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEpCiAgICAgICAgICAgICBzdG9yZXEgdDEsIFt0M10KICAgICAgICAgICAgIGxvYWRw
RnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQorICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3N0cnVjdHVyZUlE
W3QxXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIG5v
QWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBub0FkZGl0aW9u
YWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBz
dHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1
cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGNvbnN0
IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSBy
ZWdpc3RlciBmb3IgdGhlIHByb3RvCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywgc2NyYXRj
aCkKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCkBAIC0xMzMz
LDcgKzEzNTcsOCBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsCiAg
ICAgYnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwg
LmRvbmUKIC5sb29wOgogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0
dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxd
LCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHByb3Rv
Q2VsbCwgc2NyYXRjaDIpCisgICAgbW92ZSBzY3JhdGNoMiwgb2xkU3RydWN0dXJlCiAgICAgYnBu
ZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA4LCBz
Y3JhdGNoCiAgICAgYnFuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBW
YWx1ZU51bGwsIC5sb29wCkBAIC0xMzYwLDggKzEzODUsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3Zh
bDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQy
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgogICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDQsIHQzKQorICAgIG1vdmUgdDAsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0
MywgdDEpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVJbnQzMih0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE0NDQsNyArMTQ2
OSw3IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDIsIHQwLCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBhc3NlcnROb3RDb25zdGFudCh0
MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQxCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCiAg
ICAgYnBuZXEgdDIsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qx
XSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMpCiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKQEAgLTE0ODUsOCArMTUxMCw4
IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAgd3JpdGVCYXJyaWVy
T25PcGVyYW5kcygxLCAzKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKLSAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKICAgICBsb2FkcEZyb21JbnN0cnVjdGlv
big0LCB0MykKKyAgICBtb3ZlIHQxLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlSW50MzIodDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCkBAIC0xNTg5LDggKzE2MTQsOCBAQCBt
YWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdN
YXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0g
ICAgY2VsbEhhbmRsZXIodDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QyXSwgLnRhcmdldCkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0
MSkKKyAgICBjZWxsSGFuZGxlcih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAg
ICBkaXNwYXRjaCgzKQogCiAudGFyZ2V0OgpAQCAtMTcyMiw4ICsxNzQ3LDcgQEAgX2xsaW50X29w
X3N3aXRjaF9jaGFyOgogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVt
cFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAg
ICBidHFueiB0MSwgdGFnTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QxXSwgMSwg
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDFd
LCB0MAogICAgIGJ0cHogIHQwLCAub3BTd2l0Y2hPblJvcGUKQEAgLTE3NzIsOSArMTc5Niw5IEBA
IG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwoKQogICAgIG5lZ3AgdDMKICAgICBsb2FkcSBUaGlz
QXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5k
b25lCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oKENhbGxPcENvZGVTaXplIC0gMiksIHQxKQotICAgIHN0b3JlcCB0MCwgQXJy
YXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QxXQorICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIHQzCisgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRFt0MV0KIC5kb25lOgogZW5kCiAKQEAgLTE4MzUsOCArMTg1OSw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQogICAgIGJ0cW56IHQwLCB0
YWdNYXNrLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAor
ICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdAogICAgIGRvUmV0dXJuKCkKIAogLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
OgpAQCAtMTg1MSw4ICsxODc0LDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVT
bG93Q2FzZQorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZQogLm9wVG9QcmltaXRpdmVJc0ltbToKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDMpCkBAIC0xODgyLDcgKzE5MDQsNyBAQCBfbGxpbnRf
b3BfbmV4dF9wbmFtZToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDMpCiAgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDMpCiAgICAgbG9hZHEgW2NmciwgdDMsIDhdLCB0MwotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MywgdDEsIHQwKQogICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2Nh
Y2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MApAQCAtMTg5MCw3ICsxOTEyLDcgQEAgX2xs
aW50X29wX25leHRfcG5hbWU6CiAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CiAgICAg
YnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgVmFsdWVOdWxsLCAub3BOZXh0UG5hbWVT
bG93CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0MV0sIHQyCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQyLCB0MSwgdDMpCiAgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBh
ZGRwIDgsIHQwCiAgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
CkBAIC0yMDk2LDggKzIxMTgsOSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKIG1hY3JvIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1BhdGgpCiAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIHNsb3dQ
YXRoCisgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCiAKIG1hY3JvIGdldFByb3BlcnR5
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDM5LDEx
ICs0MzksMTIgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNsb3dQYXRoKQogICAgICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gYXJyYXlQcm9maWxlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgcHJv
ZmlsZSwgc2NyYXRjaCkKLSAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGlu
Z1R5cGUKLSAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUK
LSAgICBzdG9yZXAgc3RydWN0dXJlLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVb
cHJvZmlsZV0KLSAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0s
IGluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHBy
b2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAg
ICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAorICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaAorICAgIHN0b3JlaSBzY3JhdGNoLCBB
cnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtwcm9maWxlXQorICAgIGxvYWRiIEpT
Q2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKIG1hY3JvIGNo
ZWNrTWFya0J5dGUoY2VsbCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBjb250aW51YXRpb24pCkBAIC02
MjAsOCArNjIxLDggQEAgbWFjcm8gYWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3IsIHN0cnVjdAog
ICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFthbGxvY2F0b3Jd
CiAgICAgCiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAgICAgICBzdG9yZXAg
c3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAs
IEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCisgICAgICAgIHN0b3JlU3RydWN0dXJlV2l0
aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkKICAgICBlbmQKIGVuZAogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlz
aW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEFyZ3VtZW50czo6Y3Jl
YXRlU3RyaWN0TW9kZUNhbGxlcklmCiAgICAgbV9vdmVycm9kZUNhbGxlciA9IHRydWU7CiAgICAg
UHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3Nv
ckRlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZt
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgQWNjZXNzb3IpOwotICAgIG1ldGhvZFRhYmxlKCkt
PmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwg
ZGVzY3JpcHRvciwgZmFsc2UpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIGRlc2NyaXB0
b3IsIGZhbHNlKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJ
Zk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBBcmd1
bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgogICAgIG1fb3ZlcnJvZGVDYWxsZWUgPSB0
cnVlOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iu
c2V0QWNjZXNzb3JEZXNjcmlwdG9yKGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRl
clNldHRlcih2bSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEFjY2Vzc29yKTsKLSAgICBtZXRo
b2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICBtZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVl
LCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAog
ICAgIHsgCi0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEFyZ3VtZW50c1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsgCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1Bcmd1bWVu
dHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX251bUFyZ3VtZW50cyk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDE2ICsyMTIsMTYg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgZnJvbSk7CiAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0
bywgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdGhp
c09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqLCBleGVjLCB0bykpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4g
bGVuZ3RoIC0gY291bnQ7IC0taykgewotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKKyAgICAg
ICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjU2LDggKzI1Niw4IEBAIHZvaWQgdW5z
aGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGZyb20pOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXNP
YmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0
cnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhpc09i
ai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8s
IHZhbHVlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTI4MCwxMSArMjgwLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0YKIAogICAgIC8vIDMuIElmIElzQ2FsbGFibGUoZnVuYykgaXMgZmFsc2UsIHRoZW4gbGV0IGZ1
bmMgYmUgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZCBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nICgxNS4yLjQuMikuCiAgICAgaWYgKCFmdW5jdGlvbi5pc0NlbGwoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0i
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29i
amVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRo
aXNPYmplY3QpLCAiXSIpKTsKIAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBh
cyB0aGUgdGhpcyB2YWx1ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgaWYgKCFp
c0pTQXJyYXkodGhpc09iamVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGVIb3N0IHx8IGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC00NjgsNyArNDY4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICBy
ZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgbGVuZ3RoIC0gMSk7CiAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAg
IH0KQEAgLTUyOCwxOSArNTI4LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0YKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICAgICAgaWYgKG9iajIpIHsKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgb2JqMiwgdHJ1ZSk7CisgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCBrLCBvYmoyLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaykpIHsKKyAgICAgICAgfSBlbHNlIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBrKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAob2JqKSB7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmot
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwg
b2JqLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgbGsxKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxrMSkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CkBAIC02NTgsMTggKzY1OCwx
OCBAQCBzdGF0aWMgYm9vbCBwZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBlCiAgICAgICAgIC8v
IFN3YXAgdGhlbWluIGFuZCBpCiAgICAgICAgIGlmICh0aGVtaW4gPiBpKSB7CiAgICAgICAgICAg
ICBpZiAobWluT2JqKSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+
cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpLCBtaW5PYmosIHRydWUpOworICAgICAgICAgICAg
ICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIGksIG1pbk9iaiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgaSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgaSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaU9iaikgewotICAgICAgICAgICAgICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluLCBp
T2JqLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4sIGlPYmosIHRydWUpOwogICAg
ICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRoZW1pbikpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgewogICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTcw
Myw3ICs3MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtNzM0LDcgKzczNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgaWYg
KGluZGV4IDwgZmxhdEFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaW5kZXgpKSB7CisgICAgICAgIGlmICghdGhpc09iai0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBpbmRleCkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICBmb3IgKHNpemVfdCBpID0gZmxh
dEFycmF5LT5sZW5ndGgoKTsgaS0tOykgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3JI
b2xlKGZsYXRBcnJheSwgZXhlYywgaSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlKTsK
LSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIHZhbHVlLCB0cnVlKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CkBAIC04MDAsNyArODAwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGFkZGl0aW9uYWxBcmdzOyArK2spIHsKLSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrICsgYmVnaW4sIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGsgKyAyKSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBiZWdpbiwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CkBAIC04MjUsNyArODI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJnczsgKytr
KSB7Ci0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgaywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBr
LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTEsNyArMjUxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAg
QkVHSU4oKTsKICAgICBKU1ZhbHVlIHYxID0gT1AoMSkuanNWYWx1ZSgpOwogICAgIGlmICh2MS5p
c0NlbGwoKSkKLSAgICAgICAgcGNbMl0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgcGNbMl0udS5zdHJ1Y3R1cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCksIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICBlbHNl
CiAgICAgICAgIHBjWzJdLnUuc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgUkVUVVJOKHYxLnRvVGhp
cyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDog
Tm90U3RyaWN0TW9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVi
bGljOgogICAgIH0KICAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRnVuY3Rpb25FeGVj
dXRhYmxlVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlOwogICAgIH0KICAgICBib29sIGlzUHJvZ3JhbUV4ZWN1dGFibGUoKQogICAgIHsKQEAgLTEy
MCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRh
bDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9udW1QYXJhbWV0
ZXJzRm9yQ29uc3RydWN0OwogCkBAIC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogaW5saW5l
IHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUpCiB7Ci0gICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnR5cGUoKSkgewogICAgIGNh
c2UgRXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFi
bGVUeXBlOgpAQCAtNjk0LDcgKzY5NCw3IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXIKIAogaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMo
KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIEV2YWxFeGVjdXRhYmxlVHlwZToKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOwogICAg
IGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXIt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsK
ICAgICByZXR1cm4gY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwg
QXJnTGlzdCgpKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxl
KCktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gc2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBj
YWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFz
ZSwgYXJncyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPG11
dGV4PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw4ICsyMzgs
OCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiB7CiAgICAgQXJy
YXlTdG9yYWdlKiBzdG9yYWdlID0gZW5zdXJlQXJyYXlTdG9yYWdlKHZtKTsKICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpOwotICAgIHVuc2lnbmVkIHByb3Bl
cnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAgICB1bnNp
Z25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpOworICAgIHVu
c2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZSh2bSktPm91dE9mTGlu
ZVNpemUoKTsKIAogICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzIG9u
IHRoZSBmYXN0IHBhdGguCiAgICAgQVNTRVJUKCFhZGRUb0Zyb250IHx8IGNvdW50ID4gc3RvcmFn
ZS0+bV9pbmRleEJpYXMpOwpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlm
dENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICB1bnNpZ25lZCBuZXdTdG9yYWdlQ2FwYWNpdHk7CiAg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RvcmFnZSBhcnJheSBpcyBzdWZmaWNpZW50bHkgbGFyZ2Ug
KGJ1dCBub3QgdG9vIGxhcmdlISkgdGhlbiBqdXN0IGtlZXAgdXNpbmcgaXQuCiAgICAgaWYgKGN1
cnJlbnRDYXBhY2l0eSA+IGRlc2lyZWRDYXBhY2l0eSAmJiBpc0RlbnNlRW5vdWdoRm9yVmVjdG9y
KGN1cnJlbnRDYXBhY2l0eSwgcmVxdWlyZWRWZWN0b3JMZW5ndGgpKSB7Ci0gICAgICAgIG5ld0Fs
bG9jQmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUoKSk7CisgICAgICAgIG5ld0FsbG9j
QmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgbmV3U3RvcmFn
ZUNhcGFjaXR5ID0gY3VycmVudENhcGFjaXR5OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNpemVf
dCBuZXdTaXplID0gQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKGRlc2lyZWRDYXBhY2l0eSkpOwpAQCAtMjk3LDcgKzI5
Nyw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICAgICAg
Ly8gQXRvbWljIGRlY2F5LCArIHRoZSBwb3N0LWNhcGFjaXR5IGNhbm5vdCBiZSBncmVhdGVyIHRo
YW4gd2hhdCBpcyBhdmFpbGFibGUuCiAgICAgICAgIHBvc3RDYXBhY2l0eSA9IG1pbigoc3RvcmFn
ZS0+dmVjdG9yTGVuZ3RoKCkgLSBsZW5ndGgpID4+IDEsIG5ld1N0b3JhZ2VDYXBhY2l0eSAtIHJl
cXVpcmVkVmVjdG9yTGVuZ3RoKTsKICAgICAgICAgLy8gSWYgd2UncmUgbW92aW5nIGNvbnRlbnRz
IHdpdGhpbiB0aGUgc2FtZSBhbGxvY2F0aW9uLCB0aGUgcG9zdC1jYXBhY2l0eSBpcyBiZWluZyBy
ZWR1Y2VkLgotICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShz
dHJ1Y3R1cmUoKSkgfHwgcG9zdENhcGFjaXR5IDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkgLSBs
ZW5ndGgpOworICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShz
dHJ1Y3R1cmUodm0pKSB8fCBwb3N0Q2FwYWNpdHkgPCBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSAt
IGxlbmd0aCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gcmVxdWly
ZWRWZWN0b3JMZW5ndGggKyBwb3N0Q2FwYWNpdHk7CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBK
U0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgICAgICBBU1NFUlQoY291bnQg
KyB1c2VkVmVjdG9yTGVuZ3RoIDw9IG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIG1lbW1vdmUo
bmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IgKyBjb3VudCwgc3RvcmFnZS0+
bV92ZWN0b3IsIHNpemVvZihKU1ZhbHVlKSAqIHVzZWRWZWN0b3JMZW5ndGgpOwogICAgICAgICBt
ZW1tb3ZlKG5ld0J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNpemUsIGJ1
dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNpemUsIHNpemVvZihKU1ZhbHVl
KSAqIHByb3BlcnR5U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikgKyBBcnJheVN0b3JhZ2U6
OnNpemVGb3IoMCkpOwotICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHkt
PmJhc2Uoc3RydWN0dXJlKCkpKSB8fCAobmV3SW5kZXhCaWFzICE9IHN0b3JhZ2UtPm1faW5kZXhC
aWFzKSkgeworICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHktPmJhc2Uo
c3RydWN0dXJlKHZtKSkpIHx8IChuZXdJbmRleEJpYXMgIT0gc3RvcmFnZS0+bV9pbmRleEJpYXMp
KSB7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHBy
b3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3BlcnR5U2l6ZSwg
c2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXplICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAr
IEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IsIHN0b3JhZ2UtPm1fdmVjdG9yLCBzaXplb2YoSlNW
YWx1ZSkgKiB1c2VkVmVjdG9yTGVuZ3RoKTsKIApAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgSlNB
cnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjpzZXRMZW5n
dGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICBp
ZiAoIW5ld0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDIwLDcgKzQyMCw3
IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAg
IGVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFy
cmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJm
bHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywKIAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgICAgIApAQCAtNTM3LDcgKzUzNyw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9w
KEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJe
MzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lk
IEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewogICAgICAgICBjcmVhdGVJbml0aWFs
VW5kZWNpZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3Ro
LCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlm
ICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIEpT
QXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVj
LCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0
YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGgg
PiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0
cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY1
MSw3ICs2NTEsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAK
ICAgICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJheSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0x
KSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiAgICAgICAg
IGlmIChzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAg
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5sZW5ndGgoKSwg
dmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4K
ICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJ
bnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKQEAgLTY3NSw3ICs2NzUsNyBAQCBib29sIEpTQXJyYXk6
OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlCiAgICAgCiAgICAgLy8gSWYgdGhlIGFycmF5IGNv
bnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5vcm1hbCBzdGF0ZSwKICAgICAv
LyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJvdG90eXBlLgotICAgIGlmIChv
bGRMZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBpblNwYXJzZUluZGV4
aW5nTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSkKKyAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwg
aW5TcGFyc2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFvbGRMZW5ndGgpCkBAIC03NDks
NyArNzQ5LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ID4gMCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCkBAIC04
NDcsNyArODQ3LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQog
CiAgICAgLy8gSWYgdGhlIGFycmF5IGNvbnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBh
biBhYm5vcm1hbCBzdGF0ZSwKICAgICAvLyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFy
cmF5UHJvdG90eXBlLgotICAgIGlmIChsZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZl
Y3RvciB8fCBzdG9yYWdlLT5pblNwYXJzZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yIHx8IHN0b3JhZ2UtPmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNs
b3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29s
IG1vdmVGcm9udCA9ICFzdGFydEluZGV4IHx8IHN0YXJ0SW5kZXggPCBsZW5ndGggLyAyOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEK
IAogYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiB7Ci0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNp
ZGVkOgogICAgICAgICAvLyBXZSBjb3VsZCBoYW5kbGUgdGhpcy4gQnV0IGl0IHNob3VsZG4ndCBl
dmVyIGNvbWUgdXAsIHNvIHdlIHdvbid0LgpAQCAtOTk0LDIwICs5OTQsMjAgQEAgc3RhdGljIGlu
dCBjb21wYXJlQnlTdHJpbmdQYWlyRm9yUVNvcnQoYwogICAgIHJldHVybiBjb2RlUG9pbnRDb21w
YXJlKHZhLT5zZWNvbmQsIHZiLT5zZWNvbmQpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUg
aW5kZXhpbmdUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgog
dm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
Y29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxE
YXRhKQogewotICAgIEFTU0VSVChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgaW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
Q29udGlndW91cyB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKKyAg
ICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgYXJyYXlJbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aENvbnRpZ3VvdXMgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKTsKICAgICAKICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7CiAg
ICAgdW5zaWduZWQgbmV3UmVsZXZhbnRMZW5ndGg7Ci0gICAgY29tcGFjdEZvclNvcnRpbmc8aW5k
ZXhpbmdUeXBlPigKKyAgICBjb21wYWN0Rm9yU29ydGluZzxhcnJheUluZGV4aW5nVHlwZT4oCiAg
ICAgICAgIGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZCwKICAgICAgICAgbmV3UmVsZXZhbnRM
ZW5ndGgpOwogICAgIAotICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRh
PGluZGV4aW5nVHlwZT4oKTsKKyAgICBDb250aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5n
RGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAgICAKLSAgICBpZiAoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0
KCkpIHsKKyAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdl
ICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgewogICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDE2LDcg
KzEwMTYsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0CiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBib29sIGFsbFZhbHVlc0FyZU51bWJlcnMgPSB0cnVlOwot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlw
ZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6
CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
TnVtZXJpY1ZlY3RvcihFeGVjU3RhdAogICAgIC8vIGFsc28gZG9uJ3QgcmVxdWlyZSBtZXJnZXNv
cnQncyBzdGFiaWxpdHksIHNpbmNlIHRoZXJlJ3Mgbm8gdXNlciB2aXNpYmxlCiAgICAgLy8gc2lk
ZS1lZmZlY3QgZnJvbSBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZXF1YWwgcHJpbWl0aXZlIHZhbHVl
cy4KICAgICBpbnQgKCpjb21wYXJlKShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOwotICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgewog
ICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgICAgIGNvbXBhcmUgPSBjb21wYXJlTnVtYmVy
c0ZvclFTb3J0V2l0aEludDMyOwogICAgICAgICBicmVhazsKQEAgLTEwNjEsNyArMTA2MSw3IEBA
IHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWMoRXhlY1N0YXRlKiBleGUKIHsKICAgICBBU1NFUlQo
IWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
cnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTExNCw3ICsxMTE0LDcg
QEAgdGVtcGxhdGUgPD4gc3RydWN0IENvbnRpZ3VvdXNUeXBlQWNjZXNzbwogfTsKIAogCi10ZW1w
bGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KK3Rl
bXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5
cGU+CiB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBD
b250aWd1b3VzRGF0YTxTdG9yYWdlVHlwZT4gZGF0YSwgdW5zaWduZWQgcmVsZXZhbnRMZW5ndGgp
CiB7CiAgICAgaWYgKCFyZWxldmFudExlbmd0aCkKQEAgLTExMzgsMTEgKzExMzgsMTEgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGJvb2wgaXNTb3J0aW5n
UHJpbWl0aXZlVmFsdWVzID0gdHJ1ZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVs
ZXZhbnRMZW5ndGg7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5
cGVBY2Nlc3NvcjxpbmRleGluZ1R5cGU+OjpnZXRBc1ZhbHVlKGRhdGEsIGkpOwotICAgICAgICBB
U1NFUlQoaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7
CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5k
ZXhpbmdUeXBlPjo6Z2V0QXNWYWx1ZShkYXRhLCBpKTsKKyAgICAgICAgQVNTRVJUKGFycmF5SW5k
ZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAg
IEFTU0VSVCghdmFsdWUuaXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHZhbHVlc1tpXS5maXJzdCA9
IHZhbHVlOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiBp
bmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIpCisgICAgICAgIGlmIChhcnJheUluZGV4aW5n
VHlwZSAhPSBBcnJheVdpdGhEb3VibGUgJiYgYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRo
SW50MzIpCiAgICAgICAgICAgICBpc1NvcnRpbmdQcmltaXRpdmVWYWx1ZXMgPSBpc1NvcnRpbmdQ
cmltaXRpdmVWYWx1ZXMgJiYgdmFsdWUuaXNQcmltaXRpdmUoKTsKICAgICB9CiAgICAgICAgIApA
QCAtMTE3Myw3ICsxMTczLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4
ZWNTdAogICAgIAogICAgIC8vIElmIHRoZSB0b1N0cmluZyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSBs
ZW5ndGggb2YgdGhlIGFycmF5IG9yIHZlY3RvciBzdG9yYWdlLAogICAgIC8vIGluY3JlYXNlIHRo
ZSBsZW5ndGggdG8gaGFuZGxlIHRoZSBvcmlnbmFsIG51bWJlciBvZiBhY3R1YWwgdmFsdWVzLgot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlw
ZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6
CiAgICAgY2FzZSBBcnJheVdpdGhDb250aWd1b3VzOgpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGNhc2UgQXJyYXlXaXRo
QXJyYXlTdG9yYWdlOgogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgp
IDwgcmVsZXZhbnRMZW5ndGgpIHsKICAgICAgICAgICAgIGluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4
ZWMtPnZtKCksIHJlbGV2YW50TGVuZ3RoKTsKLSAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNj
ZXNzb3I8aW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3Rv
cmFnZSgpLT52ZWN0b3IoKSk7CisgICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFy
cmF5SW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3RvcmFn
ZSgpLT52ZWN0b3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT5s
ZW5ndGgoKSA8IHJlbGV2YW50TGVuZ3RoKQogICAgICAgICAgICAgYXJyYXlTdG9yYWdlKCktPnNl
dExlbmd0aChyZWxldmFudExlbmd0aCk7CkBAIC0xMTk0LDcgKzExOTQsNyBAQCB2b2lkIEpTQXJy
YXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWxldmFudExlbmd0aDsgaSsrKQotICAgICAgICBDb250aWd1b3VzVHlwZUFj
Y2Vzc29yPGluZGV4aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFs
dWVzW2ldLmZpcnN0KTsKKyAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4
aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVzW2ldLmZpcnN0
KTsKICAgICAKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wb3BUZW1wU29ydFZlY3RvcigmdmFsdWVz
KTsKIH0KQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhV
bmRlY2lkZWQ6CiAgICAgICAgIHJldHVybjsKQEAgLTEzMzUsMTEgKzEzMzUsMTEgQEAgc3RydWN0
IEFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlIAogICAgIHN0YXRpYyBoYW5kbGUgbnVs
bCgpIHsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0KIH07CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2
b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVG
dW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsK
ICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwotICAgIEFTU0VSVChpbmRleGlu
Z1R5cGUgPT0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICBBU1NFUlQoYXJyYXlJ
bmRleGluZ1R5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlz
IGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNvbXBhcmUgZnVuY3Rpb24gb3IgaW4g
dG9OdW1iZXIuCiAgICAgICAgIApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgdm9pZCBKU0FycmF5Ojpz
b3J0VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIGlmIChtX2J1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgdW5zaWduZWQgdXNlZFZlY3Rv
ckxlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25lZCB1
c2VkVmVjdG9yTGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAg
ICAgdW5zaWduZWQgbm9kZUNvdW50ID0gdXNlZFZlY3Rvckxlbmd0aDsKICAgICAgICAgCiAgICAg
aWYgKCFub2RlQ291bnQpCkBAIC0xNDE2LDE0ICsxNDE2LDE0IEBAIHZvaWQgSlNBcnJheTo6c29y
dFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c1RvRXh0cmFjdFRocmVzaG9sZDsgKytpKSB7
CiAgICAgICAgIEFTU0VSVChpIDwgYnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisg
ICAgICAgIGlmIChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAg
ICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdHJlZS5hYnN0cmFjdG9yKCku
bV9ub2Rlc1sqaXRlcl0udmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY3VycmVudEluZGV4aW5nRGF0YSgpW2ldLnNldCh2bSwgdGhpcywgdHJlZS5hYnN0cmFjdG9y
KCkubV9ub2Rlc1sqaXRlcl0udmFsdWUpOwogICAgICAgICArK2l0ZXI7CiAgICAgfQogICAgIC8v
IFB1dCB1bmRlZmluZWQgdmFsdWVzIGJhY2sgaW4uCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAgQVNT
RVJUKGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkID09IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNo
b2xkKTsKQEAgLTE0MzksMTMgKzE0MzksMTMgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4
ZWNTdGF0ZSogZXhlYwogICAgIC8vIEVuc3VyZSB0aGF0IHVudXNlZCB2YWx1ZXMgaW4gdGhlIHZl
Y3RvciBhcmUgemVyb2VkIG91dC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSB1bmRlZmluZWRFbGVt
ZW50c1RocmVzaG9sZDsgaSA8IGNsZWFyRWxlbWVudHNUaHJlc2hvbGQ7ICsraSkgewogICAgICAg
ICBBU1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVy
Zmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5jbGVhcigpOwogICAgIH0KICAgICAKLSAg
ICBpZiAoaGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIGFycmF5U3RvcmFn
ZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsKIH0KIApAQCAt
MTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNp
ZGVkOgogICAgICAgICByZXR1cm47CkBAIC0xNDg1LDcgKzE0ODUsNyBAQCB2b2lkIEpTQXJyYXk6
OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgdW5zaWduZWQgdmVjdG9yRW5kOwogICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE1NDcs
NyArMTU0Nyw3IEBAIHZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSoKICAg
ICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUxlbmd0aCAr
IGZpcnN0VmFyQXJnT2Zmc2V0OwogICAgIEFTU0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkp
OwotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKQEAgLTE2MDIsNDAgKzE2MDIsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGkgLSBm
aXJzdFZhckFyZ09mZnNldCwgZ2V0KGV4ZWMsIGkpKTsKIH0KIAotdGVtcGxhdGU8SW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlw
ZT4KIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQmIG51bURlZmluZWQs
IHVuc2lnbmVkJiBuZXdSZWxldmFudExlbmd0aCkKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5k
ZXhpbmdNb2RlKCkpOwotICAgIEFTU0VSVChpbmRleGluZ1R5cGUgPT0gc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKTsKKyAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gaW5kZXhpbmdU
eXBlKCkpOwogCi0gICAgdW5zaWduZWQgbXlSZWxldmFudExlbmd0aCA9IHJlbGV2YW50TGVuZ3Ro
PGluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25lZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZh
bnRMZW5ndGg8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAgICAgCiAgICAgbnVtRGVmaW5lZCA9IDA7
CiAgICAgdW5zaWduZWQgbnVtVW5kZWZpbmVkID0gMDsKICAgICAgICAgCiAgICAgZm9yICg7IG51
bURlZmluZWQgPCBteVJlbGV2YW50TGVuZ3RoOyArK251bURlZmluZWQpIHsKICAgICAgICAgQVNT
RVJUKG51bURlZmluZWQgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CisgICAgICAgIGlmIChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0g
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWRdLmdldCgpOwogICAgICAg
ICAgICAgaWYgKCF2KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgQVNTRVJU
KHYuaXNJbnQzMigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAgIGlmIChhcnJh
eUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgIGRvdWJsZSB2
ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkXTsKICAgICAgICAg
ICAgIGlmICh2ICE9IHYpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQotICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8aW5kZXhp
bmdUeXBlPigpW251bURlZmluZWRdLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGlu
Z0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgIGlm
ICghdiB8fCB2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBteVJlbGV2YW50TGVu
Z3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CisgICAg
ICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgewogICAgICAgICAg
ICAgSlNWYWx1ZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldLmdldCgpOwog
ICAgICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY0NCw3
ICsxNjQ0LDcgQEAgdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAg
ICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWQrK10uc2V0
V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAg
IGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAg
IGRvdWJsZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKICAgICAgICAg
ICAgIGlmICh2ICE9IHYpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjUyLDIzICsx
NjUyLDIzIEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQKICAgICAg
ICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZCsrXSA9IHY7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBKU1ZhbHVlIHYgPSBp
bmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW2ldLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYg
PSBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uZ2V0KCk7CiAgICAgICAgIGlm
ICh2KSB7CiAgICAgICAgICAgICBpZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAg
ICsrbnVtVW5kZWZpbmVkOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKG51bURlZmluZWQgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZCsrXS5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUlu
ZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIAogICAgIG5ld1JlbGV2YW50
TGVuZ3RoID0gbnVtRGVmaW5lZCArIG51bVVuZGVmaW5lZDsKICAgICAKLSAgICBpZiAoaGFzQXJy
YXlTdG9yYWdlKGluZGV4aW5nVHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUlu
ZGV4aW5nVHlwZSkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhcnJheVN0b3JhZ2UoKS0+bV9z
cGFyc2VNYXApOwogICAgIAotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNo
IChhcnJheUluZGV4aW5nVHlwZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2Fz
ZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bURlZmluZWQgPT0g
bmV3UmVsZXZhbnRMZW5ndGgpOwpAQCAtMTY3NywxOSArMTY3NywxOSBAQCB2b2lkIEpTQXJyYXk6
OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgZGVmYXVsdDoKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG5ld1JlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZpbmVkKCk7Cisg
ICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZp
bmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IG5ld1JlbGV2YW50TGVuZ3RoOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAg
ICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAg
aWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
aW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtpXS5jbGVhcigpOworICAgICAgICAgICAgaW5k
ZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3Jh
Z2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1
ZXNJblZlY3RvciA9IG5ld1JlbGV2YW50TGVuZ3RoOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE2
NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppbmhlcml0cyhjb25zdCBDbGFzCiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpcyhF
eGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAogewotICAgIHJldHVybiBp
c0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT50b1RoaXMoYXNDZWxsKCksIGV4ZWMs
IGVjbWFNb2RlKSA6IHRvVGhpc1Nsb3dDYXNlKGV4ZWMsIGVjbWFNb2RlKTsKKyAgICByZXR1cm4g
aXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnRvVGhpcyhhc0Nl
bGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZXhlYywgZWNtYU1vZGUpOwog
fQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNzAwLDcgKzcwMCw3IEBAIGlubGluZSB2b2lk
IEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBp
bmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpAQCAtNzA5LDcg
KzcwOSw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICAg
ICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOworICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJ
bmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0
CkBAIC03MzAsNiArNzMwLDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6ZXF1YWwoRXhlY1N0YXRl
KiBleAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBkbyB7CiAgICAgICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlz
TnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJl
cigpOwpAQCAtNzQ0LDEzICs3NDUsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVx
dWFsU2xvd0NhcwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYg
KCF2Mi5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICByZXR1cm4gdjIuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gdjIuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXYxLmlzQ2VsbCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0
dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHYxLmlzT2JqZWN0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQ2VsbCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwganNjZWxsX2lzX2VpZ2h0X2J5dGVzKTsKIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU0NlbGwpOwogCiB2b2lkIEpTQ2VsbDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgSlNDZWxsOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVl
LCBzbG90KTsKIH0KIAogdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCkBAIC0xMDEsMTkgKzEwMiwxOSBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVu
dGlmaWVyKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKIH0KIAogYm9vbCBKU0Nl
bGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaWRlbnRpZmllcikKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwt
PnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudGlmaWVyKTsKIH0KIAogSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAK
ICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNs
dWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAj
aW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKQEAg
LTkyLDkgKzk0LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5m
byopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKIAorICAgIEpT
VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSgpIGNvbnN0
OwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoVk0mKSBjb25zdDsKICAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSop
OwotICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlLmNsZWFyKCk7IH0KKyAg
ICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlEID0gMDsgfQogCiAgICAgY29u
c3QgY2hhciogY2xhc3NOYW1lKCk7CiAKQEAgLTEyMSw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRl
ZC4KICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwogICAgIGNvbnN0IE1l
dGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OworICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBt
ZXRob2RUYWJsZShWTSYpIGNvbnN0OwogICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJs
ZUZvckRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMTM1LDIwICsxNDEsMzQg
QEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBjb25zdCBT
dHJpbmcmKTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICB2
b2lkIG1hcmsoKSB7IG1fZ2NEYXRhID0gMTsgfQorICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdCB7
IHJldHVybiBtX2djRGF0YTsgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9m
ZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9z
dHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1
Y3R1cmVJRCk7CiAgICAgfQogCi0gICAgdm9pZCogc3RydWN0dXJlQWRkcmVzcygpCisgICAgc3Rh
dGljIHB0cmRpZmZfdCB0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmbV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X2ZsYWdzKTsKICAgICB9Ci0gICAgICAgIAotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAg
IFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZS51bnZhbGlkYXRlZEdldCgpOyB9Ci0jZW5kaWYKLSAgICAgICAgCisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IHR5cGVJbmZvVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTQ2VsbCwgbV90eXBlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IGluZGV4aW5nVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTQ2VsbCwgbV9pbmRleGluZ1R5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJk
aWZmX3QgZ2NEYXRhT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX2djRGF0YSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJy
YXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CiBwcm90ZWN0ZWQ6
CiAKQEAgLTE3MCw4ICsxOTAsMTIgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAotICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJ
RDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsK
KyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxhZ3M7CisgICAgdWludDhfdCBtX2dj
RGF0YTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNp
b24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgOiBtX2dj
RGF0YSgwKQogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKIH0KIAotaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBt
X3N0cnVjdHVyZSh2bSwgdGhpcywgc3RydWN0dXJlKQoraW5saW5lIEpTQ2VsbDo6SlNDZWxsKFZN
JiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBtX3N0cnVjdHVyZUlEKHN0cnVjdHVyZS0+
aWQoKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpCisg
ICAgLCBtX3R5cGUoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSkKKyAgICAsIG1fZmxhZ3Mo
c3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKQorICAgICwgbV9nY0RhdGEo
MCkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkBAIC01Niw3ICs2
MSw3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgQVNTRVJUKG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxs
VGFnKQpAQCAtNjQsMjMgKzY5LDQ3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHYKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICBBU1NFUlQodm0uaXNJbml0
aWFsaXppbmdPYmplY3QoKSk7CiAgICAgdm0uc2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCk7
Ci0gICAgaWYgKHN0cnVjdHVyZSkKKyAgICBpZiAoc3RydWN0dXJlKSB7CisjZW5kaWYKKyAgICAg
ICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbV9pbmRleGluZ1R5
cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgICAgICBtX3R5cGUgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgICAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgICAgICBtX3N0cnVj
dHVyZS5zZXRFYXJseVZhbHVlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIC8vIFZlcnkgZmly
c3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KG1fc3RydWN0dXJlSUQgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Cit9CisKK2lubGluZSBK
U1R5cGUgSlNDZWxsOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitp
bmxpbmUgSW5kZXhpbmdUeXBlIEpTQ2VsbDo6aW5kZXhpbmdUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gKCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4odGhpcykgJiAweDAwMDAw
MGZmMDAwMDAwMDApID4+IDMyOwogfQogCiBpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVj
dHVyZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLmdldCgpOworICAgIHJldHVy
biBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fc3RydWN0dXJlSUQp
OworfQorCitpbmxpbmUgU3RydWN0dXJlKiBKU0NlbGw6OnN0cnVjdHVyZShWTSYgdm0pIGNvbnN0
Cit7CisgICAgcmV0dXJuIHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChtX3N0cnVjdHVy
ZUlEKTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgTUFSS19MT0dfUEFSRU5UKHZpc2l0b3Is
IGNlbGwpOwogCi0gICAgdmlzaXRvci5hcHBlbmQoJmNlbGwtPm1fc3RydWN0dXJlKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOworICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWRQb2ludGVyKCZzdHJ1Y3R1cmUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgpAQCAtMTE2LDM3ICsxNDUsNDEgQEAgaW5saW5lIGJvb2wgaXNaYXBwZWQoY29uc3QgSlND
ZWxsKiBjZWxsKQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzT2JqZWN0KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzT2JqZWN0KCk7CisgICAgcmV0dXJuIFR5cGVJbmZvOjpp
c09iamVjdChtX3R5cGUpOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzU3RyaW5nKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmlu
Z1R5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBTdHJpbmdUeXBlOwogfQogCiBpbmxpbmUgYm9v
bCBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEdldHRlclNldHRlclR5cGU7CisgICAgcmV0dXJuIG1f
dHlwZSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6OmlzUHJv
eHkoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gUHJveHlUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gUHJveHlUeXBlOwogfQogCiBpbmxp
bmUgYm9vbCBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEFQSVZhbHVlV3JhcHBlclR5cGU7Cisg
ICAgcmV0dXJuIG1fdHlwZSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOwogfQogCiBpbmxpbmUgdm9p
ZCBKU0NlbGw6OnNldFN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewog
ICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigp
ID09IHRoaXMtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4o
KSk7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkgPT0gbV9zdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpKTsKLSAgICBBU1NFUlQoIW1fc3RydWN0dXJlCi0gICAgICAgIHx8IG1fc3RydWN0
dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpCi0gICAgICAg
IHx8IG1fc3RydWN0dXJlLmdldCgpID09IHN0cnVjdHVyZSk7Ci0gICAgbV9zdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygp
ID09IHRoaXMtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSk7CisgICAgQVNTRVJUKCF0aGlzLT5z
dHJ1Y3R1cmUoKQorICAgICAgICB8fCB0aGlzLT5zdHJ1Y3R1cmUoKS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQorICAgICAgICB8fCBIZWFwOjpoZWFwKHRoaXMp
LT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZS0+aWQoKSkgPT0gc3RydWN0dXJlKTsK
KyAgICB2bS5oZWFwLndyaXRlQmFycmllcih0aGlzLCBzdHJ1Y3R1cmUpOworICAgIG1fc3RydWN0
dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CisgICAgbV9mbGFncyA9IHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKTsKKyAgICBtX3R5cGUgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkudHlwZSgpOworICAgIG1faW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KTsKIH0KIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlRm9y
RGVzdHJ1Y3Rpb24oKSBjb25zdApAQCAtMTU2LDEwICsxODksMjAgQEAgaW5saW5lIGNvbnN0IE1l
dGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZAogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpT
Q2VsbDo6bWV0aG9kVGFibGUoKSBjb25zdAogewotICAgIGlmIChTdHJ1Y3R1cmUqIHJvb3RTdHJ1
Y3R1cmUgPSBtX3N0cnVjdHVyZS0+c3RydWN0dXJlKCkpCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJl
ID0gc3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocm9vdFN0
cnVjdHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CiAKLSAgICByZXR1cm4gJmNs
YXNzSW5mbygpLT5tZXRob2RUYWJsZTsKKyAgICByZXR1cm4gJnN0cnVjdHVyZS0+Y2xhc3NJbmZv
KCktPm1ldGhvZFRhYmxlOworfQorCitpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6
bWV0aG9kVGFibGUoVk0mIHZtKSBjb25zdAoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0g
c3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSkKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQocm9vdFN0cnVj
dHVyZSA9PSByb290U3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSk7CisKKyAgICByZXR1cm4gJnN0cnVj
dHVyZS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOwogfQogCiBpbmxpbmUgYm9vbCBKU0NlbGw6
OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyogaW5mbykgY29uc3QKQEAgLTE5Nyw2ICsyNDAsMjIg
QEAgaW5saW5lIFRyaVN0YXRlIEpTQ2VsbDo6cHVyZVRvQm9vbGVhbigpIAogICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOwogfQogCitpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3Qg
SlNDZWxsKiBmcm9tLCBKU0NlbGwqIHRvKQoreworI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BS
T0ZJTElORykKKyAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6Y291bnRXcml0ZUJhcnJpZXIoKTsK
KyNlbmRpZgorICAgIGlmICghZnJvbSB8fCAhZnJvbS0+aXNNYXJrZWQoKSkgeworICAgICAgICBB
U1NFUlQoIWZyb20gfHwgIWlzTWFya2VkKGZyb20pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoIXRvIHx8IHRvLT5pc01hcmtlZCgpKSB7CisgICAgICAgIEFTU0VSVCghdG8gfHwg
aXNNYXJrZWQodG8pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhZGRUb1JlbWVtYmVy
ZWRTZXQoZnJvbSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gSlNDZWxs
SW5saW5lc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFW
aWV3LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNEYXRhVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNyBAQCBTdHJ1
Y3R1cmUqIEpTRGF0YVZpZXc6OmNyZWF0ZVN0cnVjdHVyZSgKICAgICBWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSgKLSAgICAgICAgdm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwKKyAgICAgICAgdm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhEYXRhVmlld1R5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLAogICAgICAgICBOb25BcnJheSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaAko
cmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0
cnVjdGlibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDcgQEAgaW5saW5l
IGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFzc0luZgogewogICAgIGlmIChNYXJrZWRCbG9j
azo6YmxvY2tGb3IodGhpcyktPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1h
bCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
Kj4odGhpcyktPmNsYXNzSW5mbygpOwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAgIHJl
dHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNlbmRpZgorICAgIHJldHVybiBz
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9u
IDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TgogICAgIGlmICghdGhpc09iamVjdC0+aXNIb3N0T3JCdWlsdGlu
RnVuY3Rpb24oKSAmJiAobW9kZSA9PSBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKSkgewogICAg
ICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQuCiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgc2xvdCk7CiAKICAgICAgICAgcHJvcGVydHlO
YW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyk7CiAgICAgICAgIHByb3Bl
cnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZXIpOwpAQCAtNDE0LDcgKzQx
NCw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1MKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2Fu
IG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQg
b3V0IGluIEVDTUEtMjYyIDguMTIuOS4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1f
YWxsb2NhdGlvblByb2ZpbGUuY2xlYXIoKTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQuZmlyZUFsbCgpOwogICAgICAgICAvLyBEb24ndCBhbGxvdyB0
aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBbW1B1dF1dIG11c3QgY2xlYXIgbV9hbGxvY2F0aW9u
UHJvZmlsZS4KQEAgLTQ2MSw3ICs0NjEsNyBAQCBib29sIEpTRnVuY3Rpb246OmRlZmluZU93blBy
b3BlcnR5KEpTT2JqCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVp
ZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZv
bGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7CiAgICAgICAg
IHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LmZpcmVBbGwoKTsKICAg
ICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgJ
KHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgTm9u
QXJyYXkpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyh0eXBlRm9yVHlwZWRBcnJheVR5cGUoQWRhcHRvcjo6dHlw
ZVZhbHVlKSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5KTsKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87IC8vIFRoaXMgaXMgbmV2ZXIgYWNj
ZXNzZWQgZGlyZWN0bHksIHNpbmNlIHRoYXQgd291bGQgYnJlYWsgbGlua2FnZSBvbiBzb21lIGNv
bXBpbGVycy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5j
cHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDkgQEAgc3RhdGljIHVuc2ln
bmVkIGxhc3RBcnJheVNpemUgPSAwOwogCiBKU0NlbGwqIGdldENhbGxhYmxlT2JqZWN0U2xvdyhK
U0NlbGwqIGNlbGwpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1
cmUoKTsKLSAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBKU0Z1bmN0aW9u
VHlwZSkKKyAgICBpZiAoY2VsbC0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQogICAgICAgICBy
ZXR1cm4gY2VsbDsKLSAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCisgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT5j
bGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEludGVybmFsRnVuY3Rpb246OmluZm8oKSkpCiAgICAg
ICAgIHJldHVybiBjZWxsOwogICAgIHJldHVybiAwOwogfQpAQCAtMTI5LDcgKzEyOCw3IEBAIEFM
V0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6Y29weUJ1dHRlcmYKICAgICAgICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogY3VycmVudFNvdXJjZTsKICAgICAgICAgICAgIHNpemVfdCBjb3Vu
dDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMtPmluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAg
ICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2FzZSBB
TExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC0xOTAsNyArMTg5LDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTT2JqZWN0Ojp2aXNpdEJ1dHRlcgogICAgICAgICBidXR0ZXJmbHktPmJhc2UocHJl
Q2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpLCBjYXBhY2l0eUluQnl0ZXMpOwogICAgIAogICAg
IC8vIE1hcmsgdGhlIGFycmF5IGlmIGFwcHJvcHJpYXRlLgotICAgIHN3aXRjaCAoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpcy0+aW5kZXhpbmdUeXBlKCkpIHsK
ICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgogICAgICAgICB2aXNpdG9y
LmFwcGVuZFZhbHVlcyhidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKS5kYXRhKCksIGJ1dHRlcmZseS0+
cHVibGljTGVuZ3RoKCkpOwogICAgICAgICBicmVhazsKQEAgLTI0OCwxMSArMjQ3LDEyIEBAIHZv
aWQgSlNGaW5hbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwKICAgICAKICAgICBKU0NlbGw6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpOwogICAgIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gdGhpc09iamVjdC0+YnV0dGVyZmx5KCk7CiAgICAgaWYgKGJ1dHRlcmZseSkKLSAgICAg
ICAgdGhpc09iamVjdC0+dmlzaXRCdXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpKTsKKyAgICAgICAgdGhpc09iamVjdC0+
dmlzaXRCdXR0ZXJmbHkodmlzaXRvciwgYnV0dGVyZmx5LCBzdHJ1Y3R1cmUtPm91dE9mTGluZVNp
emUoKSk7CiAKLSAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+aW5saW5lU2l6ZSgpOworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSA9IHN0cnVjdHVyZS0+aW5s
aW5lU2l6ZSgpOwogICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmlubGluZVN0
b3JhZ2UoKSwgc3RvcmFnZVNpemUpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMjc0LDkg
KzI3NCw5IEBAIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgKICAgICAv
LyBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KCkuCiAgICAgCiAgICAgaWYgKGkgPiBNQVhfQVJS
QVlfSU5ERVgpCi0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBp
KSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZy
b20oZXhlYywgaSksIHNsb3QpOwogICAgIAotICAgIHN3aXRjaCAodGhpc09iamVjdC0+c3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0aGlzT2JqZWN0LT5pbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2Ug
QUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0zNTgsMTAg
KzM1OCwxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXR0ZXJzIG9yIGdldHRlcnMgaW4gdGhlIHByb3Rv
dHlwZSBjaGFpbgogICAgIEpTVmFsdWUgcHJvdG90eXBlOwogICAgIGlmIChwcm9wZXJ0eU5hbWUg
IT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewotICAgICAgICBmb3Ig
KEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyAhb2JqLT5zdHJ1Y3R1cmUoKS0+aGFzUmVhZE9u
bHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmogPSBhc09iamVj
dChwcm90b3R5cGUpKSB7CisgICAgICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7
ICFvYmotPnN0cnVjdHVyZSh2bSktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
RXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICAg
ICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAgICAgICAgICAgIGlmIChwcm90b3R5
cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJv
cGVydHlOYW1lKSk7CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAmJiBzbG90LmlzU3Ry
aWN0TW9kZSgpKQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CkBAIC0zNzQs
MTAgKzM3NCwxMCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAg
ICAgZm9yIChvYmogPSB0aGlzT2JqZWN0OyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsK
ICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSgpLT5n
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAg
IFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKHZtKS0+Z2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBpZiAoaXNWYWxp
ZE9mZnNldChvZmZzZXQpKSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5
KSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm90
b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8
fCBvYmogPT0gdGhpc09iamVjdCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52
bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsKICAgICAgICAgICAgICAg
ICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCog
Y2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIEFTU0VS
VCghdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0U3Rv
cmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsKKyAg
ICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWluTWF5SW50
ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2Jq
ZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+
KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1
ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAg
ICByZXR1cm47CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoICh0
aGlzT2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC01NTMsNyArNTUzLDcgQEAgQXJy
YXlTdG9yYWdlKiBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SQogICAgIH0KIAogICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3Jh
Z2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSh2bSwgdGhpcywgc3RydWN0dXJlKCksIDAsIEFy
cmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CisgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBz
dG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSh2bSks
IDAsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0
dGVyZmx5KTsKICAgICBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX2luZGV4QmlhcyA9
IDA7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+c2V0VmVjdG9yTGVuZ3RoKDAp
OwpAQCAtNTY1LDcgKzU2NSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVudGVyRGljdGlv
bmFyeUkKIAogdm9pZCBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJiB2
bSkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExf
SU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBKU09iamVjdDo6
bm90aWZ5UHJlc2VuY2VPZkluZGV4ZWRBYwogICAgIGlmIChtYXlJbnRlcmNlcHRJbmRleGVkQWNj
ZXNzZXMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBZGRJbmRleGVk
QWNjZXNzb3JzKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWRkSW5kZXhlZEFjY2Vzc29ycykpOwogICAg
IAogICAgIGlmICghdm0ucHJvdG90eXBlTWFwLmlzUHJvdG90eXBlKHRoaXMpKQogICAgICAgICBy
ZXR1cm47CkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBKU09iamVjdDo6bm90aWZ5UHJlc2VuY2VP
ZkluZGV4ZWRBYwogQnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9y
YWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCBzaXplX3QgZWxlbWVudFNpemUpCiB7CiAgICAg
QVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5
cGUgPSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7CisgICAgSW5kZXhpbmdUeXBlIG9sZFR5
cGUgPSBpbmRleGluZ1R5cGUoKTsKICAgICBBU1NFUlRfVU5VU0VEKG9sZFR5cGUsICFoYXNJbmRl
eGVkUHJvcGVydGllcyhvbGRUeXBlKSk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNT
bG93UHV0SW5kZXhpbmcoKSk7CiAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkp
OwpAQCAtNjE3LDcgKzYxNyw3IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxV
bmRlY2kKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQnV0dGVyZmx5KiBu
ZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlVW5k
ZWNpZGVkKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0ZVVuZGVjaWRlZCk7CiAg
ICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZs
eSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseTsKIH0KQEAgLTYyNiw3ICs2MjYsNyBAQCBDb250
aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpCiB7CiAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlh
bEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUludDMyKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
dm0pLCBBbGxvY2F0ZUludDMyKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5l
d1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250
aWd1b3VzSW50MzIoKTsKIH0KQEAgLTYzNyw3ICs2MzcsNyBAQCBDb250aWd1b3VzRG91YmxlcyBK
U09iamVjdDo6Y3JlYXRlSW5pdGlhCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVh
dGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9mKGRvdWJsZSkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IG5ld0J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspCiAg
ICAgICAgIG5ld0J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKLSAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpOworICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2
bSksIEFsbG9jYXRlRG91YmxlKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5l
d1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250
aWd1b3VzRG91YmxlKCk7CiB9CkBAIC02NDYsNyArNjQ2LDcgQEAgQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0OjpjcmVhdGVJbml0aQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsK
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFn
ZSh2bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUoKSwgQWxsb2NhdGVDb250aWd1b3VzKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxv
Y2F0ZUNvbnRpZ3VvdXMpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3Ry
dWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3Vv
dXMoKTsKIH0KQEAgLTY1NCwxMCArNjU0LDExIEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVj
dDo6Y3JlYXRlSW5pdGkKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFn
ZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQogewogICAg
IERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRo
aXMtPnN0cnVjdHVyZSgpOworICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBl
KCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3BlcnRpZXMob2xk
VHlwZSkpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVP
ckdyb3dBcnJheVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwgdm0sIHRoaXMsIHN0
cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCisg
ICAgICAgIG1fYnV0dGVyZmx5LmdldCgpLCB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1cmUt
Pm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAogICAgICAgICBBcnJheVN0b3JhZ2U6OnNp
emVGb3IodmVjdG9yTGVuZ3RoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0dGVyZmx5KTsK
IApAQCAtNjY3LDcgKzY2OCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUFycmF5
U3RvcmEKICAgICByZXN1bHQtPm1fc3BhcnNlTWFwLmNsZWFyKCk7CiAgICAgcmVzdWx0LT5tX251
bVZhbHVlc0luVmVjdG9yID0gMDsKICAgICByZXN1bHQtPm1faW5kZXhCaWFzID0gMDsKLSAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5z
aXRpb24oKSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblBy
b3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPnN1Z2dlc3RlZEFycmF5
U3RvcmFnZVRyYW5zaXRpb24oKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBu
ZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY3
OSwzNCArNjgwLDM1IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxBcnIK
IAogQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMihW
TSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVJbnQzMikpOworICAgIEFTU0VSVChoYXNV
bmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVy
ZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0ZUludDMy
KSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsKIH0KIAogQ29u
dGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJsZShWTSYgdm0p
CiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQogICAg
ICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAKLSAg
ICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVj
dHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0ZURv
dWJsZSkpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpOwogfQog
CiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0NvbnRpZ3Vv
dXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSk7Ci0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOworICAgIEFT
U0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0s
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxv
Y2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsK
IH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9y
YWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyhWTSYgdm0sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkK
IHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAg
dW5zaWduZWQgcHVibGljTGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgpOwotICAg
IHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
U2l6ZSgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlLT5v
dXRPZkxpbmVTaXplKCk7CiAgICAgCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBCdXR0
ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoCiAgICAgICAgIHZtLCB0aGlzLCAwLCBwcm9wZXJ0
eUNhcGFjaXR5LCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmVlZGVkTGVuZ3RoKSk7CkBA
IC03MjksMTIgKzczMSwxMiBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb25zdHJ1Y3RDb252
ZXJ0CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3Jh
Z2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVl
ZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQo
aGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVCho
YXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJheVN0b3JhZ2UqIHN0
b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1l
bnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAgIC8vIE5vIG5lZWQgdG8gY29weSBlbGVtZW50cy4K
ICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIHN0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1cm4gc3RvcmFn
ZTsKIH0KQEAgLTc0NiwxMiArNzQ4LDEyIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRVbmRlY2lkZWQKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRv
QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydFVuZGVjaWRlZFRvQXJy
YXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bigpKTsKKyAgICByZXR1cm4gY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1
Y3R1cmUodm0pLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogfQogCiBDb250
aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Eb3VibGUoVk0mIHZtKQogewot
ICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBB
U1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFVua25vd24+KiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIo
KVtpXTsKQEAgLTc2NSwyMSArNzY3LDIxIEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0Ojpj
b252ZXJ0SW50MzIKICAgICAgICAgKmN1cnJlbnRBc0RvdWJsZSA9IHYuYXNJbnQzMigpOwogICAg
IH0KICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpKTsKKyAgICBzZXRTdHJ1Y3R1
cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
LCBBbGxvY2F0ZURvdWJsZSkpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpOwogfQogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRv
Q29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5cGUoKSkpOwog
ICAgIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBzZXRTdHJ1Y3R1
cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0p
LCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3Vv
dXMoKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0
b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQg
bmVlZGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAK
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQXJyYXlTdG9yYWdlKiBuZXdTdG9y
YWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50
cyh2bSwgbmVlZGVkTGVuZ3RoKTsKQEAgLTc5MSw3ICs3OTMsNyBAQCBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiAgICAgICAgIG5ld1N0b3JhZ2UtPm1fbnVtVmFsdWVz
SW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHRyYW5zaXRp
b24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRpb24pOwogICAgIHNldFN0cnVj
dHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHko
KSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC04MDMsMTMgKzgwNSwxMyBAQCBBcnJh
eVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiAKIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4g
Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJh
eVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJldHVybiBjb252ZXJ0SW50MzJUb0FycmF5U3Rv
cmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigp
KTsKIH0KIAogdGVtcGxhdGU8SlNPYmplY3Q6OkRvdWJsZVRvQ29udGlndW91c01vZGUgbW9kZT4K
IENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0NvbnRp
Z3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkpOwogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0t
OykgewogICAgICAgICBkb3VibGUqIGN1cnJlbnQgPSAmbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNE
b3VibGUoKVtpXTsKQEAgLTgzMiw3ICs4MzQsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmpl
Y3Q6OmdlbmVyaWNDb252CiAgICAgICAgIGN1cnJlbnRBc1ZhbHVlLT5zZXRXaXRob3V0V3JpdGVC
YXJyaWVyKHYpOwogICAgIH0KICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6
bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVDb250aWd1b3Vz
KSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CiAgICAgcmV0dXJuIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKQEAgLTg0OSw3ICs4NTEsNyBAQCBDb250aWd1
b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OnJhZ2VDb252ZXJ0CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRp
b24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVm
ZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAK
ICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0
b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tOykgewpAQCAtODYw
LDcgKzg2Miw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0EKICAg
ICAgICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcisrOwogICAgIH0KICAgICAKLSAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZt
KSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1
Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1cm4gbmV3U3RvcmFnZTsK
IH0KQEAgLTg3MiwxMyArODc0LDEzIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRE
b3VibGVUb0EKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlT
dG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdl
KHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKKyAg
ICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUodm0pLT5z
dWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogfQogCiBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoaW5kZXhp
bmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1
Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRM
ZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsgaS0tOykgewpAQCAtODg5LDcgKzg5MSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNv
bnZlcnRDb250aWd1b3UKICAgICAgICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3Rvcisr
OwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0
dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICBy
ZXR1cm4gbmV3U3RvcmFnZTsKIH0KQEAgLTkwMSw3ICs5MDMsNyBAQCBBcnJheVN0b3JhZ2UqIEpT
T2JqZWN0Ojpjb252ZXJ0Q29udGlndW91CiAKIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZl
cnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHJldHVybiBjb252ZXJ0
Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlT
dG9yYWdlVHJhbnNpdGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydENvbnRpZ3VvdXNUb0FycmF5
U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bigpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTk3NSw5ICs5NzcsOSBAQCBDb250aWd1b3VzSlNWYWx1ZXMg
SlNPYmplY3Q6OmVuc3VyZUludDMyCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwog
ICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dp
dGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVT
OgotICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IHN0cnVj
dHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKGlu
ZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRl
eGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMoKTsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxJbnQzMih2bSwgMCk7CiAgICAgICAgIApAQCAtOTk5LDkg
KzEwMDEsOSBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlRG91YmxlCiB7CiAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
IGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBpZiAoVU5MSUtFTFkoaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGlu
ZygpKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBz
dHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAgICAgICAgICAgIHJldHVy
biBDb250aWd1b3VzRG91YmxlcygpOwogICAgICAgICByZXR1cm4gY3JlYXRlSW5pdGlhbERvdWJs
ZSh2bSwgMCk7CiAgICAgICAgIApAQCAtMTAyNSw5ICsxMDI3LDkgQEAgQ29udGlndW91c0pTVmFs
dWVzIEpTT2JqZWN0OjplbnN1cmVDb250aQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkp
KTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19U
WVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBz
dHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VM
WShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0
SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsQ29udGlndW91cyh2bSwgMCk7CiAgICAgICAgIApA
QCAtMTA2NSw3ICsxMDY3LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlT
dG9yYQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2gg
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgaWYgKFVO
TElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkpCiAgICAgICAgICAgICByZXR1cm4gZW5z
dXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsK
QEAgLTEwNzMsMjIgKzEwNzUsMjIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJy
YXlTdG9yYQogICAgICAgICAKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAgIEFTU0VS
VCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBjYXNl
IEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3Vs
ZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJ
bmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJ
bmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKHZt
KTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghc3Ry
dWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIXN0cnVj
dHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1cm4gY29udmVy
dERvdWJsZVRvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfQ09OVElH
VU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1Nob3VsZEJlU3Bh
cnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGlu
ZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGlu
ZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0p
OwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTA5OSw3ICsxMTAxLDcgQEAgQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0
OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUo
Vk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7Cisg
ICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5H
X1RZUEVTOiB7CiAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCk7CiAgICAgICAg
IFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhNYXAodm0pOwpA
QCAtMTEzMCw3ICsxMTMyLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlT
dG9yYQogCiB2b2lkIEpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UoVk0mIHZt
KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dp
dGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19U
WVBFUzoKICAgICAgICAgY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBBbGxvY2F0
ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOwogICAgICAgICBicmVhazsKQEAgLTExNDksNyArMTE1MSw3
IEBAIHZvaWQgSlNPYmplY3Q6OnN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmEKICAgICAgICAgCiAg
ICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJheVdpdGhBcnJh
eVN0b3JhZ2U6IHsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIFN3aXRjaFRvU2xvd1B1dEFy
cmF5U3RvcmFnZSk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJl
Ojpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIFN3aXRjaFRvU2xvd1B1
dEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTE2Niw3ICsxMTY4LDcgQEAgdm9pZCBKU09iamVj
dDo6c2V0UHJvdG90eXBlKFZNJiB2bSwgSlNWYQogICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3Qo
KSkKICAgICAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZShhc09iamVjdChwcm90b3R5
cGUpKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3RvdHlwZSk7CisgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHByb3RvdHlwZSk7CiAgICAgc2V0U3RydWN0dXJlKHZt
LCBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIGlmICghbmV3U3RydWN0dXJlLT5hbnlPYmplY3RJ
bkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCkBAIC0xMTc3LDEwICsxMTc5LDEw
IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEpTVmEKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRl
eGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc2hvdWxkVXNlU2xv
d1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChzaG91bGRVc2VTbG93
UHV0KGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIHN3aXRjaFRv
U2xvd1B1dEFycmF5U3RvcmFnZSh2bSk7CkBAIC0xMTg4LDcgKzExOTAsNyBAQCB2b2lkIEpTT2Jq
ZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAKIGJvb2wgSlNPYmplY3Q6OnNldFByb3Rv
dHlwZVdpdGhDeWNsZUNoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCiB7
Ci0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RN
b2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnRvVGhp
cyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKICAgICBKU1ZhbHVlIG5leHRQ
cm90b3R5cGUgPSBwcm90b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFBy
b3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMp
CkBAIC0xMjI3LDEyICsxMjI5LDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdE5vbkluZGV4
QWNjZXNzb3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVl
ZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0
aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0
UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1
Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6
OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcykpOwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1
Y3R1cmUodm0pOwogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgIHN0cnVj
dHVyZSgpLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICBzdHJ1Y3R1
cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdHJ1Y3R1cmUoKS0+
c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlO
YW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAgICBzdHJ1Y3R1cmUtPnNldEhhc0dldHRlclNldHRl
clByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQ
cm90byk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTEyNTQsMjQgKzEyNTcsMjUgQEAg
Ym9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogICAgIAogICAgIHVuc2ln
bmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwogICAgIGlmIChpICE9IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpKTsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5
SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAoIXRoaXNPYmplY3QtPnN0YXRp
Y0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlTdGF0aWNGdW5j
dGlvbnNGb3JEZWxldGUoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpT
Q2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSkpKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSAmJiAh
ZXhlYy0+dm0oKS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPmdl
dCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpIHsKKyAgICAg
ICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRlICYmICF2bS5pc0luRGVmaW5lT3duUHJvcGVy
dHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpc09iamVjdC0+cmVt
b3ZlRGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHRoaXNPYmplY3Qt
PnJlbW92ZURpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgLy8gTG9vayBpbiB0aGUgc3RhdGljIGhhc2h0YWJsZSBvZiBwcm9wZXJ0aWVz
CiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRoaXNPYmplY3QtPmZpbmRQcm9wZXJ0eUhh
c2hFbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewotICAgICAgICBp
ZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZtKCkuaXNJbkRl
ZmluZU93blByb3BlcnR5KCkpCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcygpICYgRG9u
dERlbGV0ZSAmJiAhdm0uaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIHRoaXMgYnVpbHRpbiBwcm9wZXJ0eSBjYW4ndCBiZSBkZWxldGVkCiAKICAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CkBAIC0xMjg0LDcgKzEyODgs
NyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlCiBib29sIEpTT2Jq
ZWN0OjpoYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlTbG90KGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKSwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0
aGlzKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBpKQpAQCAtMTI5Miw5ICsxMjk2LDkgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHlC
eUluZGV4KEpTQwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4o
Y2VsbCk7CiAgICAgCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCi0gICAgICAgIHJldHVy
biB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNP
YmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09i
amVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBF
UzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTM2Nyw3ICsxMzcxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBjYWxsRGVmYXVsdAogCiBib29sIEpTT2JqZWN0OjpnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0
YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25zdAogewotICAg
IHJlc3VsdCA9IG1ldGhvZFRhYmxlKCktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVjLCBQcmVmZXJO
dW1iZXIpOworICAgIHJlc3VsdCA9IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZhdWx0VmFs
dWUodGhpcywgZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBudW1iZXIgPSByZXN1bHQudG9OdW1i
ZXIoZXhlYyk7CiAgICAgcmV0dXJuICFyZXN1bHQuaXNTdHJpbmcoKTsKIH0KQEAgLTE0MTAsMTIg
KzE0MTQsMTMgQEAgY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SAogCiBi
b29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSh2bSktPnR5
cGVJbmZvKCk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSgpKQog
ICAgICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBnZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOwogICAgIGlmIChpbmZvLmltcGxlbWVu
dHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Y3VzdG9tSGFz
SW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiAs
IHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFzSW5zdGFu
Y2UodGhpcywgZXhlYywgdmFsdWUpOworICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIgLCB0aGlzKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNDM5LDggKzE0NDQsOSBAQCBib29sIEpTT2JqZWN0Ojpk
ZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0CiAKIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3Bl
Y2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
Q2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVy
ZSgpLT5nZXQoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKSkpCisgICAgaWYgKGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKHZtKS0+Z2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRoZSBzdGF0aWMg
dGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC0xNDUzLDE4ICsxNDU5LDE5IEBAIGJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSgKIHZvaWQgSlNPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAgcHJvcGVy
dHlOYW1lcy5zZXRCYXNlT2JqZWN0KG9iamVjdCk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7
CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAgICAgaWYgKG9iamVjdC0+
cHJvdG90eXBlKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG9iamVjdC0+cHJv
dG90eXBlKCkpOwogICAgIHdoaWxlKDEpIHsKLSAgICAgICAgaWYgKHByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7Ci0gICAgICAg
ICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMocHJvdG90eXBl
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICAgICAgaWYgKHByb3RvdHlwZS0+c3Ry
dWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzKCkpIHsKKyAg
ICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0eU5hbWVzKHBy
b3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICAgICAg
cHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMocHJvdG90eXBl
LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgSlNWYWx1ZSBuZXh0UHJvdG8g
PSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4dFByb3RvLmlzTnVsbCgp
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDc4LDcgKzE0ODUsNyBAQCB2b2lkIEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqCiAgICAgLy8gRklYTUU6IEZpbGxpbmcgUHJvcGVy
dHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRlZ2VyCiAgICAgLy8g
aXMgaW5jcmVkaWJseSBpbmVmZmljaWVudCBmb3IgbGFyZ2UgYXJyYXlzLiBXZSBuZWVkIGEgZGlm
ZmVyZW50IGFwcHJvYWNoLAogICAgIC8vIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgYSBk
aWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9wZXJ0eU5hbWVBcnJheS4KLSAgICBzd2l0Y2ggKG9i
amVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChvYmplY3Qt
PmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBicmVhazsKQEAg
LTE1MzcsMTUgKzE1NDQsMTYgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhK
U09iagogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAK
LSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAgICAg
Z2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCksIHByb3BlcnR5
TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKTsKIAorICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBjYW5DYWNoZVByb3BlcnRpZXNGcm9tU3RydWN0
dXJlID0gIXByb3BlcnR5TmFtZXMuc2l6ZSgpOwotICAgIG9iamVjdC0+c3RydWN0dXJlKCktPmdl
dFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZXMsIG1v
ZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1lc0Zyb21TdHJ1
Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAgICAgaWYgKGNhbkNhY2hlUHJvcGVy
dGllc0Zyb21TdHJ1Y3R1cmUpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuc2V0TnVtQ2FjaGVhYmxl
U2xvdHNGb3JPYmplY3Qob2JqZWN0LCBwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CkBAIC0xNTc3LDcg
KzE1ODUsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2bSkKICAgICBpZiAoaXNTZWFsZWQo
dm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVudEV4dGVuc2lvbnModm0pOwotICAgIHNl
dFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCkp
KTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSh2bSkpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZnJlZXplKFZNJiB2bSkKQEAgLTE1
ODUsMTQgKzE1OTMsMTQgQEAgdm9pZCBKU09iamVjdDo6ZnJlZXplKFZNJiB2bSkKICAgICBpZiAo
aXNGcm96ZW4odm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVudEV4dGVuc2lvbnModm0p
OwotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUoKSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpmcmVlemVUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6OnByZXZlbnRF
eHRlbnNpb25zKFZNJiB2bSkKIHsKICAgICBlbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUodm0p
OwogICAgIGlmIChpc0V4dGVuc2libGUoKSkKLSAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1
Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCkpKTsKKyAg
ICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogfQogCiAvLyBUaGlzIHByZXNlbnRseSB3aWxsIGZs
YXR0ZW4gdG8gYW4gdW5jYWNoYWJsZSBkaWN0aW9uYXJ5OyB0aGlzIGlzIHN1aXRhYmxlCkBAIC0x
NjA1LDEyICsxNjEzLDEyIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9y
RGUKICAgICAvLyBJZiB0aGlzIG9iamVjdCdzIENsYXNzSW5mbyBoYXMgbm8gc3RhdGljIHByb3Bl
cnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlmeSEKICAgICAvLyBXZSBjYW4gc2FmZWx5IHNldCB0
aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5zaXZlIGNoZWNrIGFnYWluIGluIHRoZSBmdXR1cmUu
CiAgICAgaWYgKCFjbGFzc0luZm8oKS0+aGFzU3RhdGljUHJvcGVydGllcygpKSB7Ci0gICAgICAg
IHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CisgICAgICAgIHN0cnVj
dHVyZSh2bSktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmICghc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkp
Ci0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgaWYgKCFzdHJ1Y3R1cmUodm0p
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0
cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
dm0pKSk7CiAKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNzSW5mbygpOyBp
bmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiBoYXNoVGFibGUgPSBpbmZvLT5wcm9wSGFzaFRhYmxlKGdsb2JhbE9iamVjdCgpLT5nbG9iYWxF
eGVjKCkpOwpAQCAtMTYyMywyNCArMTYzMSwyNSBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRp
Y0Z1bmN0aW9uc0ZvckRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHJ1Y3R1cmUoKS0+c2V0
U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOworICAgIHN0cnVjdHVyZSh2bSktPnNldFN0YXRpY0Z1
bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAogYm9vbCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KFZNJiB2
bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoIWlzVmFsaWRPZmZzZXQo
c3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghaXNWYWxpZE9mZnNldChzdHJ1
Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBpZiAoc3RydWN0dXJlKCktPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSk7CisgICAgaWYgKHN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgeworICAgICAgICBvZmZzZXQgPSBz
dHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIG9m
ZnNldCkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKICAgICBpZiAo
b2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBwdXRE
aXJlY3RVbmRlZmluZWQob2Zmc2V0KTsKQEAgLTE4NjksNyArMTg3OCw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRl
eGluZ1NoYXBlPgogdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdp
dGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNWYWx1ZSB2YWx1
ZSkKIHsKLSAgICBBU1NFUlQoKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSAmIEluZGV4aW5n
U2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKKyAgICBBU1NFUlQoKGluZGV4aW5nVHlwZSgp
ICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFTU0VSVCghaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKICAgICAKICAgICAvLyBGb3IgdXMgdG8gZ2V0IGhlcmUs
IHRoZSBpbmRleCBpcyBlaXRoZXIgZ3JlYXRlciB0aGFuIHRoZSBwdWJsaWMgbGVuZ3RoLCBvciBn
cmVhdGVyIHRoYW4KQEAgLTE5OTgsNyArMjAwNyw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5k
ZXhCZXlvbmRWZWN0b3JMZW4KICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFycmF5IGluZGV4
IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCiAgICAgQVNTRVJUKGkgPD0g
TUFYX0FSUkFZX0lOREVYKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9C
TEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJz
ZSgpKSB7CiAgICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5
U3RvcmFnZSgKQEAgLTIwMTEsNyArMjAyMCw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhC
ZXlvbmRWZWN0b3JMZW4KICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgc2hvdWxkVGhy
b3csIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygp
KSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm5lZWRzU2xvd1B1dEluZGV4
aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNyZWF0ZUFycmF5
U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCgwLCAwLCBpICsgMSkpOwogICAg
ICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAg
ICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CkBAIC0yMDY2LDcgKzIwNzUs
NyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICAKICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFycmF5IGlu
ZGV4IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCi0gICAgQVNTRVJUKGhh
c0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQo
aGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGFycmF5U3RvcmFn
ZSgpID09IHN0b3JhZ2UpOwogICAgIEFTU0VSVChpID49IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgp
IHx8IGF0dHJpYnV0ZXMpOwogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CkBAIC0y
MTQ4LDcgKzIxNTcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvcikpCiAgICAgICAgIG5v
dGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKHZtKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5k
ZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IGF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgIHJldHVy
biBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0y
MTU5LDcgKzIxNjgsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRo
QXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBhdHRyaWJ1dGVz
LCBtb2RlLCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKKyAgICAgICAgaWYg
KHN0cnVjdHVyZShleGVjLT52bSgpKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkgewogICAgICAg
ICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY3JlYXRlQXJyYXlTdG9yYWdlKHZtLCBpICsg
MSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKDAsIDAsIGkgKyAxKSk7CiAgICAgICAgICAgICBzdG9yYWdl
LT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIHN0b3JhZ2Ut
Pm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKQEAgLTIyODIsNyArMjI5MSw3IEBAIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgSlNPYmplY3Q6OmdldE5ld1YKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGg7
CiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIAotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGll
cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICB2ZWN0b3JMZW5ndGggPSBtX2J1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgIGxlbmd0aCA9IG1fYnV0dGVyZmx5LT5wdWJs
aWNMZW5ndGgoKTsKICAgICB9IGVsc2UgewpAQCAtMjMyMSw3ICsyMzMwLDcgQEAgdW5zaWduZWQg
SlNPYmplY3Q6OmNvdW50RWxlbWVudHMoQnV0dGVyZgogCiB1bnNpZ25lZCBKU09iamVjdDo6Y291
bnRFbGVtZW50cygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICByZXR1cm4gMDsKQEAgLTIzNjAsMTAgKzIzNjksMTEgQEAgYm9vbCBKU09iamVjdDo6aW5j
cmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9IGdl
dE5ld1ZlY3Rvckxlbmd0aChuZXdMZW5ndGgpOwogCiAgICAgLy8gRmFzdCBjYXNlIC0gdGhlcmUg
aXMgbm8gcHJlY2FwYWNpdHkuIEluIHRoZXNlIGNhc2VzIGEgcmVhbGxvYyBtYWtlcyBzZW5zZS4K
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CiAgICAgaWYg
KExJS0VMWSghaW5kZXhCaWFzKSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCkt
Pmdyb3dBcnJheVJpZ2h0KAotICAgICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1
Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKKyAgICAgICAgICAgIHZtLCB0aGlz
LCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKICAgICAg
ICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJheVN0b3JhZ2U6
OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV3QnV0dGVyZmx5KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM3Nyw3ICsyMzg3LDcgQEAgYm9vbCBKU09i
amVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld0luZGV4Qmlh
cyA9IHN0ZDo6bWluKGluZGV4QmlhcyA+PiAxLCBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIIC0g
bmV3VmVjdG9yTGVuZ3RoKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2Ut
PmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSgKICAgICAgICAgdm0sIHRoaXMsCi0gICAgICAgIHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVG
b3IodmVjdG9yTGVuZ3RoKSwKKyAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKICAgICAgICAgbmV3
SW5kZXhCaWFzLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7
CiAgICAgaWYgKCFuZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzOTAs
NyArMjQwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZNJiAKIHZv
aWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiB7
CiAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgQVNTRVJUKGhhc0Nv
bnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoaW5kZXhp
bmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGxlbmd0aCA+IG1fYnV0dGVyZmx5LT52ZWN0b3JM
ZW5ndGgoKSk7CiAgICAgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gc3RkOjptaW4o
CkBAIC0yNDA1LDcgKzI0MTUsNyBAQCB2b2lkIEpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KFZN
JiB2bSwgCiAKICAgICBtX2J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1ZlY3Rvckxlbmd0
aCk7CiAKLSAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsK
KyAgICBpZiAoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsraSkKICAgICAg
ICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ldID0gUU5hTjsK
ICAgICB9CkBAIC0yNDE4LDE2ICsyNDI4LDE2IEBAIEJ1dHRlcmZseSogSlNPYmplY3Q6Omdyb3dP
dXRPZkxpbmVTdG9yYWcKICAgICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMgZnVuY3Rpb24g
bm90IHJlbHkgb24gc3RydWN0dXJlKCksIGZvciB0aGUgcHJvcGVydHkKICAgICAvLyBjYXBhY2l0
eSwgc2luY2Ugd2UgbWlnaHQgaGF2ZSBhbHJlYWR5IG11dGF0ZWQgdGhlIHN0cnVjdHVyZSBpbi1w
bGFjZS4KICAgICAKLSAgICByZXR1cm4gbV9idXR0ZXJmbHktPmdyb3dQcm9wZXJ0eVN0b3JhZ2Uo
dm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBvbGRTaXplLCBuZXdTaXplKTsKKyAgICByZXR1cm4gbV9i
dXR0ZXJmbHktPmdyb3dQcm9wZXJ0eVN0b3JhZ2Uodm0sIHRoaXMsIHN0cnVjdHVyZSh2bSksIG9s
ZFNpemUsIG5ld1NpemUpOwogfQogCiBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNDOjpQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzKTsKLSAgICBpZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgIGlmICghbWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLyogV29ya2Fyb3VuZCwgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdCBzZWFyY2hlcyB0aGUgcHJvdG90eXBlIGNoYWluLiA6LSggKi8KLSAg
ICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IHRoaXMgJiYgc2xvdC5zbG90QmFzZSgpICYmIHNsb3Qu
c2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Quc2xvdEJhc2UoKSwgZXhlYywg
Tm90U3RyaWN0TW9kZSkgIT0gdGhpcykKKyAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IHRoaXMg
JiYgc2xvdC5zbG90QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnRvVGhpcyhzbG90LnNsb3RCYXNlKCksIGV4ZWMsIE5vdFN0cmljdE1vZGUpICE9IHRo
aXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkpCiAg
ICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKHNsb3QuZ2V0dGVyU2V0dGVy
KCksIHNsb3QuYXR0cmlidXRlcygpKTsKQEAgLTI0NTgsNyArMjQ2OCw3IEBAIHN0YXRpYyBib29s
IHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2xk
RGVzY3JpcHRvci52YWx1ZSgpOwogICAgICAgICB0YXJnZXQtPnB1dERpcmVjdCh2bSwgcHJvcGVy
dHlOYW1lLCBuZXdWYWx1ZSwgYXR0cmlidXRlcyAmIH5BY2Nlc3Nvcik7CiAgICAgICAgIGlmIChh
dHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICB0YXJnZXQtPnN0cnVjdHVyZSgpLT5z
ZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICAgICAgdGFyZ2V0LT5zdHJ1
Y3R1cmUodm0pLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgYXR0cmlidXRlcyAmPSB+UmVhZE9ubHk7CkBAIC0yNTQ4LDcg
KzI1NTgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAg
Ly8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBhdHRyaWJ1dGVz
IG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNHZW5lcmljRGVz
Y3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwoZGVzY3Jp
cHRvcikpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAg
IHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRv
ciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJl
bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjU2MSw3ICsyNTcxLDcg
QEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgICAgICAgICAg
ICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hhbmlzbSBmb3Ig
YW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotICAgICAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJu
IHB1dERlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBkZXNj
cmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3VycmVudCk7CiAg
ICAgfQogCkBAIC0yNTgzLDcgKzI1OTMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25J
bmRleFByb3BlcnR5CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0Vx
dWFsKGRlc2NyaXB0b3IpICYmICFkZXNjcmlwdG9yLnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgbWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0
ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXRE
ZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRv
ci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0K
IApAQCAtMjYxMSw3ICsyNjIxLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQ
cm9wZXJ0eQogICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT52bSgpLCBkZXNj
cmlwdG9yLmdldHRlck9iamVjdCgpKTsKICAgICBpZiAoY3VycmVudC5hdHRyaWJ1dGVzRXF1YWwo
ZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIG1ldGhvZFRhYmxlKCktPmRl
bGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgbWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAg
ICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVu
dChjdXJyZW50KTsKICAgICBwdXREaXJlY3RBY2Nlc3NvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGdl
dHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2NDY1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBKU0NlbGwqIGdl
dEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUuaXNDZWxsKCkgJiYg
KHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpKQorICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXNDZWxsKCktPnR5
cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwoKTsK
ICAgICByZXR1cm4gMDsKIH0KQEAgLTEzNSwxNCArMTM1LDE0IEBAIHB1YmxpYzoKIAogICAgIHVu
c2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmICghaGFzSW5k
ZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgaWYg
KCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICB9
CiAgICAgICAgIAogICAgIHVuc2lnbmVkIGdldFZlY3Rvckxlbmd0aCgpCiAgICAgewotICAgICAg
ICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
CisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+dmVjdG9yTGVu
Z3RoKCk7CiAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNl
dEluZGV4UXVpY2tseShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICAgICAg
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAgLy8gVGhpcyBp
cyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0xODcsNyArMTg3LDcgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lO
REVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgog
ICAgICAgICAKICAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihtX2J1dHRlcmZseS0+Y29udGln
dW91cygpW2ldLmdldCgpLmFzSW50MzIoKSk7CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAgICAgICAKICAg
ICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAg
YnJlYWs7CkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSB0cnlHZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICAgICAgaWYgKG1ldGhvZFRh
YmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhlYywgaSwgc2xvdCkpCisg
ICAgICAgIGlmIChtZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCh0aGlzLCBleGVjLCBpLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiBzbG90LmdldFZh
bHVlKGV4ZWMsIGkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KQEAgLTI4Miw3
ICsyODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgY2FuU2V0SW5kZXhRdWlja2x5
KHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDQsNyArMzA0
LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGNhblNldEluZGV4UXVpY2tseUZvclB1
dERpcmVjdCh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAg
ICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzIx
LDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRJbmRleFF1aWNrbHko
Vk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAg
ICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgICAgICAg
ICBpZiAoIXYuaXNJbnQzMigpKSB7CkBAIC0zNzIsNyArMzcyLDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICB2b2lkIGluaXRpYWxpemVJbmRleChWTSYgdm0sIHVuc2lnbmVkIGksIEpTVmFsdWUg
dikKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHlUb1Vu
ZGVjaWRlZCh2bSwgaSwgdik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQyMSw3ICs0MjEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgaGFzU3BhcnNlTWFwKCkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC00MzgsNyArNDM4LDcgQEAgcHVibGlj
OgogICAgICAgICAKICAgICBib29sIGluU3BhcnNlSW5kZXhpbmdNb2RlKCkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQ
RVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC00OTQsMzEgKzQ5NCwzNSBAQCBwdWJs
aWM6CiAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkg
bWFwLgogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkgY29uc3QKICAgICB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBjaGVja09m
ZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVy
biBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1ZSgp
OwogICAgIH0KIAogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0CiAgICAgewogICAgICAgICBK
U0NlbGwqIHNwZWNpZmljOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKLSAgICAg
ICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHkoKSk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICAg
ICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0
cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gaW52
YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgIH0KIAogICAg
IFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiAgICAgewotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQs
IHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZz
ZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4g
b2Zmc2V0OwogICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYg
dm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzKQogICAg
IHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNh
cGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZt
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICAgICAgY2hlY2tPZmZz
ZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4g
b2Zmc2V0OwogICAgIH0KIApAQCAtNTk2LDggKzYwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
YWwoVk0mKTsKICAgICB2b2lkIGZyZWV6ZShWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgcHJldmVudEV4dGVuc2lvbnMoVk0mKTsKLSAgICBib29sIGlzU2VhbGVkKFZNJiB2bSkgeyBy
ZXR1cm4gc3RydWN0dXJlKCktPmlzU2VhbGVkKHZtKTsgfQotICAgIGJvb2wgaXNGcm96ZW4oVk0m
IHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNGcm96ZW4odm0pOyB9CisgICAgYm9vbCBpc1Nl
YWxlZChWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzU2VhbGVkKHZtKTsgfQorICAg
IGJvb2wgaXNGcm96ZW4oVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc0Zyb3plbih2
bSk7IH0KICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5pc0V4
dGVuc2libGUoKTsgfQogICAgIGJvb2wgaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpCiAgICAgewpA
QCAtNjE4LDcgKzYyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmxhdHRlbkRpY3Rpb25hcnlP
YmplY3QoVk0mIHZtKQogICAgIHsKLSAgICAgICAgc3RydWN0dXJlKCktPmZsYXR0ZW5EaWN0aW9u
YXJ5U3RydWN0dXJlKHZtLCB0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlKHZtKS0+ZmxhdHRlbkRp
Y3Rpb25hcnlTdHJ1Y3R1cmUodm0sIHRoaXMpOwogICAgIH0KIAogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QoKSBjb25zdApAQCAtNjQ1LDcgKzY0OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBjb250aWd1b3VzLCBhcnJheSBzdG9yYWdlKS4KICAgICBDb250aWd1b3VzSlNWYWx1ZXMgZW5z
dXJlSW50MzIoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNJbnQzMihzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNJbnQzMihp
bmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1
b3VzSW50MzIoKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlSW50MzJTbG93
KHZtKTsKQEAgLTY1Nyw3ICs2NjEsNyBAQCBwdWJsaWM6CiAgICAgLy8gb3IgYXJyYXkgc3RvcmFn
ZSkuCiAgICAgQ29udGlndW91c0RvdWJsZXMgZW5zdXJlRG91YmxlKFZNJiB2bSkKICAgICB7Ci0g
ICAgICAgIGlmIChMSUtFTFkoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkp
KQorICAgICAgICBpZiAoTElLRUxZKGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkpKQogICAgICAg
ICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgcmV0dXJuIGVuc3VyZURvdWJsZVNsb3codm0pOwpAQCAtNjY3LDcgKzY3MSw3
IEBAIHB1YmxpYzoKICAgICAvLyBpbmRleGluZyBzaG91bGQgYmUgc3BhcnNlIG9yIGJlY2F1c2Ug
d2UncmUgaGF2aW5nIGEgYmFkIHRpbWUuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUNv
bnRpZ3VvdXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3Vz
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0Nv
bnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZs
eS0+Y29udGlndW91cygpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVDb250
aWd1b3VzU2xvdyh2bSk7CkBAIC02NzgsNyArNjgyLDcgQEAgcHVibGljOgogICAgIC8vIGF0dGVt
cHRzIHRvIGNvbnZlcnQgZWFjaCBkb3VibGUgdG8gYW4gaW50MzIuCiAgICAgQ29udGlndW91c0pT
VmFsdWVzIHJhZ2VFbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0gICAgICAgIGlmIChM
SUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAg
ICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAgICAgIAogICAgICAg
ICByZXR1cm4gcmFnZUVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsKQEAgLTY5MCw3ICs2OTQsNyBA
QCBwdWJsaWM6CiAgICAgLy8gYWxyZWFkeS4KICAgICBBcnJheVN0b3JhZ2UqIGVuc3VyZUFycmF5
U3RvcmFnZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0FycmF5U3RvcmFn
ZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNB
cnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIGVuc3Vy
ZUFycmF5U3RvcmFnZVNsb3codm0pOwpAQCAtNzM4LDcgKzc0Miw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBzdG9yYWdlLiBUaGlzIHdpbGwgYXNzZXJ0IG90aGVyd2lzZS4KICAgICBBcnJheVN0b3Jh
Z2UqIGFycmF5U3RvcmFnZSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdl
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICBBU1NFUlQoaGFzQXJyYXlT
dG9yYWdlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJy
YXlTdG9yYWdlKCk7CiAgICAgfQogICAgICAgICAKQEAgLTc0Niw3ICs3NTAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gb2JqZWN0IGlzIGluIGEgbW9kZSB3aGVyZSBpdCBoYXMgYXJyYXkgc3RvcmFn
ZS4KICAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZU9yTnVsbCgpCiAgICAgewotICAgICAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2gg
KGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JBR0VfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
OwogICAgICAgICAgICAgICAgIApAQCAtODEzLDcgKzgxNyw3IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIGVuc3VyZUxlbmd0aChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgICAgICBBU1NFUlQoaGFzQ29u
dGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgfHwgaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAg
ICAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoaW5k
ZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVk
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKG1fYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIGVuc3VyZUxlbmd0aFNsb3co
dm0sIGxlbmd0aCk7CkBAIC04NTEsNyArODU1LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgQ29udGln
dW91c0pTVmFsdWVzIGN1cnJlbnRJbmRleGluZ0RhdGEoKQogICAgIHsKLSAgICAgICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVy
biBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwpAQCAtODY4LDcgKzg3Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICBKU1ZhbHVlIGdldEhvbHlJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAg
IHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpW2ldLmdldCgpOwpAQCAtOTA4LDcgKzkx
Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRSZWxldmFudExlbmd0aCgp
CiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC05ODAsNiAr
OTg0LDEwIEBAIHByaXZhdGU6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29weVdyaXRlQmFycmll
cjxCdXR0ZXJmbHk+IG1fYnV0dGVyZmx5OworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCitwcml2YXRl
OgorICAgIHVpbnQzMl90IG1fcGFkZGluZzsKKyNlbmRpZgogfTsKIAogLy8gSlNOb25GaW5hbE9i
amVjdCBpcyBhIHR5cGUgb2YgSlNPYmplY3QgdGhhdCBoYXMgc29tZSBpbnRlcm5hbCBzdG9yYWdl
LApAQCAtMTEwNiwzNSArMTExNCwzNSBAQCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0OjpvZmZzZXRP
ZklubGluZVN0CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0dsb2JhbE9iamVjdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBHbG9iYWxP
YmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZTsKIH0KIAog
aW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzVmFyaWFibGVPYmplY3QoKSBjb25zdAogewotICAgIHJl
dHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPj0gVmFyaWFibGVPYmplY3RUeXBl
OworICAgIHJldHVybiB0eXBlKCkgPj0gVmFyaWFibGVPYmplY3RUeXBlOwogfQogCiAKIGlubGlu
ZSBib29sIEpTT2JqZWN0Ojppc1N0YXRpY1Njb3BlT2JqZWN0KCkgY29uc3QKIHsKLSAgICBKU1R5
cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKTsKKyAgICBKU1R5cGUgdHlw
ZSA9IHRoaXMtPnR5cGUoKTsKICAgICByZXR1cm4gdHlwZSA9PSBOYW1lU2NvcGVPYmplY3RUeXBl
IHx8IHR5cGUgPT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CiB9CiAKIAogaW5saW5lIGJvb2wgSlNP
YmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpID09IE5hbWVTY29wZU9iamVjdFR5cGU7CisgICAgcmV0dXJu
IHR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVj
dDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkudHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOworICAgIHJldHVybiB0
eXBlKCkgPT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0
Ojppc0Vycm9ySW5zdGFuY2UoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CisgICAgcmV0dXJuIHR5cGUoKSA9
PSBFcnJvckluc3RhbmNlVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFN0cnVj
dHVyZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSkKQEAgLTExOTgsMTAgKzEyMDYsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIEpT
T2JqZWN0OjppbmxpbmVHZXRPdwogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlND
ZWxsKiBzcGVjaWZpYzsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+
Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5z
dHJ1Y3R1cmUodm0pOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKICAgICBpZiAoTElLRUxZ
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkpIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldERp
cmVjdChvZmZzZXQpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNldHRlcigpKQorICAgICAgICBpZiAoc3RydWN0
dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0ZXJTZXR0ZXIo
KSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFsdWUsIGF0dHJp
YnV0ZXMsIG9mZnNldCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpcywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CkBAIC0xMjIxLDkgKzEyMzEsMTAgQEAg
QUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZQogCiBBTFdBWVNfSU5MSU5F
IGJvb2wgSlNPYmplY3Q6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgaWYg
KCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICghc3RydWN0dXJlKHZtKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKICAgICAgICAgcmV0dXJuIGFzT2Jq
ZWN0KHRoaXMpLT5pbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKLSAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+
Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAK
IC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0
IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UKQEAgLTEyNDUsNyArMTI1Niw3IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKIHsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBl
ID0gb2JqZWN0LT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKCFwcm90b3R5cGUuaXNPYmplY3Qo
KSkKQEAgLTEyODAsMTUgKzEyOTEsMTYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVj
dEludGVybmFsKAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVhcDo6aGVhcCh2
YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgQVNTRVJUKHByb3BlcnR5TmFtZS5hc0lu
ZGV4KCkgPT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKIAotICAgIGlmIChzdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0
cnVjdHVyZSh2bSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAg
ICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogY3VycmVudFNw
ZWNpZmljRnVuY3Rpb247Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVj
aWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAg
ICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5k
IHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVl
IGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVu
Y3Rpb24pKQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5kZXNwZWNpZnlEaWN0aW9uYXJ5
RnVuY3Rpb24odm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgc3RydWN0dXJlLT5k
ZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24odm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25s
eSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMDksMjQgKzEzMjEsMjQg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkg
PSBidXR0ZXJmbHkoKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxsR3Jvd091dE9m
TGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dPdXRPZkxpbmVT
dG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3RydWN0dXJlKCkt
PnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAgICAgb2Zmc2V0
ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNldFN0cnVjdHVy
ZUFuZEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7CisgICAgICAgIGlm
ICh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCisgICAg
ICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgdGhpcy0+c3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRoaXMtPnN0cnVjdHVyZSgpLT5zdWdnZXN0
ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIG9mZnNldCA9IHRoaXMt
PnN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBzZXRTdHJ1Y3R1cmVB
bmRCdXR0ZXJmbHkodm0sIHRoaXMtPnN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkpOwogCiAgICAg
ICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUoKS0+
aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgQVNTRVJUKHRoaXMtPnN0cnVjdHVyZSgp
LT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgICAgICBwdXREaXJlY3Qodm0sIG9mZnNldCwg
dmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0eSBjYWxsIGJl
bG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAgICBzbG90LnNl
dE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVh
ZE9ubHkpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3Bl
cnRpZXMoKTsKKyAgICAgICAgICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zZXRDb250YWluc1JlYWRP
bmx5UHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IHN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSB0
aGlzLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7CkBAIC0x
MzQ4LDcgKzEzNjAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
CiAKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwqIGN1cnJlbnRT
cGVjaWZpY0Z1bmN0aW9uOwotICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAg
ICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmli
dXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgIGlmIChvZmZzZXQgIT0gaW52YWxp
ZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0
dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNjks
NyArMTM4MSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IGNhc2UgKDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAgICAgIHNl
dFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNldFN0cnVjdHVyZSh2
bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwg
cHJvcGVydHlOYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhl
IHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4KQEAgLTEzODEsNyArMTM5Myw3IEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoKG1vZGUgPT0gUHV0TW9k
ZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKKyAgICBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0KCkpOwogICAg
IAogICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aXNW
YWxpZE9mZnNldChvZmZzZXQpKTsKQEAgLTE0MTUsNyArMTQyNyw3IEBAIGlubGluZSB2b2lkIEpT
T2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWEKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1
Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiB2bSwgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5l
Y2Vzc2FyeSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBu
ZXdTdHJ1Y3R1cmUpOworICAgICAgICB2bSwgc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dE93bkRh
dGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDE2
NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTc2LDYgKzc2LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFy
cmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm94eS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw1NSArNzMsNTUgQEAgU3Ry
aW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdAogYm9vbCBKU1Byb3h5OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94eSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9
CiAKIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2Jq
ZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9i
amVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdC0+
dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQgSlNQcm94eTo6
cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNQcm94
eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+
dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpTUHJveHk6OnB1dEJ5SW5kZXgo
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTUHJv
eHk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50YXJnZXQoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3du
UHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQog
ewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAg
IHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJu
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJv
cGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiB9CiAKIGJv
b2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdC0+dGFy
Z2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lkIEpTUHJveHk6
OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlz
T2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAog
dm9pZCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+
KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93
blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMs
IG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEV4ZWNT
dAogSlNPYmplY3QqIEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoSlNTY29wZSogc2NvcGUpCiB7CiAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IHNjb3BlOwotICAgIGlmIChvYmplY3QtPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQorICAgIGlmIChvYmplY3QtPnR5
cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTV2l0aFNjb3Bl
Kj4ob2JqZWN0KS0+b2JqZWN0KCk7CiAKICAgICByZXR1cm4gb2JqZWN0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjMsNyArMTYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJpbmdUeXBlLCBP
dmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90
QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
U3RyaW5nVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9CiAKICAgICAg
ICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU1N0cmluZywgbV9sZW5ndGgpOyB9CkBAIC0xODEsNiArMTgxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH07CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8g
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwog
ICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNSb3BlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZS5pc051bGwoKTsgfQpAQCAtNTI2LDcgKzUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNKU1N0cmluZyhKU1Zh
bHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJbmZvKCkgPT0g
SlNTdHJpbmc6OmluZm8oKTsgfQorICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2
KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPnR5cGUoKSA9PSBTdHJpbmdUeXBl
OyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUu
aAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWVudW0gSlNUeXBlIHsKK2VudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgVW5zcGVjaWZp
ZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5cGUsCiAgICAgQm9vbGVhblR5cGUsCkBAIC01NSw2ICs1
NSwxOCBAQCBlbnVtIEpTVHlwZSB7CiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAgICAgUHJveHlU
eXBlLAogICAgIFdpdGhTY29wZVR5cGUsCisgICAgQXJndW1lbnRzVHlwZSwKKworICAgIEludDhB
cnJheVR5cGUsCisgICAgSW50MTZBcnJheVR5cGUsCisgICAgSW50MzJBcnJheVR5cGUsCisgICAg
VWludDhBcnJheVR5cGUsCisgICAgVWludDhDbGFtcGVkQXJyYXlUeXBlLAorICAgIFVpbnQxNkFy
cmF5VHlwZSwKKyAgICBVaW50MzJBcnJheVR5cGUsCisgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAg
ICBGbG9hdDY0QXJyYXlUeXBlLAorICAgIERhdGFWaWV3VHlwZSwKIAogICAgIE5hbWVTY29wZU9i
amVjdFR5cGUsCiAgICAgLy8gVmFyaWFibGVPYmplY3RUeXBlIG11c3QgYmUgbGVzcyB0aGFuIE1P
U1Qgb2YgdGhlIHR5cGVzIG9mIGl0cyBzdWJjbGFzc2VzIGFuZCBvbmx5IGl0cyBzdWJjbGFzc2Vz
LgpAQCAtNjQsNiArNzYsOCBAQCBlbnVtIEpTVHlwZSB7CiAgICAgQWN0aXZhdGlvbk9iamVjdFR5
cGUsCiB9OwogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNUeXBlKSA9PSBzaXplb2YodWludDhf
dCksIHNpemVvZl9qc3R5cGVfaXNfb25lX2J5dGUpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90
ID0gMSA8PCAxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmV3SW1wdXJlUHJvcGVydHlG
aXJlc1dhdGNocG9pbnRzID0gMSA8PCAxMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlSGFzUmFyZURhdGEgPSAxIDw8IDEyOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCAxMzsKIAogICAgIGNsYXNzIFR5cGVJbmZvIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBlLCB1bnNpZ25lZCBmbGFncyA9
IDApCiAgICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAgICAgLCBtX2ZsYWdzKGZs
YWdzICYgMHhmZikKKyAgICAgICAgICAgICwgbV96ZXJvZWRHQ0RhdGEoMCkKICAgICAgICAgICAg
ICwgbV9mbGFnczIoZmxhZ3MgPj4gOCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PGludD4odHlwZSkgPD0gMHhmZik7CkBAIC02Nyw3ICs2OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxKU1R5cGU+KG1fdHlwZSk7IH0KLSAgICAgICAgYm9vbCBpc09iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA+PSBPYmplY3RUeXBlOyB9CisgICAgICAgIGJvb2wgaXNP
YmplY3QoKSBjb25zdCB7IHJldHVybiBpc09iamVjdCh0eXBlKCkpOyB9CisgICAgICAgIHN0YXRp
YyBib29sIGlzT2JqZWN0KEpTVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID49IE9iamVjdFR5cGU7
IH0KICAgICAgICAgYm9vbCBpc0ZpbmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09
IEZpbmFsT2JqZWN0VHlwZTsgfQogICAgICAgICBib29sIGlzTnVtYmVyT2JqZWN0KCkgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IE51bWJlck9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc05h
bWUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gTmFtZUluc3RhbmNlVHlwZTsgfQpAQCAtODYs
NiArODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBoYXNJbXB1cmVHZXRPd25Q
cm9wZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKEhhc0ltcHVyZUdldE93
blByb3BlcnR5U2xvdCk7IH0KICAgICAgICAgYm9vbCBuZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0
Y2hwb2ludHMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKE5ld0ltcHVyZVByb3BlcnR5
RmlyZXNXYXRjaHBvaW50cyk7IH0KICAgICAgICAgYm9vbCBzdHJ1Y3R1cmVIYXNSYXJlRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0dXJlSGFzUmFyZURhdGEpOyB9Cisg
ICAgICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25G
bGFnczIoU3RydWN0dXJlSXNJbW1vcnRhbCk7IH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90
IGZsYWdzT2Zmc2V0KCkKICAgICAgICAgewpAQCAtOTcsNiArMTAxLDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihUeXBlSW5mbywgbV90eXBl
KTsKICAgICAgICAgfQogCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgemVyb2VkR0NEYXRhT2Zm
c2V0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihUeXBl
SW5mbywgbV96ZXJvZWRHQ0RhdGEpOworICAgICAgICB9CisKKyAgICAgICAgdHlwZWRlZiB1aW50
OF90IElubGluZVR5cGVGbGFnczsKKyAgICAgICAgSW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVG
bGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIApAQCAtMTA1LDYg
KzExNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB1bnNpZ25lZCBjaGFyIG1fdHlw
ZTsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2ZsYWdzOworICAgICAgICAvLyBTb21lIG9mIG91
ciBpbml0aWFsaXphdGlvbiBjb2RlIGRlcGVuZHMgb24gYmVpbmcgYWJsZSB0byBsb2FkIGEgZnVs
bCB3b3JkCisgICAgICAgIC8vIGZyb20gdGhlIFN0cnVjdHVyZSB0byBpbml0aWFsaXplIGEgbmV3
IG9iamVjdCdzIGZpZWxkcywgc28gdGhpcyBmaWVsZCBzZXJ2ZXMKKyAgICAgICAgLy8gYXMgdGhl
IHplcm9lZCBvdXQgZ2NEYXRhIGZpZWxkIGZvciB0aGUgbmV3IEpTQ2VsbC4KKyAgICAgICAgdW5z
aWduZWQgY2hhciBtX3plcm9lZEdDRGF0YTsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2ZsYWdz
MjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwRGF0YS5o
CShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXIoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8aW50MzJfdD4gSW5kZXhUcmFpdHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1lcyBvZiBhIHZhbHVlIHRo
YXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZSgp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywg
cHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QoZXhl
Yy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVzID0gY29uc3RydWN0RW1w
dHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpA
QCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBvYmplY3QuIikpKTsKICAg
ICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVj
dChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQo
MCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBK
U0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3Qg
bnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzI0LDE0ICszMjQsMTQgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2NyaXB0b3IuYXR0cmlidXRlcygpICYg
QWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpKSk7CiAgICAg
QVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAgTy0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lT3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eU5hbWUpLCBk
ZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBPLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5l
T3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eU5hbWUpLCBkZXNj
cmlwdG9yLCB0cnVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKE8pOwogfQogCiBzdGF0
aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9i
amVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVzKSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgYXNPYmplY3QocHJvcGVy
dGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2Jq
ZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnR5TmFtZXMuc2l6ZSgp
OwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0b3JzOwogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIEpT
VmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdAogICAgICAgICB9CiAgICAgfQogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7Ci0gICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzW2ldLCBkZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVy
dHlOYW1lc1tpXSwgZGVzY3JpcHRvcnNbaV0sIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgfQpAQCAtMzk4
LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAog
ICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQ
cm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1
ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0
aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTQw
OCw3ICs0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAg
ICAgICAgIC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5b
W0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShm
YWxzZSk7CiAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRl
cm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4KLSAg
ICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4
ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAqaXRlciwgZGVzYywgdHJ1
ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CkBAIC00MjgsMTQgKzQyOCwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0
LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkpOwogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCi0gICAgaWYgKGlzSlNGaW5hbE9iamVjdChvYmpl
Y3QpICYmICFoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpIHsKKyAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkgJiYgIWhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgIG9iamVjdC0+
ZnJlZXplKGV4ZWMtPnZtKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7
CiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBv
ZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRp
ZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlO
YW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBv
ZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0
aCBQLgpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3QKICAgICAgICAgLy8gYy4gSWYgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUs
IHNldCBkZXNjLltbQ29uZmlndXJhYmxlXV0gdG8gZmFsc2UuCiAgICAgICAgIGRlc2Muc2V0Q29u
ZmlndXJhYmxlKGZhbHNlKTsKICAgICAgICAgLy8gZC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9w
ZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUCwgZGVzYywgYW5kIHRydWUgYXMgYXJn
dW1lbnRzLgotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUpOworICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsICppdGVy
LCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAgIH0KQEAgLTQ4Myw3ICs0ODMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAKICAgICAvLyAy
LiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlO
YW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVt
UHJvcGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0
T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC01MTMsNyArNTEz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAgLy8g
Mi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5
TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5n
ZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRF
bnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51
bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
ICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dl
dE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0R2V0dGVyKGdl
dCk7CiAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogICAgIGRlc2NyaXB0b3Iu
c2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRl
ZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFs
c2UpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Q
cm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0xNDMsNyAr
MTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRl
c2NyaXB0b3Iuc2V0U2V0dGVyKHNldCk7CiAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRy
dWUpOwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRl
c2NyaXB0b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2
aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/IEFTQ0lJTGl0
ZXJhbCgiW29iamVjdCBVbmRlZmluZWRdIikgOiBBU0NJSUxpdGVyYWwoIltvYmplY3QgTnVsbF0i
KSkpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1ZS50b09iamVjdChleGVj
KTsKIAotICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+b2Jq
ZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gV1RGOjp0cnlN
YWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFt
ZSh0aGlzT2JqZWN0KSwgIl0iKTsKKyAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld1N0cmlu
ZyA9IFdURjo6dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpOwogICAgICAgICBpZiAo
IW5ld1N0cmluZykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMpKTsKIAogICAgICAgICByZXN1bHQgPSBqc05vbnRyaXZpYWxTdHJp
bmcoZXhlYywgbmV3U3RyaW5nLnJlbGVhc2UoKSk7Ci0gICAgICAgIHRoaXNPYmplY3QtPnN0cnVj
dHVyZSgpLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHJl
c3VsdCk7CisgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZShleGVjLT52bSgpKS0+c2V0T2Jq
ZWN0VG9TdHJpbmdWYWx1ZShleGVjLT52bSgpLCB0aGlzT2JqZWN0LCByZXN1bHQpOwogICAgIH0K
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0NjU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDExICs2OCwxMSBAQCBKU1ZhbHVlIGpzVHlwZVN0cmluZ0ZvclZhbHVlKFZN
JiB2bSwgSlNHCiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAgICAvLyBSZXR1cm4gInVu
ZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRlZAogICAgICAgICAvLyBh
cyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlmIChhc09iamVjdCh2KS0+
c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0KSkKKyAgICAg
ICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLnVuZGVm
aW5lZFN0cmluZygpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisgICAg
ICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxs
RGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5n
cy5mdW5jdGlvblN0cmluZygpOwogICAgIH0KICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLm9i
amVjdFN0cmluZygpOwpAQCAtODgsMTUgKzg4LDE1IEBAIGJvb2wganNJc09iamVjdFR5cGUoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUKICAgICBpZiAoIXYuaXNDZWxsKCkpCiAgICAgICAgIHJldHVybiB2
LmlzTnVsbCgpOwogCi0gICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgpLT50eXBlKCk7
CiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKLSAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1
Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxP
YmplY3QoKSkpCisgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKGNhbGxGcmFtZS0+
dm0oKSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBp
ZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGNhbGxGcmFt
ZS0+dm0oKSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAx
NjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNB
ZGQoQ2FsbEZyYW1lKiBjCiAKIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5G
b3JDaGFpbkFjY2VzcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5T2Zmc2V0
JiBzbG90T2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBKU0Nl
bGwqIGNlbGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgIHNpemVfdCBjb3VudCA9IDA7CiAgICAgICAg
IApAQCAtMjMwLDEwICsyMzEsMTAgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVD
aGFpbkZvcgogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSh2bSktPmlz
RGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rp
b25hcnlPYmplY3QoY2FsbEZyYW1lLT52bSgpKTsKICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9
PSBjZWxsKQotICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+
Z2V0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsgCisgICAgICAgICAgICAgICAgc2xv
dE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJhbWUtPnZtKCksIHByb3Bl
cnR5TmFtZSk7IAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgKytjb3VudDsKQEAg
LTI0NCwxMiArMjQ1LDEzIEBAIGlubGluZSBzaXplX3Qgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW5G
b3IKIAogaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgSlNDZWxsKiBiYXNlKQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+dm0oKTsK
ICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChiYXNl
LT5pc1Byb3h5KCkpCiAgICAgICAgICAgICByZXR1cm4gSW52YWxpZFByb3RvdHlwZUNoYWluOwog
ICAgICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgdiA9IGJhc2UtPnN0cnVjdHVyZSgpLT5wcm90
b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3Ry
dWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7CiAgICAgICAgIGlmICh2
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwogCkBAIC0yNTcsNyArMjU5LDcg
QEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihDYQogCiAgICAgICAgIC8v
IFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29k
IGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rp
b25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisg
ICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25hcnkoKSkKICAgICAgICAg
ICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPnZt
KCkpOwogCiAgICAgICAgICsrY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHJldmlzaW9uIDE2NDY1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5k
VHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENv
bXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTIwMiw2ICsy
MDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAjZW5kaWYKIAor
cHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiBwcml2YXRlOgog
ICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwogICAgIFBy
b3BlcnR5VGFibGUoVk0mLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExlYWZUeXBl
LCAwKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExlYWZUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsK
QEAgLTg1LDYgKzg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cEtleSBrZXko
KSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3RyaW5nKTsgfQogCiAgICAg
cHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
cGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKIHB1
YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsMTMgKzE1NywxNCBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcFN0YXRpc3RpY3MoKQogCiBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBpbmxpbmVD
YXBhY2l0eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKQor
ICAgICwgbV9zdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlE
KHRoaXMpKQorICAgICwgbV9pbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKQorICAgICwgbV90eXBl
SW5mbyh0eXBlSW5mbykKICAgICAsIG1fZ2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBnbG9iYWxPYmpl
Y3QsIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVjdD46Ok1heUJlTnVsbCkKICAgICAsIG1fcHJv
dG90eXBlKHZtLCB0aGlzLCBwcm90b3R5cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8p
CiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fb2Zm
c2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9p
bmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVD
YXBhY2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAg
ICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0xODcsMTIgKzE4OCwxMyBAQCBj
b25zdCBDbGFzc0luZm8gU3RydWN0dXJlOjpzX2luZm8gPSB7ICJTCiAKIFN0cnVjdHVyZTo6U3Ry
dWN0dXJlKFZNJiB2bSkKICAgICA6IEpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbCkKKyAgICAsIG1f
c3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkK
KyAgICAsIG1faW5kZXhpbmdUeXBlKDApCisgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwpCiAgICAgLCBtX3By
b3RvdHlwZSh2bSwgdGhpcywganNOdWxsKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAg
ICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fb2Zmc2V0
KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbikKLSAgICAsIG1faW5kZXhpbmdUeXBlKDApCiAgICAgLCBtX2lubGluZUNh
cGFjaXR5KDApCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAg
ICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMjExLDEyICsyMTMsMTMgQEAg
U3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYg
dm0sIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgOiBKU0NlbGwodm0sIHZtLnN0cnVj
dHVyZVN0cnVjdHVyZS5nZXQoKSkKKyAgICAsIG1fc3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1
cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZp
b3VzLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpCisgICAgLCBtX3R5cGVJbmZvKHBy
ZXZpb3VzLT50eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAm
IH5TdHJ1Y3R1cmVIYXNSYXJlRGF0YSkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcmV2
aW91cy0+c3RvcmVkUHJvdG90eXBlKCkpCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91cy0+bV9j
bGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAg
ICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHByZXZpb3VzLT50
eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1Y3R1
cmVIYXNSYXJlRGF0YSkKLSAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5pbmRleGluZ1R5
cGVJbmNsdWRpbmdIaXN0b3J5KCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KHByZXZpb3VzLT5t
X2lubGluZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+bV9kaWN0
aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMjI5
LDYgKzIzMiw3IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAg
ICAsIG1fZGlkVHJhbnNpdGlvbih0cnVlKQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQo
cHJldmlvdXMtPm1fc3RhdGljRnVuY3Rpb25SZWlmaWVkKQogeworICAgIEFTU0VSVCghcHJldmlv
dXMtPnR5cGVJbmZvKCkuc3RydWN0dXJlSXNJbW1vcnRhbCgpKTsKICAgICBpZiAocHJldmlvdXMt
PnR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSAmJiBwcmV2aW91cy0+cmFyZURhdGEo
KS0+bmVlZHNDbG9uaW5nKCkpCiAgICAgICAgIGNsb25lUmFyZURhdGFGcm9tKHZtLCBwcmV2aW91
cyk7CiAgICAgZWxzZSBpZiAocHJldmlvdXMtPnByZXZpb3VzSUQoKSkKQEAgLTI0MSw2ICsyNDUs
MTMgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBjb25zdCBTdHJ1YwogICAgIEFTU0VS
VChoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgfHwgIW1fY2xhc3NJbmZvLT5oYXNTdGF0aWNT
ZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcyh2bSkpOwogfQogCitTdHJ1Y3R1cmU6On5TdHJ1Y3R1
cmUoKQoreworICAgIGlmICh0eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5kZWFs
bG9jYXRlSUQodGhpcywgbV9zdHJ1Y3R1cmVJRCk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkZXN0
cm95KEpTQ2VsbCogY2VsbCkKIHsKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+
U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7CkBAIC0xMDE5LDcgKzEwMzAsNyBAQCBib29sIFN0cnVj
dHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlCiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNO
dWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBjdXJy
ZW50ID0gcHJvdG90eXBlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgY3VycmVudCA9
IHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgCiAgICAgICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29u
c3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAwKTsKIAorICAgIH5TdHJ1Y3R1cmUoKTsKKwogcHJv
dGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTk2LDYg
Kzk4LDggQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVibGljOgorICAgIFN0cnVjdHVyZUlEIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRDsgfQorCiAgICAgc3RhdGljIHZvaWQgZHVt
cFN0YXRpc3RpY3MoKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdHJ1Y3R1cmUq
IGFkZFByb3BlcnR5VHJhbnNpdGlvbihWTSYsIFN0cnVjdHVyZSosIFByb3BlcnR5TmFtZSwgdW5z
aWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBQcm9wZXJ0eU9mZnNldCYs
IFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCA9IFB1dFByb3BlcnR5U2xvdDo6VW5rbm93bkNvbnRl
eHQpOwpAQCAtMzEwLDYgKzMxNCwyNiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDbGFzc0luZm8q
IGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKKyAgICBpbnQ2NF90
IGlkQmxvYigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgaW50NjRfdCo+KCZtX3N0cnVjdHVyZUlEKTsKKyAgICB9CisKKyAgICBpbnQzMl90IG9i
amVjdEluaXRpYWxpemF0aW9uRmllbGRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oJm1faW5kZXhpbmdUeXBlKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKKyAgICB7CisgICAg
ICAgIC8vIFdlIGxvYWQgbV9zdHJ1Y3R1cmVJRCwgbV9pbmRleGluZ1R5cGUsIGFuZCBtX3R5cGVJ
bmZvIGluIGEgc2luZ2xlCisgICAgICAgIC8vIDY0LWJpdCBpbnN0cnVjdGlvbiwgc28gd2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhleSdyZSBwcm9wZXJseSBhbGlnbmVkLgorICAgICAgICBBU1NFUlQo
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9zdHJ1Y3R1cmVJRCkgPT0gOCk7CisgICAgICAg
IEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2luZGV4aW5nVHlwZSkgPT0gMTIp
OworICAgICAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5mbykg
PT0gMTMpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9zdHJ1
Y3R1cmVJRCk7CisgICAgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBwcm90b3R5cGVPZmZzZXQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fcHJv
dG90eXBlKTsKQEAgLTQ3OCw3ICs1MDIsMTMgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
aW50IHNfbWF4VHJhbnNpdGlvbkxlbmd0aEZvck5vbkV2YWxQdXRCeUlkID0gNTEyOwogCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IDM7
Ci0gICAgICAgIAorICAgIAorICAgIC8vIFRoZXNlIG5lZWQgdG8gYmUgcHJvcGVybHkgYWxpZ25l
ZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAnU3RydWN0dXJlJworICAgIC8vIHBhcnQgb2YgdGhl
IG9iamVjdC4KKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4aW5nVHlw
ZSBtX2luZGV4aW5nVHlwZTsKKyAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOworCiAgICAgV3JpdGVC
YXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4gbV9wcm90b3R5cGU7CiAgICAgbXV0YWJsZSBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
Q2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkBAIC01MDIsOCArNTMyLDYgQEAgcHJpdmF0
ZToKICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZvciBhbm9ueW1vdXMgc2xvdHMK
ICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAotICAgIFR5cGVJbmZvIG1fdHlwZUluZm87
Ci0gICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOwogICAgIHVpbnQ4X3QgbV9pbmxpbmVD
YXBhY2l0eTsKICAgICAKICAgICBDb25jdXJyZW50SklUTG9jayBtX2xvY2s7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdl
dCgpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgeyBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOyB9Cisg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwogCkBAIC02NCw2ICs2Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsK
KwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKwor
I2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1N0cnVjdHVyZUlEVGFibGU6OlN0
cnVjdHVyZUlEVGFibGUoKQorICAgIDogbV9maXJzdEZyZWVPZmZzZXQoMCkKKyAgICAsIG1fdGFi
bGUobmV3IFN0cnVjdHVyZU9yT2Zmc2V0W3NfaW5pdGlhbFNpemVdKQorICAgICwgbV9zaXplKDAp
CisgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNpemUpCit7CisgICAgLy8gV2UgcHJlLWFsbG9j
YXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0aGUgbnVsbCBTdHJ1Y3R1cmUKKyAgICAvLyBj
YW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFN0cnVjdHVyZUlEICcwJy4KKyAgICBhbGxv
Y2F0ZUlEKDApOworfQorCitTdHJ1Y3R1cmVJRFRhYmxlOjp+U3RydWN0dXJlSURUYWJsZSgpCit7
CisgICAgZGVsZXRlIFtdIG1fdGFibGU7Cit9CisKK3ZvaWQgU3RydWN0dXJlSURUYWJsZTo6cmVz
aXplKHNpemVfdCBuZXdDYXBhY2l0eSkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIG5ldyB0YWJsZS4K
KyAgICBTdHJ1Y3R1cmVPck9mZnNldCogbmV3VGFibGUgPSBuZXcgU3RydWN0dXJlT3JPZmZzZXRb
bmV3Q2FwYWNpdHldOworCisgICAgLy8gQ29weSB0aGUgY29udGVudHMgb2YgdGhlIG9sZCB0YWJs
ZSB0byB0aGUgbmV3IHRhYmxlLgorICAgIG1lbWNweShuZXdUYWJsZSwgbV90YWJsZSwgbV9jYXBh
Y2l0eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNldCkpOworCisgICAgLy8gU3RvcmUgZmVuY2Ug
dG8gbWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVyeXRoaW5nIGJlZm9yZSBkb2luZyB0aGUgc3dh
cC4KKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgLy8gU3dhcCB0aGUgb2xkIGFu
ZCBuZXcgdGFibGVzLgorICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBvbGRUYWJsZSA9IG1fdGFibGU7
CisgICAgbV90YWJsZSA9IG5ld1RhYmxlOworCisgICAgLy8gUHV0IHRoZSBvbGQgdGFibGUgKG5v
dyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBvbGQgdGFibGVzLgorICAgIG1fb2xk
VGFibGVzLmFwcGVuZChvbGRUYWJsZSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGNhcGFjaXR5Lgor
ICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxl
OjpmbHVzaE9sZFRhYmxlcygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fb2xk
VGFibGVzLnNpemUoKTsgKytpKQorICAgICAgICBkZWxldGUgW10gbV9vbGRUYWJsZXNbaV07Cisg
ICAgbV9vbGRUYWJsZXMuY2xlYXIoKTsKK30KKworU3RydWN0dXJlSUQgU3RydWN0dXJlSURUYWJs
ZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgIGlmICghbV9maXJzdEZyZWVPZmZzZXQpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bV9jYXBhY2l0eSA8PSBVSU5UX01BWCk7CisgICAgICAgIGlmIChtX3NpemUgPT0gbV9jYXBhY2l0
eSkKKyAgICAgICAgICAgIHJlc2l6ZShtX2NhcGFjaXR5ICogMik7CisgICAgICAgIEFTU0VSVCht
X3NpemUgPCBtX2NhcGFjaXR5KTsKKworICAgICAgICBTdHJ1Y3R1cmVPck9mZnNldCBuZXdFbnRy
eTsKKyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3RydWN0dXJlOworCisgICAgICAgIFN0
cnVjdHVyZUlEIHJlc3VsdCA9IG1fc2l6ZTsKKyAgICAgICAgbV90YWJsZVtyZXN1bHRdID0gbmV3
RW50cnk7CisgICAgICAgIG1fc2l6ZSsrOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIFN0cnVjdHVyZUlEIHJlc3VsdCA9IG1fZmlyc3RGcmVlT2Zmc2V0OworICAgIG1fZmly
c3RGcmVlT2Zmc2V0ID0gbV90YWJsZVttX2ZpcnN0RnJlZU9mZnNldF0ub2Zmc2V0OworICAgIG1f
dGFibGVbcmVzdWx0XS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgcmV0dXJuIHJlc3VsdDsK
KyNlbHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZTsKKyNlbmRpZgorfQorCit2b2lkIFN0cnVjdHVy
ZUlEVGFibGU6OmRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlSUQg
c3RydWN0dXJlSUQpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBSRUxFQVNFX0FTU0VSVCht
X3RhYmxlW3N0cnVjdHVyZUlEXS5zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxl
W3N0cnVjdHVyZUlEXS5vZmZzZXQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJl
ZU9mZnNldCA9IHN0cnVjdHVyZUlEOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJl
KTsKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlSUQpOworI2VuZGlmCit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJ1Y3R1cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0
dXJlSURUYWJsZV9oCisKKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZTsKKworI2lmIFVT
RShKU1ZBTFVFNjQpCit0eXBlZGVmIHVpbnQzMl90IFN0cnVjdHVyZUlEOworI2Vsc2UKK3R5cGVk
ZWYgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRDsKKyNlbmRpZgorCitjbGFzcyBTdHJ1Y3R1cmVJRFRh
YmxlIHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgor
ICAgIFN0cnVjdHVyZUlEVGFibGUoKTsKKyAgICB+U3RydWN0dXJlSURUYWJsZSgpOworCisgICAg
dm9pZCoqIGJhc2UoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqKj4oJm1fdGFibGUp
OyB9CisKKyAgICBTdHJ1Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCk7CisgICAgdm9pZCBkZWFsbG9j
YXRlSUQoU3RydWN0dXJlKiwgU3RydWN0dXJlSUQpOworICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRl
SUQoU3RydWN0dXJlKik7CisKKyAgICB2b2lkIGZsdXNoT2xkVGFibGVzKCk7CisKK3ByaXZhdGU6
CisgICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KTsKKyAgICAKKyAgICB1bmlvbiBT
dHJ1Y3R1cmVPck9mZnNldCB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgICAg
ICBTdHJ1Y3R1cmVJRCBvZmZzZXQ7CisgICAgfTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
c19pbml0aWFsU2l6ZSA9IDI1NjsKKworICAgIFZlY3RvcjxTdHJ1Y3R1cmVPck9mZnNldCo+IG1f
b2xkVGFibGVzOworCisgICAgdWludDMyX3QgbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgU3RydWN0
dXJlT3JPZmZzZXQqIG1fdGFibGU7CisKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBt
X2NhcGFjaXR5OworfTsKKworaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0
KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0
dXJuIG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsKKyNlbHNlCisgICAgcmV0dXJuIHN0
cnVjdHVyZUlEOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
U3RydWN0dXJlSURUYWJsZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsOSBA
QCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCitwcm90ZWN0ZWQ6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRh
bCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2YXRlOgogICAgIGNsYXNzIFdhdGNocG9p
bnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgewogICAgIHB1YmxpYzoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlw
ZS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVkQXJyYXlUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMzQgKzMyLDM3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mb0ZvclR5cGUoVHlw
ZWRBcnJheVR5cGUgdHlwZSkKK0pTVHlwZSB0eXBlRm9yVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJh
eVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIE5vdFR5cGVkQXJy
YXk6Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWRUeXBlOwogICAgIGNhc2UgVHlwZUludDg6
Ci0gICAgICAgIHJldHVybiBKU0ludDhBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gSW50
OEFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgcmV0dXJuIEpTVWludDhB
cnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWludDhBcnJheVR5cGU7CiAgICAgY2FzZSBU
eXBlVWludDhDbGFtcGVkOgotICAgICAgICByZXR1cm4gSlNVaW50OENsYW1wZWRBcnJheTo6aW5m
bygpOworICAgICAgICByZXR1cm4gVWludDhDbGFtcGVkQXJyYXlUeXBlOwogICAgIGNhc2UgVHlw
ZUludDE2OgotICAgICAgICByZXR1cm4gSlNJbnQxNkFycmF5OjppbmZvKCk7CisgICAgICAgIHJl
dHVybiBJbnQxNkFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50MTY6Ci0gICAgICAgIHJldHVy
biBKU1VpbnQxNkFycmF5OjppbmZvKCk7CisgICAgICAgIHJldHVybiBVaW50MTZBcnJheVR5cGU7
CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJldHVybiBKU0ludDMyQXJyYXk6OmluZm8o
KTsKKyAgICAgICAgcmV0dXJuIEludDMyQXJyYXlUeXBlOwogICAgIGNhc2UgVHlwZVVpbnQzMjoK
LSAgICAgICAgcmV0dXJuIEpTVWludDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIFVp
bnQzMkFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVGbG9hdDMyOgotICAgICAgICByZXR1cm4gSlNG
bG9hdDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIEZsb2F0MzJBcnJheVR5cGU7CiAg
ICAgY2FzZSBUeXBlRmxvYXQ2NDoKLSAgICAgICAgcmV0dXJuIEpTRmxvYXQ2NEFycmF5OjppbmZv
KCk7CisgICAgICAgIHJldHVybiBGbG9hdDY0QXJyYXlUeXBlOwogICAgIGNhc2UgVHlwZURhdGFW
aWV3OgotICAgICAgICByZXR1cm4gSlNEYXRhVmlldzo6aW5mbygpOworICAgICAgICByZXR1cm4g
RGF0YVZpZXdUeXBlOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVkVHlwZTsKICAgICB9Ci0gICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKIH0KIAogY29uc3Qg
Q2xhc3NJbmZvKiBjb25zdHJ1Y3RvckNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlw
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5
cGUuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZWRBcnJheVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBUeXBlZEFycmF5VHlwZV9oCiAjZGVmaW5lIFR5cGVkQXJyYXlUeXBlX2gKIAorI2luY2x1ZGUg
IkpTVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTEwMCw4ICsxMDEsOCBAQCBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKFR5cGVkQXJy
YXlUeXBlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oMSkgPDwgbG9nRWxlbWVudFNp
emUodHlwZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvRm9yVHlwZShUeXBlZEFy
cmF5VHlwZSk7CiBjb25zdCBDbGFzc0luZm8qIGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZShU
eXBlZEFycmF5VHlwZSk7CitKU1R5cGUgdHlwZUZvclR5cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlU
eXBlKTsKIAogaW5saW5lIGJvb2wgaXNJbnQoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAkocmV2aXNpb24g
MTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVj
dHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICBX
ZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225214</attachid>
            <date>2014-02-25 19:25:58 -0800</date>
            <delta_ts>2014-02-26 12:06:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20140225192542.patch</filename>
            <type>text/plain</type>
            <size>464990</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2MCBA
QAorMjAxNC0wMi0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBKU0NlbGxzIHN1Y2ggdGhhdCB0aGV5IG5vIGxvbmdlciBoYXZlIGEgZnVsbCA2NC1i
aXQgU3RydWN0dXJlCisgICAgICAgIHBvaW50ZXIgaW4gdGhlaXIgaGVhZGVyLiBJbnN0ZWFkIHRo
ZXkgbm93IGhhdmUgYSAzMi1iaXQgaW5kZXggaW50bworICAgICAgICBhIHBlci1WTSB0YWJsZSBv
ZiBTdHJ1Y3R1cmUgcG9pbnRlcnMuIDMyLWJpdCBwbGF0Zm9ybXMgc3RpbGwgdXNlIG5vcm1hbCBT
dHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZnJlZXMg
dXAgYW4gYWRkaXRpb25hbCAzMiBiaXRzIG9mIGluZm9ybWF0aW9uIGluIG91ciBvYmplY3QgaGVh
ZGVycy4KKyAgICAgICAgV2UgdGhlbiB1c2UgdGhpcyBleHRyYSBzcGFjZSB0byBzdG9yZSB0aGUg
aW5kZXhpbmcgdHlwZSBvZiB0aGUgb2JqZWN0LCB0aGUgSlNUeXBlCisgICAgICAgIG9mIHRoZSBv
YmplY3QsIHNvbWUgdmFyaW91cyB0eXBlIGZsYWdzLCBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRh
dGEgKGUuZy4gbWFyayBiaXQpLgorICAgICAgICBCZWNhdXNlIHRoaXMgaW5saW5lIHR5cGUgaW5m
b3JtYXRpb24gaXMgbm93IGZhc3RlciB0byByZWFkLCBpdCBwYXlzIGZvciB0aGUgc2xvd2Rvd24g
CisgICAgICAgIGluY3VycmVkIGJ5IGhhdmluZyB0byBwZXJmb3JtIGFuIGV4dHJhIGluZGlyZWN0
aW9uIHRocm91Z2ggdGhlIFN0cnVjdHVyZUlEVGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHRocmVhZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgVk0gdGhyb3VnaCBtb3JlIG9m
IHRoZSBDKysgcnVudGltZQorICAgICAgICB0byBvZmZzZXQgdGhlIGNvc3Qgb2YgaGF2aW5nIHRv
IGxvb2sgdXAgdGhlIFZNIHRvIGdldCB0aGUgYWN0dWFsIFN0cnVjdHVyZSBwb2ludGVyLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldEV4Y2Vw
dGlvbjpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHdyYXBwZXJGb3JPYmpDT2JqZWN0Ol0pOgor
ICAgICAgICAoLVtKU0NvbnRleHQgd3JhcHBlckZvckpTT2JqZWN0Ol0pOgorICAgICAgICAqIEFQ
SS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZWxlYXNlKToKKyAg
ICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChj
b250YWluZXJWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5j
aDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hTdHJ1Y3R1cmVQdHIpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9TdHJpbmdPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0NlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25Q
ZWVwaG9sZUNvbXBhcmVOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RU
b09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3Qu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVUcnV0aHlPYmplY3QpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjppc0FycmF5VHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omhhc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzVHlw
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9iamVjdCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRNYXJrQnl0ZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU4KToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVCYXJyaWVy
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0dXJl
SURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6aW50ZXJuYWxBcHBlbmQpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRf
b2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNo
ZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YnJhbmNoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6YnJhbmNo
U3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
c3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
bmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
cV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdH
ZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja01hcmtXb3JkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nl
c3MpOgorICAgICAgICAoSlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OndyaXRlQmFycmllcik6
CisgICAgICAgIChKU0M6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkUHV0QnlJZExpc3QpOgor
ICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNh
bGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1
dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChK
U0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3Mp
OgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0
dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aXNGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6
CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKToKKyAgICAgICAg
KiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
VGhpcyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmNsZWFyU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptYXJr
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnY0RhdGFPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGUpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjppc1Byb3h5KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OndyaXRlQmFycmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGFibGVPYmplY3RTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dmlzaXRCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5k
ZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVhZHlFeGlzdHMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpZGVkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxDb250aWd1
b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29u
dGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdl
U2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNB
bmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNl
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcmlt
aXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2VhbCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291
bnRFbGVtZW50cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0
aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnB1dERlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldElu
ZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldERpcmVjdEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3pl
bik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5
U3RvcmFnZU9yTnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmN1cnJlbnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0ds
b2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmFzdEdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0
U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6
CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9y
dGFsKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Onplcm9lZEdDRGF0YU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmlu
Z0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpub3JtYWxpemVQcm90b3R5cGVDaGFp
bkZvckNoYWluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjppZEJsb2IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om9iamVjdEluaXRp
YWxpemF0aW9uRmllbGRzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6On5T
dHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRUYWJsZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmJh
c2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZUZvclR5cGVkQXJyYXlUeXBlKToKKyAgICAgICAgKiBydW50
aW1lL1R5cGVkQXJyYXlUeXBlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgor
CiAyMDE0LTAyLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
QVJNNjQgcnNoaWZ0NjQgc2hvdWxkIGJlIGFuIGFyaXRobWV0aWMgc2hpZnQKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDcyLDYgKzQ3
Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9TdHJpbmdSZWN1
cnNpb25DaGVja2VyLmNwcAogICAgIHJ1bnRpbWUvU3RydWN0dXJlLmNwcAogICAgIHJ1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uY3BwCisgICAgcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAogICAg
IHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCiAgICAgcnVudGltZS9TeW1ib2xUYWJsZS5j
cHAKICAgICBydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTIy
OCw2ICsxMjI4LDkgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEQmxvYi5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dC5tbQkocmV2aXNpb24gMTY0NjU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEwMyw2ICsxMDMsNyBAQCAtIChKU1ZhbHVlICopZXZhbHVhdGVTY3JpcHQ6KE5TU3Ry
aW5nICopCiAKIC0gKHZvaWQpc2V0RXhjZXB0aW9uOihKU1ZhbHVlICopdmFsdWUKIHsKKyAgICBK
U0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhtX2NvbnRleHQpKTsKICAgICBpZiAodmFs
dWUpCiAgICAgICAgIG1fZXhjZXB0aW9uLnNldCh0b0pTKG1fY29udGV4dCktPnZtKCksIHRvSlMo
SlNWYWx1ZVRvT2JqZWN0KG1fY29udGV4dCwgdmFsdWVJbnRlcm5hbFZhbHVlKHZhbHVlKSwgMCkp
KTsKICAgICBlbHNlCkBAIC0yNzAsMTQgKzI3MSwxMyBAQCAtICh2b2lkKWVuZENhbGxiYWNrV2l0
aERhdGE6KENhbGxiYWNrRGF0CiAKIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqQ09iamVjdDoo
aWQpb2JqZWN0CiB7Ci0gICAgLy8gTG9jayBhY2Nlc3MgdG8gbV93cmFwcGVyTWFwCi0gICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayh0b0pTKG1fY29udGV4dCkpOworICAgIEpTQzo6QVBJRW50cnlT
aGltIGVudHJ5U2hpbSh0b0pTKG1fY29udGV4dCkpOwogICAgIHJldHVybiBbbV93cmFwcGVyTWFw
IGpzV3JhcHBlckZvck9iamVjdDpvYmplY3RdOwogfQogCiAtIChKU1ZhbHVlICopd3JhcHBlckZv
ckpTT2JqZWN0OihKU1ZhbHVlUmVmKXZhbHVlCiB7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9j
ayh0b0pTKG1fY29udGV4dCkpOworICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pT
KG1fY29udGV4dCkpOwogICAgIHJldHVybiBbbV93cmFwcGVyTWFwIG9iamNXcmFwcGVyRm9ySlNW
YWx1ZVJlZjp2YWx1ZV07CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTYgKzY3LDEwIEBA
IEpTQ29udGV4dEdyb3VwUmVmIEpTQ29udGV4dEdyb3VwUmV0YWluKEoKIAogdm9pZCBKU0NvbnRl
eHRHcm91cFJlbGVhc2UoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXApCiB7Ci0gICAgSWRlbnRpZmll
clRhYmxlKiBzYXZlZElkZW50aWZpZXJUYWJsZTsKICAgICBWTSYgdm0gPSAqdG9KUyhncm91cCk7
CiAKLSAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICAgICAgc2F2ZWRJ
ZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJs
ZSh2bS5pZGVudGlmaWVyVGFibGUpOwotICAgICAgICB2bS5kZXJlZigpOwotICAgIH0KLQotICAg
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKHNhdmVkSWRlbnRpZmll
clRhYmxlKTsKKyAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKCZ2bSk7CisgICAgdm0uZGVyZWYo
KTsKIH0KIAogc3RhdGljIGJvb2wgaW50ZXJuYWxTY3JpcHRUaW1lb3V0Q2FsbGJhY2soRXhlY1N0
YXRlKiBleGVjLCB2b2lkKiBjYWxsYmFja1B0ciwgdm9pZCogY2FsbGJhY2tEYXRhKQpAQCAtMTY0
LDcgKzE1OCw3IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShKU0dsb2JhbENvbnQKICAg
ICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRlbnRpZmllclRhYmxlOwogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IHRvSlMoY3R4KTsKICAgICB7Ci0gICAgICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMp
OworICAgICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwogCiAgICAgICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIHNhdmVkSWRlbnRpZmllclRhYmxlID0gd3RmVGhyZWFk
RGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUodm0uaWRlbnRpZmllclRhYmxlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAx
NjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTA3LDEwICs1MDcsMTEgQEAgYm9vbCBKU09iamVjdERlbGV0ZVByaXZh
dGVQcm9wZXJ0eShKU0NvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBKU09iamVjdElz
RnVuY3Rpb24oSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3QpCitib29sIEpTT2JqZWN0
SXNGdW5jdGlvbihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAg
aWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBBUElFbnRyeVNoaW0gZW50
cnlTaGltKHRvSlMoY3R4KSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgSlNDZWxsKiBj
ZWxsID0gdG9KUyhvYmplY3QpOwogICAgIHJldHVybiBjZWxsLT5tZXRob2RUYWJsZSgpLT5nZXRD
YWxsRGF0YShjZWxsLCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lOwpAQCAtNjA2LDEyICs2MDcs
MTIgQEAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIEpTT2Jq
ZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pT
KGN0eCk7CiAgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgIFZNKiB2bSA9
ICZleGVjLT52bSgpOwogCisgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwog
ICAgIEpTUHJvcGVydHlOYW1lQXJyYXlSZWYgcHJvcGVydHlOYW1lcyA9IG5ldyBPcGFxdWVKU1By
b3BlcnR5TmFtZUFycmF5KHZtKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBhcnJheSh2bSk7CiAg
ICAganNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMoanNPYmplY3QsIGV4
ZWMsIGFycmF5LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0JKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjk4LDYgKzY5OCw4IEBA
IHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0KEpTR2xvYmEKICAgICAgICAgICAgIEFT
U0VSVChbY3VycmVudC5vYmpjIGlzS2luZE9mQ2xhc3M6W05TTXV0YWJsZURpY3Rpb25hcnkgY2xh
c3NdXSk7CiAgICAgICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gKE5T
TXV0YWJsZURpY3Rpb25hcnkgKiljdXJyZW50Lm9iamM7CiAKKyAgICAgICAgICAgIEpTQzo6QVBJ
RW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKGNvbnRleHQpKTsKKwogICAgICAgICAgICAgSlNQcm9w
ZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5hbWVBcnJheSA9IEpTT2JqZWN0Q29weVByb3BlcnR5
TmFtZXMoY29udGV4dCwganMpOwogICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IEpTUHJvcGVy
dHlOYW1lQXJyYXlHZXRDb3VudChwcm9wZXJ0eU5hbWVBcnJheSk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQkod29ya2luZyBjb3B5KQpA
QCAtNjI1LDYgKzYyNSw3IEBAIGlkIHRyeVVud3JhcE9iamNPYmplY3QoSlNHbG9iYWxDb250ZXh0
UmUKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNPYmplY3RSZWYgb2JqZWN0
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBBU1NF
UlQoIWV4Y2VwdGlvbik7CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29u
dGV4dCkpOwogICAgIGlmICh0b0pTKG9iamVjdCktPmluaGVyaXRzKEpTQzo6SlNDYWxsYmFja09i
amVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46OmluZm8oKSkpCiAgICAgICAgIHJldHVybiAo
aWQpSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QqPih0b0pTKG9iamVjdCkpLT53
cmFwcGVkT2JqZWN0KCk7CiAgICAgaWYgKGlkIHRhcmdldCA9IHRyeVVud3JhcENvbnN0cnVjdG9y
KG9iamVjdCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJl
dmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcxOCw2ICs3
MTgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdSZWN1cnNp
b25DaGVja2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3Ry
dWN0dXJlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0
dXJlQ2hhaW4uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVJRFRhYmxlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RydWN0dXJlUmFyZURhdGEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTeW1ib2xUYWJsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFRlc3RSdW5uZXJVdGlscy5jcHAiIC8+CkBAIC0xNDA2LDYgKzE0MDcsOCBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdSZWN1cnNpb25DaGVja2VyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5oIiAvPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJREJsb2IuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURUYWJsZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YUlu
bGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlLmgiIC8+CkBAIC0xNDY4LDQgKzE0NzEsNCBAQAogICA8SW1wb3J0R3Jv
dXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1Rh
cmdldHNQYXRoKVxCdWlsZEN1c3RvbWl6YXRpb25zXG1hc20udGFyZ2V0cyIgLz4KICAgPC9JbXBv
cnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2pl
Y3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTc5NSw2ICs3OTUsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxTdHJ1Y3R1cmVDaGFpbi5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0
cnVjdHVyZUlEVGFibGUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTeW1ib2xU
YWJsZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+CkBAIC0yNDI5LDkgKzI0MzIsMTggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcU3RydWN0dXJlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVy
ZUlEQmxvYmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmgi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEQmxvYi5oIj4KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxlLmgiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMzM0MCw0ICszMzUyLDQg
QEAKICAgPEl0ZW1Hcm91cD4KICAgICA8TUFTTSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWls
ZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcTG93TGV2ZWxJbnRlcnByZXRlcldpbi5hc20iIC8+CiAgIDwvSXRlbUdyb3VwPgotPC9Q
cm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNzczLDEyICs3NzMsMTUgQEAKIAkJMkE2ODI5NUIxODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBNjgyOTVBMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3JpdGVCYXJy
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkE2RjQ2MjYxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5
OCAvKiBIZWFwT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMkE3QTU4RUYxODA4QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE3QTU4RUUxODA4
QTRDNDAwMjBCREY3IC8qIERlZmVyR0MuY3BwICovOyB9OworCQkyQUFBQTMxMjE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURC
bG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MkFBRDk2NEExODU2OTQxNzAwMUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBRDk2NDkxODU2
OTQxNzAwMUY5M0JFIC8qIFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oICovOyB9OwogCQkyQUM5
MjJCQjE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQzkyMkI5MThBMTYxODIw
MDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3BwICovOyB9OwogCQkyQUM5MjJCQzE4
QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUM5MjJCQTE4QTE2MTgyMDAzQ0UwRkIg
LyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi87IH07CiAJCTJBQ0NGM0RFMTg1RkUyNkIwMDgz
RTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFDQ0YzREMxODVGRTI2QjAwODNFMkFEIC8q
IERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAgKi87IH07CiAJCTJBQ0NGM0RGMTg1RkUy
NkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQ0NGM0REMTg1RkUyNkIwMDgzRTJB
RCAvKiBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaCAqLzsgfTsKIAkJMkFEODkzMkIxN0Uz
ODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhl
YXBJdGVyYXRpb25TY29wZS5oICovOyB9OworCQkyQUY3MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyog
U3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyQUY3MzgyQTE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5j
cHAgKi87IH07CisJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUY3Mzgy
QjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTM3MUQ4NDJEMTdDOThCNkUwMEVDRjk5
NCAvKiBsaWJ6LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi87IH07CiAJ
CTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRlQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDIxMjAyMjkwQUQ0MzEwQzAwRUQ3
OUI2IC8qIERhdGVDb252ZXJzaW9uLmggKi87IH07CiAJCTQ0NDNBRTMzMTZFMTg4RDkwMDc2RjEx
MCAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjBFQjYxMDVDODZDNkIwMEU2REYxQiAvKiBGb3VuZGF0aW9u
LmZyYW1ld29yayAqLzsgfTsKQEAgLTIyMTQsMTIgKzIyMTcsMTUgQEAKIAkJMkE2ODI5NUExODc1
RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0
dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlE
QmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFEOTY0OTE4NTY5NDE3MDAx
RjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlY3Vyc2l2ZUFsbG9jYXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyQUM5MjJCOTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xp
bmVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZUTERXQVJG
RGVidWdMaW5lSW5mby5jcHA7IHBhdGggPSBmdGwvRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFDOTIyQkExOEExNjE4MjAwM0NFMEZCIC8q
IEZUTERXQVJGRGVidWdMaW5lSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGVExEV0FSRkRlYnVnTGluZUluZm8uaDsgcGF0aCA9IGZ0bC9GVExEV0FSRkRlYnVnTGluZUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFDQ0YzREMxODVGRTI2QjAwODNF
MkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBwYXRo
ID0gZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJBQ0NGM0REMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJpZXJF
bGlzaW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU3RvcmVC
YXJyaWVyRWxpc2lvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBo
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBRDg5MzI5MTdFMzg2OEYwMDY2
ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSGVhcEl0ZXJhdGlvblNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3Ry
dWN0dXJlSURUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1
cmVJRFRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUQ4NDJDMTdDOThC
NkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJ6LmR5
bGliOyBwYXRoID0gdXNyL2xpYi9saWJ6LmR5bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
IAkJNDQ5MDk3RUUwRjhGODFCNTAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NTE1MzlCODEyREM5OTQ1MDBFRjdBQzQgLyog
WWFyci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyLmg7IHBhdGggPSB5
YXJyL1lhcnIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3NTcsNiArMzc2Myw4
IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyQUY3MzgyQTE4QkJCRjkyMDA4QTVB
MzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8sCisJCQkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFy
Z0xpc3QuaCAqLywKIAkJCQlCQzI1N0RFNTBFMUY1MUM1MDAxNkI2QzkgLyogQXJndW1lbnRzLmNw
cCAqLywKQEAgLTQxNDAsNiArNDE0OCw3IEBACiAJCQkJMTQyMEJFN0ExMEFBNkREQjAwRjQ1NUQy
IC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQlBN0RDQjc3OTEyRTNEOTA1MDA5MTE5NDAgLyogV3Jp
dGVCYXJyaWVyLmggKi8sCiAJCQkJQzJCNkQ3NTIxOEEzMzc5MzAwNEE5MzAxIC8qIFdyaXRlQmFy
cmllcklubGluZXMuaCAqLywKKwkJCQkyQUFBQTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0
dXJlSURCbG9iLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtNDgzMCw2ICs0ODM5LDcgQEAKIAkJCQkwRjZCMUNCOTE4NjEyNDRD
MDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMx
MTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUMwMjg1RDE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdE
T3Bjb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjgzMzVCODE2MzlDMUVBMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODQzLDYgKzQ4NTMs
NyBAQAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2ZpbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYwIC8qIEFycmF5
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjdGMzk2MTVF
RDhFNDYwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhD
QjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3Rh
bnRQb29sLmggaW4gSGVhZGVycyAqLywKQEAgLTYyODIsNiArNjI5Myw3IEBACiAJCQkJQTVDRUVF
MTQxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAvKiBJbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQUY3MzgyQzE4QkJC
RjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NUZEMDA4MTE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1NjgzMzUwMDJFRDY5
MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDM0LDcgKzQzNCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMyOgogICAgIC8v
Ci0gICAgLy8gQSBEYXRhTGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxvY2F0aW9uIGlu
IHRoZSBjb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBEYXRhTGFiZWwz
MiBpcyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29udGFpbmluZyBh
IDMyLWJpdCBjb25zdGFudCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhlIGNvZGUgaGFz
IGJlZW4gZ2VuZXJhdGVkLgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAgICAgdGVtcGxh
dGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTY0NjU0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoYnJhbmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5p
dGlhbFJpZ2h0VmFsdWUpKTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBE
YXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBU
cnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChicmFu
Y2gzMldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKSk7
CisgICAgfQorCiAjaWYgIUNQVShBUk1fVFJBRElUSU9OQUwpCiAgICAgUGF0Y2hhYmxlSnVtcCBw
YXRjaGFibGVKdW1wKCkKICAgICB7CkBAIC0zODEsNiArMzg2LDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7
CiAgICAgfQorCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7
CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIGFkZHJlc3MsIGlt
bSkpOworICAgIH0KICNlbmRpZgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAx
NjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyMCw2ICsyMjIwLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1
c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAg
ICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7CisgICAgICAgIG1vdmVXaXRoUGF0
Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFs
aWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdo
dCA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxl
ID0gdHJ1ZTsKQEAgLTIyNTIsNiArMjI1OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQ
YXRjaGFibGVKdW1wKHJlc3VsdCk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVl
ID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9
IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzJXaXRoUGF0Y2goY29uZCwgbGVm
dCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSk7CisgICAgICAgIG1fbWFrZUp1bXBQYXRj
aGFibGUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKKyAg
ICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQogICAgIHsKICAgICAgICAg
bV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0yMzIyLDYgKzIzMzcsNyBAQCBwdWJsaWM6
CiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpIHsgcmV0dXJuIGdl
dENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsgfQogCiAgICAgc3RhdGlj
IGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9j
YXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRp
b25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtMjMzNCw2ICsyMzUwLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgfQogICAgIAorICAg
IHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0
Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAgeworICAgICAgICBVTlJF
QUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVs
KCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRv
QnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJl
Z2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIHJlZW1pdEluaXRp
YWxNb3ZlV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGluaXRpYWxW
YWx1ZSk7CkBAIC0yMzQ0LDYgKzIzNjYsMTEgQEAgcHVibGljOgogICAgICAgICBVTlJFQUNIQUJM
RV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVw
bGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsLCBB
ZGRyZXNzLCBpbnQzMl90KQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSBKdW1wIG1ha2VCcmFu
Y2goQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5o
CShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAg
fQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIHN0b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVz
cykKICAgICB7CiAgICAgICAgIHN0b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7
CkBAIC03NzAsNiArNzc1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRhdGFUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsK
KyAgICB9CisgICAgCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXgg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRk
cmVzcykpOwpAQCAtMTcyNiw2ICsxNzM3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
IH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWws
IFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7
CisgICAgICAgIGxvYWQzMihsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZGF0
YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFi
bGVCcmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0
ZWRJbW1QdHIgcmlnaHQgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAgICAgbV9tYWtl
SnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0xNzU4LDYgKzE3NzYsMTQgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJs
ZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0
aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1
bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0aFBh
dGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAgICBt
X21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1w
KHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAg
ICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CkBAIC0xNzk2LDYgKzE4MjIsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0aWMgYm9vbCBj
YW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJyYW5jaFB0cldp
dGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVsKQogICAgIHsK
QEAgLTE4MTksMTEgKzE4NDYsMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ29kZUxvY2F0
aW9uTGFiZWwoKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0
YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRh
TGFiZWwzMikKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAg
ICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2go
Q29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIHZvaWQqKQogICAgIHsKICAgICAgICAgVU5SRUFD
SEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJl
bCwgQWRkcmVzcywgaW50MzJfdCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworICAgIH0KKwogI2lmIFVTRShNQVNNX1BST0JFKQogICAgIHN0cnVjdCBDUFVTdGF0
ZSB7CiAgICAgICAgICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2LmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDYgKzI1
NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZD
b25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxh
YmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisg
ICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2VtYmxlci5jbXBs
X2ltX2ZvcmNlMzIoaW5pdGlhbFJpZ2h0VmFsdWUubV92YWx1ZSwgbGVmdC5vZmZzZXQsIGxlZnQu
YmFzZSk7CisgICAgICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICBy
ZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQor
CiAgICAgRGF0YUxhYmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIgaW5pdGlh
bFZhbHVlLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIHBhZEJlZm9y
ZVBhdGNoKCk7CkBAIC0yNzcsNiArMjg1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRp
YyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgc3RhdGljIENvZGVMb2Nh
dGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlv
bkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC0yOTksNiArMzA4LDE3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMpOwogICAgIH0K
ICAgICAKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAg
IHsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50
IG1vZFJNQnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgb2Zmc2V0Qnl0ZXMgPSAwOworICAg
ICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAgICBjb25zdCBpbnQgdG90
YWxCeXRlcyA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlcyArIG9mZnNldEJ5dGVzICsgaW1tZWRp
YXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVu
dFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVz
KTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9C
cmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVn
aXN0ZXJJRCByZWcsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIFg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaXJfZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1
dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSks
IHJlZyk7CkBAIC0zMTAsNiArMzMwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgWDg2QXNzZW1ibGVy
OjpyZXZlcnRKdW1wVG9fY21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgMCwg
YWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFj
ZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3Ry
dWN0aW9uU3RhcnQsIEFkZHJlc3MgYWRkcmVzcywgaW50MzJfdCBpbml0aWFsVmFsdWUpCisgICAg
eworICAgICAgICBBU1NFUlQoIWFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgWDg2QXNzZW1ibGVy
OjpyZXZlcnRKdW1wVG9fY21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgaW5pdGlhbFZhbHVlLCAwLCBhZGRyZXNzLmJhc2UpOworICAgIH0KKwogI2lm
IFVTRShNQVNNX1BST0JFKQogICAgIC8vIEZvciBkZXRhaWxzIGFib3V0IHByb2JlKCksIHNlZSBj
b21tZW50IGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmguCiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1
bmN0aW9uLCB2b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3JhdGNoUmVn
aXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGltbSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CisK
KyAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzb3VyY2UsIHZvaWQqIGFkZHJlc3MpCisgICAg
eworICAgICAgICBpZiAoc291cmNlID09IFg4NlJlZ2lzdGVyczo6ZWF4KQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIHN0b3JlMzIoc291cmNlLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICB9CisgICAg
fQogICAgIAogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3Mp
CiAgICAgewpAQCAtNjI3LDYgKzYzNywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBEYXRh
TGFiZWxQdHIodGhpcyk7CiAgICAgfQogCisgICAgRGF0YUxhYmVsUHRyIG1vdmVXaXRoUGF0Y2go
VHJ1c3RlZEltbTMyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cV9pNjRyKGluaXRp
YWxWYWx1ZS5tX3ZhbHVlLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIERhdGFMYWJlbFB0cih0aGlz
KTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFiZWwsIFRydXN0
ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAg
ICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgc2NyYXRj
aFJlZ2lzdGVyKTsKQEAgLTYzOSw2ICs2NTYsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUg
PSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFJpZ2h0VmFsdWUubV92YWx1ZSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7Cisg
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworICAg
IH0KKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGlu
aXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRh
TGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxWYWx1ZSwgc2NyYXRjaFJlZ2lz
dGVyKTsKQEAgLTY4Nyw2ICs3MTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZ2lzdGVySUQg
c2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBzY3JhdGNoUmVnaXN0ZXI7IH0K
IAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBh
dGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0
Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgc3Rh
dGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVy
KENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC02OTgsMTYgKzcyNCwz
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5
dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZC
cmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwp
CisgICAgeworICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOworICAgICAgICBjb25zdCBp
bnQgb3Bjb2RlQnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMgPSA0
OworICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXMg
KyBpbW1lZGlhdGVCeXRlczsKKyAgICAgICAgQVNTRVJUKHRvdGFsQnl0ZXMgPj0gbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoLXRv
dGFsQnl0ZXMpOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3Rh
cnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRh
TGFiZWxQdHIgbGFiZWwpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhcnRPZkJyYW5jaFB0cldp
dGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRp
b25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxv
Y2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4gc3RhcnRPZkJy
YW5jaDMyV2l0aFBhdGNoT25SZWdpc3RlcihsYWJlbCk7CisgICAgfQogICAgIAogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZvaWQqIGluaXRp
YWxWYWx1ZSkKICAgICB7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFf
aTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisg
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCBpbnQz
Ml90IGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVt
cFRvX21vdmxfaTMycihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGluaXRp
YWxWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBp
bnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewog
ICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rpb25T
dGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0
aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTcsNiArMTU3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVz
cyhsYWJlbCk7CiAgICAgfQorCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwz
MiBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZlBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVsKTsKKyAgICB9CiAgICAgCiAg
ICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewpAQCAtMTc2LDYgKzE4MSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCBhZGRyZXNz
LCB2YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgdmFsdWUpCisgICAgewor
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCBhZGRyZXNzLCB2YWx1ZSk7CisgICAg
fQorCiBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAjaWYgRU5BQkxFKEFT
U0VNQkxFUl9XWF9FWENMVVNJVkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
MzAsNyArMTMzMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5
dGVPcDgoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpOwogICAg
IH0KLSAgICAKKwogICAgIHZvaWQgbW92d19ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CkBAIC0yMDU0LDkgKzIw
NTQsOSBAQCBwdWJsaWM6CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMgdm9pZCByZXZlcnRK
dW1wVG9fbW92cV9pNjRyKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIGludDY0X3QgaW1tLCBSZWdp
c3RlcklEIGRzdCkKICAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSA9IDEwOyAvLyBSRVguVyBNT1YgSU1NNjQKICAgICAgICAgY29uc3QgaW50IHJleEJ5dGVzID0g
MTsKICAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKLSAgICAgICAgQVNTRVJUKHJl
eEJ5dGVzICsgb3Bjb2RlQnl0ZXMgPD0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKICAgICAg
ICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5zdHJ1Y3Rpb25T
dGFydCk7CiAgICAgICAgIHB0clswXSA9IFBSRV9SRVggfCAoMSA8PCAzKSB8IChkc3QgPj4gMyk7
CiAgICAgICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiB8IChkc3QgJiA3KTsKQEAgLTIwNjYsMTEg
KzIwNjYsMzMgQEAgcHVibGljOgogICAgICAgICAgICAgdWludDhfdCBhc0J5dGVzWzhdOwogICAg
ICAgICB9IHU7CiAgICAgICAgIHUuYXNXb3JkID0gaW1tOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzOyBpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
cmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IGluc3RydWN0aW9uU2l6ZTsgKytpKQorICAgICAg
ICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5dGVzXTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9fbW92bF9pMzJyKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAg
IC8vIFdlIG9ubHkgcmV2ZXJ0IGp1bXBzIG9uIGlubGluZSBjYWNoZXMsIGFuZCBpbmxpbmUgY2Fj
aGVzIGFsd2F5cyB1c2UgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgKHIxMSkuCisgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGUgYWJvdmUgaXMgZXZlciBmYWxzZSB0aGVuIHdlIG5lZWQgdG8gbWFrZSB0aGlz
IHNtYXJ0ZXIgd2l0aCByZXNwZWN0IHRvIGVtaXR0aW5nIAorICAgICAgICAvLyB0aGUgUkVYIGJ5
dGUuCisgICAgICAgIEFTU0VSVChkc3QgPT0gWDg2UmVnaXN0ZXJzOjpyMTEpOworICAgICAgICBj
b25zdCBpbnQgaW5zdHJ1Y3Rpb25TaXplID0gNjsgLy8gUkVYIE1PViBJTU0zMgorICAgICAgICBj
b25zdCBpbnQgcmV4Qnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAx
OworICAgICAgICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0
cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgcHRyWzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7Cisg
ICAgICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiB8IChkc3QgJiA3KTsKKyAgICAgICAgCisgICAg
ICAgIHVuaW9uIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGFzV29yZDsKKyAgICAgICAgICAgIHVp
bnQ4X3QgYXNCeXRlc1s0XTsKKyAgICAgICAgfSB1OworICAgICAgICB1LmFzV29yZCA9IGltbTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IGlu
c3RydWN0aW9uU2l6ZTsgKytpKQogICAgICAgICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSBy
ZXhCeXRlcyAtIG9wY29kZUJ5dGVzXTsKICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIHN0YXRp
YyB2b2lkIHJldmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCwgaW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgY29uc3QgaW50
IG9wY29kZUJ5dGVzID0gMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BcnJheVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcs
MjQgKzc3LDI1IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mIG91dCwgQXIKIAog
dm9pZCBBcnJheVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJy
ZW50SklUTG9ja2VyJiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgaWYgKCFtX2xhc3RT
ZWVuU3RydWN0dXJlKQorICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZUlEKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0
cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3Ry
dWN0dXJlID0gY29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0
U2VlblN0cnVjdHVyZUlEKTsKKyAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1vZGVG
cm9tU3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVy
Zm9ybUZpcnN0UnVuUHJ1bmluZwogICAgICAgICAmJiBoYXNUd29Pck1vcmVCaXRzU2V0KG1fb2Jz
ZXJ2ZWRBcnJheU1vZGVzKSkgewotICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyA9IGFycmF5
TW9kZUZyb21TdHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgICAgIG1fb2JzZXJ2
ZWRBcnJheU1vZGVzID0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7
CiAgICAgICAgIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA9IHRydWU7CiAgICAgfQogICAg
IAogICAgIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHw9Ci0gICAgICAgIG1fbGFzdFNl
ZW5TdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpOworICAgICAgICBsYXN0U2VlblN0cnVjdHVyZS0+
dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKQotICAgICAgICAmJiAhZ2xvYmFsT2Jq
ZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKSkK
KyAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVu
U3RydWN0dXJlKQorICAgICAgICAmJiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJh
eVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSkpCiAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJy
YXlTdHJ1Y3R1cmVzID0gZmFsc2U7Ci0gICAgbV9sYXN0U2VlblN0cnVjdHVyZSA9IDA7CisgICAg
bV9sYXN0U2VlblN0cnVjdHVyZUlEID0gMDsKIH0KIAogQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJy
aWVmRGVzY3JpcHRpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
QXJyYXlQcm9maWxlLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3
IEBAIGNsYXNzIEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6CiAgICAgQXJyYXlQcm9maWxlKCkKICAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSkKLSAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9sYXN0
U2VlblN0cnVjdHVyZUlEKDApCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShmYWxzZSkKICAg
ICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKGZhbHNlKQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBBcnJheVByb2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIDogbV9ieXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCkKLSAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJl
KDApCisgICAgICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZUlEKDApCiAgICAgICAgICwgbV9tYXlT
dG9yZVRvSG9sZShmYWxzZSkKICAgICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAg
ICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQpAQCAtMTU5LDE0ICsxNTks
MTQgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIAotICAgIFN0cnVjdHVyZSoqIGFkZHJl
c3NPZkxhc3RTZWVuU3RydWN0dXJlKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmU7IH0K
KyAgICBTdHJ1Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJu
ICZtX2xhc3RTZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJh
eU1vZGVzKCkgeyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRk
cmVzc09mTWF5U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQogICAg
IGJvb2wqIGFkZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0K
ICAgICAKICAgICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgICAgICBt
X2xhc3RTZWVuU3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXIm
LCBDb2RlQmxvY2sqKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3Ry
dWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCiAgICAgdW5zaWdu
ZWQgbV9ieXRlY29kZU9mZnNldDsKLSAgICBTdHJ1Y3R1cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7
CisgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEOwogICAgIGJvb2wgbV9tYXlT
dG9yZVRvSG9sZTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0
ZSBvdGhlciBzcGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkg
YWNjZXNzLCBhcyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRs
eSBoYXZlIGJhc2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2Yg
QXJyYXlTdG9yYWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQg
aXRzIG5hbWUgaW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHM7CiAgICAgYm9vbCBtX21h
eUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2
ICs2NjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb25zdGFudEJ1ZmZlckFzVmVjdG9y
KGluZGV4KS5kYXRhKCk7CiAgICAgfQogCisgICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJu
IG1faGVhcDsgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBt
X2dsb2JhbE9iamVjdC5nZXQoKTsgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dEZvcihDb2RlT3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1v
cnRhbCB8IEpTQ2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogfTsKQEAgLTU3OSw3ICs1NzksNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbiwK
ICAgICAgICAgR2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZwogICAgIH07Ci0gICAgdmlydHVhbCB2
b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvckRldGFjaCk7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZv
ckRldGFjaCk7CiAKICAgICBCcmVha3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50LCB1
bnNpZ25lZCYgYWN0dWFsTGluZSwgdW5zaWduZWQmIGFjdHVhbENvbHVtbik7CiAgICAgdm9pZCBy
ZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnRJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDcgKzUzLDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhK
U0FycmF5QnVmZmVyVmlld19sZW5ndGgpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19t
b2RlKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSBcCi0gICAgbWFjcm8o
SlNDZWxsX3N0cnVjdHVyZSkgXAorICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmVJRCkgXAorICAg
IG1hY3JvKEpTQ2VsbF9pbmRleGluZ1R5cGUpIFwKKyAgICBtYWNybyhKU0NlbGxfdHlwZUluZm9G
bGFncykgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb1R5cGUpIFwKICAgICBtYWNybyhKU0Z1
bmN0aW9uX2V4ZWN1dGFibGUpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlQ2hhaW4pIFwK
ICAgICBtYWNybyhKU09iamVjdF9idXR0ZXJmbHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShy
ZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDIzICsxMjAsMTQgQEAg
cHJvdGVjdGVkOgogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRleGlu
Z1R5cGVKdW1wLmZpbGwoCi0gICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdl
YWtQdHIoCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAg
ICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUp
KTsKKyAgICAgICAgICAgICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1
Y3R1cmUgYmVjYXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAg
Ly8gdGVtcG9yYXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBF
aXRoZXIgd2F5IHdlJ3JlIHRhbGtpbmcKLSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAg
ICAgICAgICAgIGppdC0+bV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0
cnVjdHVyZUdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNr
IHRoYXQgd2UgaGF2ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRv
IGdldC4KICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1
bGF0aW9uIGNoZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBi
eXRlY29kZSBvcGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJl
aW5nIHJlZXhlY3V0ZWQuCiAgICAgICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlp
ZmljYXRpb24gaXMgbm90IHVzZXItdmlzaWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQubG9h
ZDgoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7Cisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6
OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9i
YWRJbmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBT
bG93Rm9yVW53YW50ZWRBcnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICB2ZXJzaW9ucyBvZiB0aG9zZSBub2Rl
cyB0aGF0IGJhY2t3YXJkLWV4aXQgaW5zdGVhZCwgYnV0IEknbSBub3QgY29udmluY2VkCiAgICAg
Ly8gICBvZiB0aGUgc291bmRuZXNzLgogICAgIC8vCi0gICAgLy8gLSBTb21lIG5vZGVzIGxpZSwg
YW5kIGNsYWltIHRoYXQgdGhleSBkbyBub3QgcmVhZCB0aGUgSlNDZWxsX3N0cnVjdHVyZS4KKyAg
ICAvLyAtIFNvbWUgbm9kZXMgbGllLCBhbmQgY2xhaW0gdGhhdCB0aGV5IGRvIG5vdCByZWFkIHRo
ZSBKU0NlbGxfc3RydWN0dXJlSUQsIEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBldGMuCiAgICAgLy8g
ICBUaGVzZSBhcmUgbm9kZXMgdGhhdCB1c2UgdGhlIHN0cnVjdHVyZSBpbiBhIHdheSB0aGF0IGRv
ZXMgbm90IGRlcGVuZCBvbgogICAgIC8vICAgdGhpbmdzIHRoYXQgY2hhbmdlIHVuZGVyIHN0cnVj
dHVyZSB0cmFuc2l0aW9ucy4KICAgICAvLwpAQCAtNzksNyArNzksNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICBzbWFsbCBoYWNraW5nLgogICAg
IAogICAgIGlmIChlZGdlc1VzZVN0cnVjdHVyZShncmFwaCwgbm9kZSkpCi0gICAgICAgIHJlYWQo
SlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAg
ICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CkBAIC00
MTIsMTkgKzQxMiwzMCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBTdHJ1Y3R1cmVU
cmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICBjYXNlIEluc3RhbmNlT2Y6CisgICAgICAgIHJlYWQo
SlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBDaGVja0Fy
cmF5OgorICAgICAgICByZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICByZWFkKEpT
Q2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Cisg
ICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKLSAgICBjYXNlIElu
c3RhbmNlT2Y6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQo
SlNDZWxsX3R5cGVJbmZvRmxhZ3MpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBDaGVja0V4ZWN1dGFibGU6CiAgICAgICAgIHJlYWQoSlNGdW5jdGlvbl9leGVjdXRhYmxl
KTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAg
ICBjYXNlIFBoYW50b21QdXRTdHJ1Y3R1cmU6Ci0gICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1
cmUpOworICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICB3cml0ZShK
U0NlbGxfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3Mp
OworICAgICAgICB3cml0ZShKU0NlbGxfaW5kZXhpbmdUeXBlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtNDQ0LDkgKzQ1
NSwxMSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IAogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgotICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CisgICAgICAgIHJlYWQoSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAgIHJlYWQo
SlNPYmplY3RfYnV0dGVyZmx5KTsKLSAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZSk7Cisg
ICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF9p
bmRleGluZ1R5cGUpOwogICAgICAgICB3cml0ZShKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAg
ICBjbG9iYmVyaXplRm9yQWxsb2NhdGlvbihyZWFkLCB3cml0ZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTQ2OSwxNyArNDgyLDE3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIE11bHRpR2V0QnlPZmZz
ZXQ6Ci0gICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxs
X3N0cnVjdHVyZUlEKTsKICAgICAgICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAg
ICByZWFkKEFic3RyYWN0SGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUtPm11bHRpR2V0QnlPZmZz
ZXREYXRhKCkuaWRlbnRpZmllck51bWJlcikpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAog
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJl
KTsKKyAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICByZWFkKEpTT2Jq
ZWN0X2J1dHRlcmZseSk7CiAgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChOYW1lZFByb3BlcnRp
ZXMsIG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcikpOwogICAg
ICAgICBpZiAobm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS53cml0ZXNTdHJ1Y3R1cmVzKCkp
Ci0gICAgICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHdyaXRl
KEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIGlmIChub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0
RGF0YSgpLnJlYWxsb2NhdGVzU3RvcmFnZSgpKSB7CiAgICAgICAgICAgICB3cml0ZShKU09iamVj
dF9idXR0ZXJmbHkpOwogICAgICAgICAgICAgY2xvYmJlcml6ZUZvckFsbG9jYXRpb24ocmVhZCwg
d3JpdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDI5IEBAIHB1YmxpYzoKICAg
ICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrUHRyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9Ci0gICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNo
V2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJl
KiB3ZWFrU3RydWN0dXJlKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1w
IHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMih3ZWFrU3RydWN0dXJl
LT5pZCgpKSk7CisgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0cnVjdHVyZSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihj
b25kLCBsZWZ0LCB3ZWFrU3RydWN0dXJlKTsKKyNlbmRpZgorICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgSnVtcCBicmFuY2hTdHJ1Y3R1cmVQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZElt
bTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihj
b25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworI2VuZGlmCisgICAgfQorCiAg
ICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxl
cjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIHsKICAgICAg
ICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNo
YWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24g
MTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEsOCBAQCB2b2lkIE9TUkV4aXRD
b21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigp
OwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2Ny
YXRjaDEpOwotICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgp
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
c2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7CiAg
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBz
Y3JhdGNoMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw5ICsxMTYsOSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAg
ICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5t
X2pzVmFsdWVTb3VyY2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoc2NyYXRjaDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNj
cmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAg
ICAgICAgICAgICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVu
U3RydWN0dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRj
aDEpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3Jh
dGNoMSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIG1faml0Lm9yMzIoc2NyYXRjaDIsIEFz
c2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJy
YXlNb2RlcygpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxlckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMo
Q0NhbGxIZWxwZXJzCiB9CiAKICNpZiBFTkFCTEUoR0dDKQotc3RhdGljIHZvaWQgb3NyV3JpdGVC
YXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwg
R1BSUmVnIHNjcmF0Y2gyKQorc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVy
cyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewotICAgIEFzc2VtYmx5SGVs
cGVyczo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gaml0LmdlbmVyaWNXcml0ZUJhcnJpZXIo
b3duZXIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRl
ZmluaXRlbHlOb3RNYXJrZWQgPSBqaXQuZ2VuZXJpY1dyaXRlQmFycmllcihvd25lcik7CiAKICAg
ICAvLyBXZSBuZWVkIHRoZXNlIGV4dHJhIHNsb3RzIGJlY2F1c2Ugc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlIHdpbGwgdXNlIHBva2Ugb24geDg2LgogI2lmIENQVShYODYpCkBAIC0xNzIsOCAr
MTcyLDggQEAgc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycwogI2VuZGlm
CiAKICAgICBqaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG93bmVyKTsKLSAgICBqaXQu
bW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQq
PihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaDEpOwotICAgIGppdC5jYWxsKHNj
cmF0Y2gxKTsKKyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7
CisgICAgaml0LmNhbGwoc2NyYXRjaCk7CiAKICNpZiBDUFUoWDg2KQogICAgIGppdC5hZGRQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2Yodm9pZCopICogMyksIE1hY3JvQXNz
ZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBh
ZGp1c3RBbmRKdW1wVG9UYXJnZXQoQ0NhbGxIZWxwZXJzJgogICAgIGZvciAoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IDsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNv
ZGVCbG9jayA9IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAKLSAgICAgICAgb3Ny
V3JpdGVCYXJyaWVyKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BS
MSwgR1BSSW5mbzo6bm9uQXJnR1BSMik7CisgICAgICAgIG9zcldyaXRlQmFycmllcihqaXQsIEdQ
UkluZm86Om5vbkFyZ0dQUjAsIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogICAgICAgICBpZiAoIWNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRC
eVZhbChFeGVjU3RhdGUqIGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGluZGV4
LCB2YWx1ZSwgc3RyaWN0KTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5
SW5kZXgob2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTIyMiwxMiArMjIyLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG8KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZVRoaXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5s
aW5lQ2FwYWNpdHkpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIEFTU0VS
VChqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q29u
c3RydWN0RGF0YShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0
YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24qPihj
b25zdHJ1Y3RvciktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpT
KTsKICNlbmRpZgogICAgIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBq
c0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywg
aW5saW5lQ2FwYWNpdHkpLT5zdHJ1Y3R1cmUoKSk7CkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbAogCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBhcnJheSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAogICAgIGlmIChpbmRl
eCA+PSAwKSB7CiAgICAgICAgIGFycmF5LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGluZGV4LCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlz
aW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw4ICsyNDcsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpZiAoIWlzS25vd25DZWxs
KG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7Cisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0
LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShp
bnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRH
UFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpA
QCAtMzEyLDEyICszMTQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAg
ICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFy
Z1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21w
aWxlcjo6WmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFu
Y2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSwgCisgICAgICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKICAgIAogICAgICAg
ICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEds
b2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIp
OwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVj
dEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsK
ICAgICB9CkBAIC0xMTM2LDM5ICsxMTQxLDM0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RFcXVhbGkKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFy
eSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1
cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVHUFIsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTEyMTMsMTkg
KzEyMTMsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVHUFIsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCkpKTsKICAgICB9CiAgICAgCkBAIC0xMjQxLDIwICsxMjQwLDE5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRh
Z0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9w
MlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwg
cmlnaHRDaGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxv
YWRHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwog
ICAgIH0KICAgICAKQEAgLTEzMjAsMTkgKzEzMTgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xMzQ3LDIwICsx
MzQ0LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVHUFIsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhv
cDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNDQzLDEwICsxNDM5LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNw
ZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1
Y3R1cmVHUFIpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwKQEAgLTE0NTgsNyArMTQ1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKTsKIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAKQEAgLTE1NzMsMTAgKzE1
NjksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2Us
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBzY3JhdGNoR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0xNTg1LDcgKzE1ODEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
Tm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVy
OjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLAog
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMzA3Nyw3ICszMDc2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFBy
aW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0
aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1
bHRUYWdHUFIpOwpAQCAtMzExMCw3ICszMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIoCiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0zNDc2LDExICszNDc1LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0
aGlzVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgICAg
ICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhp
c1ZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwog
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0
VHlwZSkpKTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVQYXlsb2FkR1BSLCB0ZW1wR1BS
KTsKICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVUYWdHUFIsIHRlbXBUYWdHUFIpOwpAQCAt
Mzc4NywxMiArMzc4NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgQmFkQ2FjaGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2UuZ3ByKCkpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCiAg
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2Uu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIApAQCAtMzgyMyw3ICsz
ODIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sg
PSBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhvcDEuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5v
ZGUtPnN0cnVjdHVyZSgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEu
Z3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+
c3RydWN0dXJlKCkpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBpc09L
LmxpbmsoJm1faml0KTsKICNlbHNlCkBAIC0zODQ3LDcgKzM4NDQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVj
dHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTQwNTEsOCArNDA0OCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAKICAgICAgICAg
Ly8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCi0g
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5j
aFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCAKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDA4MCw4ICs0MDc5LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRl
c3Q4KEpJVENvbXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3By
KCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
ICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwog
ICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAg
ICAgICAgICAgIApAQCAtNDEyNCw4ICs0MTI1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
Tm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWUudGFn
R1BSKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAg
ICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5w
YXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29t
cGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAor
ICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7
CiAgICAgICAgIAogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNDE3OCw4ICs0
MTgxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5v
ZGUtPmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUt
PmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1w
R1BSKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJy
YW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5
cGUpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJy
YW5jaDgoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUp
KTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KQogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5
bG9hZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5z
dHJpbmdTdHJpbmcoKSksIHJlc3VsdEdQUik7CkBAIC00NzA4LDcgKzQ3MTMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2
YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUiwgc2NyYXRjaDEs
IHNjcmF0Y2gyKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0g
Z2VuZXJpY1dyaXRlQmFycmllcihtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJh
cnJpZXJCdWZmZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CiAgICAgZGVmaW5pdGVs
eU5vdE1hcmtlZC5saW5rKCZtX2ppdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDEyICsyNDcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEds
b2JhbE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVj
dCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAg
aWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0g
bV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIp
OwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBt
X2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0
OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOwogCiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDog
VHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjYxLDYgKzI2NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVH
bG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIG1faml0
Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIs
IHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUds
b2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoaW52ZXJ0ID8gSklUQ29t
cGlsZXI6Ok5vdEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQ
UiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwogICAgIH0KQEAgLTMxMSwxNiAr
MzE1LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICB9
IGVsc2UgewogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CisgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3Bl
cmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoVGVz
dDgoSklUQ29tcGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKKyAg
ICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKSwgCisgICAgICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKIAogICAgICAg
ICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEds
b2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwg
cmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6
OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZl
cnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC0xNTE5LDQxICsxNTI3LDM2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2Rl
LT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBv
cmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1
Y3R1cmUuZ3ByKCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2Rl
LT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0
dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigK
KyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNo
aWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVH
UFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KSk7CiAgICAgfQogICAgIApAQCAtMTU3NiwzNyArMTU3OSwyNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsK
ICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3Ry
dWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50SXNTdGlsbFZhbGlkKCk7CiAKLSAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQpIHsKLSAgICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5l
ZCBjYXNlIHdpbGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhl
cmUuCi0gICAgICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZv
aWQgYnJhbmNoaW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRl
bXBvcmFyeSByZWFsU3RydWN0dXJlKHRoaXMpOwotICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVh
bFN0cnVjdHVyZSk7Ci0gICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAg
ICB9Ci0KICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAor
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxk
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJy
YW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjE4LDIxICsxNjEw
LDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAvLyBX
ZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxs
LiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJp
Z2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ay
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0g
ICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hU
ZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTY3OSwzNyArMTY3MCwyNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5n
cHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJS
ZWcgc3RydWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAKLSAgICBib29sIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQgPQorICAgIGJvb2wgbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRWYWxpZCA9IAogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwogCi0gICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRl
ZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBp
dCBoZXJlLgotICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRv
IGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgotICAgICAgICBH
UFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0
KHJlYWxTdHJ1Y3R1cmUpOwotICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7
Ci0gICAgfQotCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQp
IHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAg
ICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxl
ZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAKQEAgLTE3MjEsMjEgKzE3
MDEsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8v
IFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNl
bGwuIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdz
KG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
Ci0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTgzMyw2ICsxODEyLDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3Ry
dWN0dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAg
ICBHUFJSZWcgc2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwpAQCAtMTg0MSwzMiArMTgyMiwzNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBt
YXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lz
dGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Ag
b2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxv
Y2F0aW9uLgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRv
cHQocmVhbFN0cnVjdHVyZSk7CisgICAgICAgIHNjcmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwog
ICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVl
R1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQ
Uik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2
YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNo
UHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BS
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6WmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAgIG1faml0LmVtaXRM
b2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKQEAgLTE5ODUsMzEgKzE5NjgsNDEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGVVc2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2gu
Z3ByKCk7Ci0gICAgCisgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CisK
KyAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkp
IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIHN0
cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc3RydWN0dXJlR1BSID0gc3Ry
dWN0dXJlLmdwcigpOworICAgIH0KKwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwg
PSBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBH
UFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVk
V2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOyAgICAgICAgICAgICAgICAKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc2NyYXRjaEdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgIHNjcmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5j
aFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
OwogCisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVH
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAg
IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CkBAIC0zNDE3LDcgKzM0
MTAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBvcDEudXNlKCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJl
YWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBvcDFHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQ
cmltaXRpdmUgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICBhbHJlYWR5
UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3Vs
dEdQUik7CkBAIC0zNDQzLDEwICszNDM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpICYgU3BlY1N0cmluZykgewogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoMSA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Ok5vblplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJh
bmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAg
ICAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgICAgIHNsb3dQ
YXRoMS5saW5rKCZtX2ppdCk7CkBAIC0zNjY1LDcgKzM2NjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFz
aWNTdG9yYWdlKHJlc3VsdEdQUiwgc3RvcmFnZUdQUikpOwogICAgICAgICAgICAgbV9qaXQuc3Vi
UHRyKHNjcmF0Y2hHUFIsIHN0b3JhZ2VHUFIpOwogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSk7Ci0gICAgICAgICAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdl
R1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVu
Z3RoKCkpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgp
KSk7CkBAIC0zODAzLDExICszNzk5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0aGlzVmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
dGVtcEdQUik7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOCgKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9i
amVjdFR5cGUpKSk7CiAgICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlR1BSLCB0ZW1wR1BSKTsK
ICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUogZnVuY3Rpb247CkBAIC00MDk4LDI0ICs0MDkyLDIw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChiYXNlLmdwcigpKSwgMCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFr
UHRyKAorICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnN0cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwotICAgICAgICAgICAgCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgLSAxOyAr
K2kpCi0gICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cihKSVRD
b21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0p
KTsKKyAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJl
KEpJVENvbXBpbGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAg
ICAgICBleGl0S2luZCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAs
Ci0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKLSAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUtPnN0cnVjdHVy
ZVNldCgpLmxhc3QoKSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1
cmUoCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
bm9kZS0+c3RydWN0dXJlU2V0KCkubGFzdCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICB9CkBAIC00MTMxLDEyICs0MTIxLDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gd2Ugc2hv
dWxkbid0IHJlYWxseSBsb2FkIGl0IHNpbmNlIHRoYXQgY291bGQgYmUgYSB3YXN0ZS4gRm9yIG5v
dyB0aG91Z2gsCiAgICAgICAgIC8vIHdlJ2xsIGp1c3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHdo
ZW4gYSB3YXRjaHBvaW50IGZpcmVzIHRoZW4gdGhhdCdzCiAgICAgICAgIC8vIHF1aXRlIGEgaGlu
dCBhbHJlYWR5LgotICAgICAgICAKKwogICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNlKG5v
ZGUtPnN0cnVjdHVyZSgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNPSyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbm9kZS0+c3Ry
dWN0dXJlKCkpOwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlzT0subGlu
aygmbV9qaXQpOwogI2Vsc2UKQEAgLTQxNTUsMTQgKzQxNDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6IHsKKyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1
Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3Ry
dWN0dXJlOworCiAgICAgICAgIG1faml0LmppdENvZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGlu
Z1N0cnVjdHVyZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9j
aygpLCBub2RlKTsKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwotICAg
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3
U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xk
U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbmV3
U3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5m
bygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKG5ld1N0cnVjdHVyZS0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAK
ICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM0Miw4ICs0MzM5
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUgdGhh
dCBiYXNlICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3Ry
dWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4KAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAg
YnJlYWs7CkBAIC00MzcxLDggKzQzNzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuanVtcCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVy
bywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7Cisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBt
X2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywg
CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2Vs
bDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKIApAQCAtNDQxOSw4ICs0NDIwLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6
Tm9uWmVybywgdmFsdWUuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgICAg
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigp
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgbV9q
aXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
U3RyaW5nVHlwZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENv
bXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5n
cHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKFN0cmluZ1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
IG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAg
LTQ0NTksOCArNDQ2Miw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIFR5cGVPZjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BS
UmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwotICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgICAgIEdQUlJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7CkBAIC00NDc0LDgg
KzQ0NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0g
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7Cisg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KAor
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAg
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKSksIHJl
c3VsdEdQUik7CkBAIC01MDI1LDcgKzUwMjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0
ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQog
ICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSklUQ29tcGls
ZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQs
IG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRl
ZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7
CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0
Y2gyKTsKICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTgsOSArNjk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0
b3JhZ2U6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIp
OworICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2VSZWcpLCAwLAogICAgICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFy
cmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwpAQCAtNzA5LDE4ICs3MDcsMjkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgZXhwZWN0ZWRD
bGFzc0luZm8gPSBBcmd1bWVudHM6OmluZm8oKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5cGUpKSk7CisK
KyAgICAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBk
ZWZhdWx0OgotICAgICAgICBleHBlY3RlZENsYXNzSW5mbyA9IGNsYXNzSW5mb0ZvclR5cGUobm9k
ZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJh
eVR5cGUobm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpKSk7CisgICAgICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAg
IFJFTEVBU0VfQVNTRVJUKGV4cGVjdGVkQ2xhc3NJbmZvKTsKICAgICAKICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKLSAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIo
KSk7CisgICAgR1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworICAgIG1faml0LmVtaXRMb2FkU3Ry
dWN0dXJlKGJhc2VSZWcsIHRlbXAuZ3ByKCksIHRlbXAyLmdwcigpKTsKICAgICBzcGVjdWxhdGlv
bkNoZWNrKAogICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZSwKICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtNzUwLDE2ICs3NTksMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZQogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBB
cnJheWlmeVRvU3RydWN0dXJlKSB7Ci0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFu
Y2hXZWFrUHRyKAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVj
dHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwKICAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKSk7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVH
UFIpOwotICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDgoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAg
CiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRl
bXBHUFIsIG5vZGUtPmFycmF5TW9kZSgpKSk7CiAgICAgfQpAQCAtMTEzMSwyNCArMTEzNywyNSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlmICht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKLSAgICAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigp
OwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUob3AxR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwog
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3Bl
Y09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAg
ICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGls
ZDEoKSwKQEAgLTExNjAsMTAgKzExNjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlT2JqZQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlR1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUob3AyR1BSLCBzdHJ1Y3R1
cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKQEAgLTExNzUsNyArMTE4Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAKQEAgLTI1
MjQsMTggKzI1MzEsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9y
RgogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90
eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5
cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8g
Q2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChzY3JhdGNoUmVnKSk7CisgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZkNl
bGxOb3RPYmplY3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3Jh
dGNoUmVnIHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2YWx1
ZVJlZywgc2NyYXRjaFJlZyk7CiAgICAgCiAgICAgLy8gV2FsayB1cCB0aGUgcHJvdG90eXBlIGNo
YWluIG9mIHRoZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmluZyB0byBwcm90b3R5cGVS
ZWcuCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0KTsKLSAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShz
Y3JhdGNoUmVnLCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHNjcmF0Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yNTc0LDkgKzI1ODAsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigp
OwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKQEAgLTI1OTMs
NyArMjYwMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAg
ICAgICAgCiAgICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIAotICAgICAgICBj
b21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBz
Y3JhdGNoUmVnKTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFs
dWVSZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgICAgICAK
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTI2MDksMTIgKzI2MTcsMTQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIHByb3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwog
ICAgIAogICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBwcm90
b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3Jh
dGNoLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAg
IAotICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5
cGVSZWcsIHNjcmF0Y2hSZWcpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUs
IHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVnLCBub2RlLCBEYXRh
Rm9ybWF0SlNCb29sZWFuKTsKQEAgLTQzNjIsMTAgKzQzNzIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT25DZQogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RV
c2U6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2pp
dC5icmFuY2hQdHIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKworICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAgICByZXN1bHRHUFIsCisgICAgICAgICAgICBtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOwog
ICAgICAgICAKQEAgLTQzOTIsMTAgKzQ0MDQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT25DZQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rp
b24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5lZWRD
YWxsID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVl
ZENhbGwgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgVHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAg
ICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5lZWRDYWxsLmxpbmsoJm1faml0
KTsKQEAgLTQ1OTYsMTAgKzQ2MDgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0KEVkZwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7
CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3By
KSwgZWRnZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5h
bE9iamVjdChFZGdlIGVkZ2UpCkBAIC00NjA4LDE0ICs0NjIwLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgR1BSVGVtcG9yYXJ5
IHN0cnVjdHVyZSh0aGlzKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAgICBH
UFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlR1BSKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY0ZpbmFsT2JqZWN0LCBtX2ppdC5icmFuY2g4
KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmlu
YWxPYmplY3RUeXBlKSkpOwogfQogCkBAIC00NjMyLDEwICs0NjQxLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NIRUNL
KAotICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00NjU1LDEwICs0NjY0LDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0KICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQ
UiksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhw
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRzVHlw
ZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAtNDY3OCwxMCArNDY4Nywx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2Vs
bCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRn
ZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpCkBAIC00NzM0LDcgKzQ3NDMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7Ci0g
ICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0ZVN0
cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDc2MCwxNiArNDc2OSwxNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0CiAgICAgR1BSUmVnIGdwciA9
IG9wZXJhbmQuZ3ByKCk7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5n
IHwgU3BlY1N0cmluZ09iamVjdCkpCiAgICAgICAgIHJldHVybjsKKworICAgIEdQUlRlbXBvcmFy
eSBzdHJ1Y3R1cmVJRCh0aGlzKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1
cmVJRC5ncHIoKTsKKworICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCisgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAg
ICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKKyAgICAgICAgc3RydWN0dXJlSURHUFIsIAorICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAotICAgIEdQUlRlbXBv
cmFyeSBzdHJ1Y3R1cmUodGhpcyk7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVy
ZS5ncHIoKTsKLSAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgIEpJ
VENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwotICAgIAotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmVHUFIpOworICAgIHNwZWN1bGF0ZVN0cmluZ09i
amVjdEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmVJREdQUik7CiAgICAgCiAgICAgaXNTdHJp
bmcubGluaygmbV9qaXQpOwogICAgIApAQCAtNTAzNCwxMCArNTA0NCwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAjZW5kaWYKICAgICAgICAgCiAgICAgICAg
IGFkZEJyYW5jaCgKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVn
cy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAg
ICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNo
Q2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBHUFIpOwpAQCAt
NTMzNCwxMCArNTM0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5n
KE5vCiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5jaCgKLSAgICAgICAgICAgIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7
CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVn
cy5wYXlsb2FkR1BSKCkpOwpAQCAtNTQyNiwzMCArNTQzNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RvcmVCYXJyaWVyCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLUpJVENv
bXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVs
cGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gy
KQorSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIo
Q0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lcikKIHsKLSAgICBqaXQubW92ZShvd25lciwg
c2NyYXRjaDEpOwotICAgIGppdC5tb3ZlKG93bmVyLCBzY3JhdGNoMik7Ci0KLSAgICBqaXQuYW5k
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2sp
LCBzY3JhdGNoMSk7Ci0gICAgaml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cih+TWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gyKTsKLQotICAgIC8vIFNoaWZ0IGlu
ZGV4Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBqaXQucnNoaWZ0NjQoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihNYXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6
Om1hcmtCeXRlU2hpZnRBbW91bnQpLCBzY3JhdGNoMik7Ci0jZWxzZQotICAgIGppdC5yc2hpZnQz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91
bnQgKyBNYXJrZWRCbG9jazo6bWFya0J5dGVTaGlmdEFtb3VudCksIHNjcmF0Y2gyKTsKLSNlbmRp
ZgotCi0gICAgLy8gRW1pdCBsb2FkIGFuZCBicmFuY2gKLSAgICByZXR1cm4gaml0LmJyYW5jaFRl
c3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0
Y2gxLCBzY3JhdGNoMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCBNYXJrZWRCbG9jazo6b2Zm
c2V0T2ZNYXJrcygpKSk7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxl
cjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zm
c2V0KCkpKTsKIH0KIAogSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNX
cml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpCiB7Ci0gICAgTWFy
a2VkQmxvY2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKG93bmVyKTsKLSAgICBzaXpl
X3QgbWFya0luZGV4ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pihvd25lcikgJiB+TWFya2Vk
QmxvY2s6OmJsb2NrTWFzaykgPj4gKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91bnQgKyBNYXJr
ZWRCbG9jazo6bWFya0J5dGVTaGlmdEFtb3VudCk7Ci0gICAgdWludDhfdCogYWRkcmVzcyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSAr
IE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtzKCkpICsgbWFya0luZGV4OworICAgIHVpbnQ4X3Qq
IGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvd25lcikgKyBKU0NlbGw6Omdj
RGF0YU9mZnNldCgpOwogICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6
Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpOwogfQogCkBA
IC01NTA5LDE0ICs1NTAzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihH
UFJSZWcKICAgICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRl
QmFycmllcihtX2ppdCwgb3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29t
cGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9q
aXQsIG93bmVyR1BSKTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBz
Y3JhdGNoMSwgc2NyYXRjaDIpOwogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyR1BS
LCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMikKIHsKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRlQmFycmllcihtX2ppdCwgb3du
ZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZGVmaW5p
dGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BSKTsKICAg
ICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIp
OwogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVU
b1dyaXRlQmFycmllckJ1ZmZlcihHUFJSZWcgY2VsbCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcg
c2NyYXRjaDIpOwogICAgIHZvaWQgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihKU0NlbGwqLCBH
UFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAKLSAgICBzdGF0aWMgSklUQ29tcGls
ZXI6Okp1bXAgZ2VuZXJpY1dyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93
bmVyLCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CisgICAgc3RhdGljIEpJVENv
bXBpbGVyOjpKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJl
ZyBvd25lcik7CiAgICAgc3RhdGljIEpJVENvbXBpbGVyOjpKdW1wIGdlbmVyaWNXcml0ZUJhcnJp
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpOwogICAgIHZvaWQgd3JpdGVCYXJy
aWVyKEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpOwogICAg
IHZvaWQgd3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lciwgSlNDZWxsKiB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpOwpAQCAtNzM5LDcgKzczOSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZl
cnQgPSBmYWxzZSk7CiAgICAgYm9vbCBub25TcGVjdWxhdGl2ZVN0cmljdEVxKE5vZGUqLCBib29s
IGludmVydCA9IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2Jq
ZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBz
Y3JhdGNoQW5kUmVzdWx0UmVnKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0
KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3Jh
dGNoQW5kUmVzdWx0UmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpOwogICAgIHZvaWQgY29tcGlsZUlu
c3RhbmNlT2YoTm9kZSopOwogICAgIAogICAgIHB0cmRpZmZfdCBjYWxsZWVGcmFtZU9mZnNldChp
bnQgbnVtQXJncykKQEAgLTIxMDUsNyArMjEwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
ICAgIHJldHVybiBzbG93UGF0aDsKICAgICB9Ci0gICAgCisKICAgICAvLyBBbGxvY2F0b3IgZm9y
IGEgY2VsbCBvZiBhIHNwZWNpZmljIHNpemUuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVj
dHVyZVR5cGU+IC8vIFN0cnVjdHVyZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCiAgICAgdm9p
ZCBlbWl0QWxsb2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQ
UiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsCkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGFsbG9jYXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgp
KSk7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgotICAg
ICAgICBtX2ppdC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5lbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hH
UFIpOwogICAgIH0KIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lm
aWMgc2l6ZS4KQEAgLTMwNDUsOCArMzA0NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZ09iamUKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRL
bm93blN0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1
cmUpKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgTm90U3RyaW5n
T2JqZWN0LCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAot
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24s
IFRydXN0ZWRJbW1QdHIoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpOworICAgICAgICAgICAgbV9q
aXQuYnJhbmNoU3RydWN0dXJlUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RF
cXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIHN0cmluZ09iamVjdFN0cnVjdHVyZSkpOwogICAgIH0K
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJl
dmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAorI2luY2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDcgQEAgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwbwogICAgIEZP
Ul9FQUNIX0FCU1RSQUNUX0ZJRUxEKEFCU1RSQUNUX0ZJRUxEX0lOSVRJQUxJWkFUSU9OKQogI3Vu
ZGVmIEFCU1RSQUNUX0ZJRUxEX0lOSVRJQUxJWkFUSU9OCiAgICAgCi0gICAgLCBKU0NlbGxfZnJl
ZUxpc3ROZXh0KEpTQ2VsbF9zdHJ1Y3R1cmUpCisgICAgLCBKU0NlbGxfZnJlZUxpc3ROZXh0KEpT
Q2VsbF9zdHJ1Y3R1cmVJRCkKICAgICAKICNkZWZpbmUgSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0lO
SVRJQUxJWkFUSU9OKG5hbWUsIG9mZnNldCwgc2l6ZSkgLCBuYW1lKGNvbnRleHQsICZyb290LCAj
bmFtZSwgb2Zmc2V0LCBzaXplKQogICAgIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChJ
TkRFWEVEX0FCU1RSQUNUX0hFQVBfSU5JVElBTElaQVRJT04pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2
aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDExIEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5n
dGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oSlNB
cnJheUJ1ZmZlclZpZXdfbW9kZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSBc
CiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yLCBKU0FycmF5QnVmZmVyVmlldzo6
b2Zmc2V0T2ZWZWN0b3IoKSkgXAotICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmUsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfc3RydWN0dXJlSUQsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb0ZsYWdz
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBl
SW5mb1R5cGUsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0Nl
bGxfaW5kZXhpbmdUeXBlLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCisgICAgbWFj
cm8oSlNDZWxsX2djRGF0YSwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpT
RnVuY3Rpb25fZXhlY3V0YWJsZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpIFwK
ICAgICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hh
aW4oKSkgXAogICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRlcmZseSwgSlNPYmplY3Q6OmJ1dHRlcmZs
eU9mZnNldCgpKSBcCkBAIC02MiwxMSArNjYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEZUTCB7CiAgICAgbWFjcm8oTWFya2VkQmxvY2tfbWFya0JpdHMsIE1hcmtlZEJsb2NrOjpvZmZz
ZXRPZk1hcmtzKCkpIFwKICAgICBtYWNybyhTdHJpbmdJbXBsX2RhdGEsIFN0cmluZ0ltcGw6OmRh
dGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzLCBTdHJpbmdJ
bXBsOjpmbGFnc09mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBT
dHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xh
c3NJbmZvLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0
dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAotICAg
IG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ1R5cGUsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfdHlwZUluZm9GbGFncywgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfdHlwZUluZm9UeXBl
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKQogCiAjZGVmaW5lIEZPUl9FQUNIX0lO
REVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJl
cnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxK
U1N0cmluZz4pKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDAsMTIg
KzE1NDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXhpdEtpbmQg
PSBCYWRDYWNoZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5s
b2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBz
dHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJ
RCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkg
PT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgICAgIGV4aXRLaW5k
LCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0gICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwo
c3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSkpOworICAg
ICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlKG1f
bm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgCkBAIC0xNTU1LDE0ICsxNTU1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7
ICsraSkgewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbmV4dFN0cnVjdHVyZSA9IEZUTF9ORVdf
QkxPQ0sobV9vdXQsICgiQ2hlY2tTdHJ1Y3R1cmUgbmV4dFN0cnVjdHVyZSIpKTsKICAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUs
IHdlYWtQb2ludGVyKG1fbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKSwKKyAgICAgICAgICAgICAg
ICBtX291dC5lcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVy
ZVNldCgpW2ldKSksCiAgICAgICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3Vy
ZShuZXh0U3RydWN0dXJlKSk7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3RydWN0
dXJlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAg
ICAgZXhpdEtpbmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0Lm5v
dEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0
KCkpKSk7CisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVj
dHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xNjAyLDEwICsxNjAyLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIExCYXNpY0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIkFycmF5aWZ5VG9TdHJ1Y3R1cmUgdW5leHBlY3RlZCBzdHJ1Y3R1cmUiKSk7CiAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJyYXlp
ZnlUb1N0cnVjdHVyZSBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUg
c3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUp
OworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAot
ICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUt
PnN0cnVjdHVyZSgpKSksCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwg
d2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZSgpKSksCiAgICAgICAgICAgICByYXJlbHko
dW5leHBlY3RlZFN0cnVjdHVyZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAgIAog
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHVuZXhwZWN0ZWRT
dHJ1Y3R1cmUsIGNvbnRpbnVhdGlvbik7CkBAIC0xNjQ2LDEwICsxNjQ2LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdHJ1Y3R1
cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CiAgICAg
ICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVl
KGNlbGwpLCAwLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9p
bnRlcihtX25vZGUtPnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgbV9vdXQubm90RXF1YWwo
c3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xNjU4LDEwICsxNjU3LDE3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21waWxlUHV0U3RydWN0dXJlKCkKICAgICB7CiAgICAgICAgIG1f
ZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRp
b24obV9ncmFwaC5tX3BsYW4sIGNvZGVCbG9jaygpLCBtX25vZGUpOwotICAgICAgICAKLSAgICAg
ICAgbV9vdXQuc3RvcmVQdHIoCi0gICAgICAgICAgICB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVj
dHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwKLSAgICAgICAgICAgIGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CisKKyAgICAgICAg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRh
KCkucHJldmlvdXNTdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
bV9ub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZTsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkg
PT0gbmV3U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+
dHlwZUluZm8oKS50eXBlKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CisK
KyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOyAKKyAgICAg
ICAgbV9vdXQuc3RvcmUzMigKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobmV3U3RydWN0dXJl
KSwKKyAgICAgICAgICAgIGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlUGhhbnRvbVB1dFN0cnVjdHVyZSgpCkBAIC0yNDY3LDcg
KzI0NzMsNyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBWYWx1
ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KAotICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgbV9vdXQuY29uc3RJbnRQdHIo
c3RydWN0dXJlKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpKTsKKyAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywg
c2xvd1BhdGgpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgCkBAIC0yNjQ0LDcgKzI2NTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZh
bHVlIGJ1dHRlcmZseSA9IG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIHBheWxvYWRTaXplKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEpT
QXJyYXk+KAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1
dHRlcmZseSwgZmFpbENhc2UpOworICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgYnV0dGVyZmx5
LCBmYWlsQ2FzZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVi
bGljTGVuZ3RoLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAg
ICAgICAgICAgICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBz
LkJ1dHRlcmZseV92ZWN0b3JMZW5ndGgpOwpAQCAtMjc0MSwxOCArMjc0NywxOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6IHsK
ICAgICAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291
dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmcgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIlRvU3RyaW5nIFN0cmluZ09yU3RyaW5nT2JqZWN0IG5vdCBzdHJpbmcgY2FzZSIpKTsKICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiVG9TdHJpbmcgU3RyaW5nT3JTdHJpbmdPYmplY3QgY29udGludWF0aW9uIikpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzaW1wbGVSZXN1bHQgPSBtX291dC5h
bmNob3IoY2VsbCk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAg
bV9vdXQuZXF1YWwoc3RydWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpLAorICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCBt
X291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSksCiAgICAgICAgICAg
ICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhu
b3RTdHJpbmcsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUobV9ub2RlLT5jaGlsZDEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKG1fbm9kZS0+Y2hpbGQxKCksIHN0
cnVjdHVyZUlEKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWRSZXN1bHQgPSBt
X291dC5hbmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBz
LkpTV3JhcHBlck9iamVjdF9pbnRlcm5hbFZhbHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CkBAIC0yNzg4LDggKzI3OTQsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgTFZhbHVlIGlzU3RyaW5nUHJlZGljYXRlOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hp
bGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKICAgICAgICAgICAgICAgICBpc1N0
cmluZ1ByZWRpY2F0ZSA9IG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291dC5s
b2FkUHRyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAg
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmlu
Z1N0cnVjdHVyZS0+aWQoKSkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
aXNTdHJpbmdQcmVkaWNhdGUgPSBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgICAgICAgICBtX291
dC5icmFuY2goaXNTdHJpbmdQcmVkaWNhdGUsIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUo
bm90U3RyaW5nKSk7CkBAIC0yODY0LDcgKzI4NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IGFsbG9jYXRlQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKCZhbGxvY2F0b3IpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0o
KS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLAorICAgICAgICAgICAgdm0oKS5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCksCiAgICAgICAgICAgICBzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBtX291
dC5zdG9yZVB0cihtX291dC5pbnRQdHJaZXJvLCByZXN1bHQsIG1faGVhcHMuSlNTdHJpbmdfdmFs
dWUpOwpAQCAtMzA4MSwxMSArMzA4NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgR2V0QnlJ
ZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSB2YXJpYW50LnN0cnVjdHVyZVNldCgpLnNpemUoKTsgai0tOykgewogICAgICAg
ICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgICAgICB3
ZWFrUG9pbnRlcih2YXJpYW50LnN0cnVjdHVyZVNldCgpW2pdKSwgYmxvY2tzW2ldLCBXZWlnaHQo
MSkpKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZSh2YXJpYW50LnN0cnVjdHVy
ZVNldCgpW2pdKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbigKLSAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwgY2FzZXMsIGV4aXQsIFdl
aWdodCgwKSk7CisgICAgICAgICAgICBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpLCBjYXNlcywgZXhpdCwgV2VpZ2h0KDApKTsKICAgICAgICAgCiAgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CiAgICAgICAgIApAQCAt
MzE0NywxMCArMzE1MywxMCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBk
YXRhLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQg
dmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgU3dpdGNoQ2FzZSh3ZWFrUG9pbnRlcih2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKKyAgICAgICAgICAgICAgICBTd2l0Y2hDYXNl
KHdlYWtTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIGJsb2Nrc1tpXSwgV2VpZ2h0
KDEpKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oCi0gICAg
ICAgICAgICBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksIGNh
c2VzLCBleGl0LCBXZWlnaHQoMCkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGJhc2UsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7CiAgICAg
ICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOwog
ICAgICAgICAKQEAgLTMxNzIsOCArMzE3OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlRm9yVHJhbnNpdGlvbigKICAgICAg
ICAgICAgICAgICAgICAgYmFzZSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuc3Rv
cmVQdHIoCi0gICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKHZhcmlhbnQubmV3U3RydWN0
dXJlKCkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAg
ICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlh
bnQubmV3U3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9
PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOwor
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgICAgIHdlYWtT
dHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgc3Rv
cmVQcm9wZXJ0eSh2YWx1ZSwgc3RvcmFnZSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50
Lm9mZnNldCgpKTsKQEAgLTM5NDIsMTQgKzM5NTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9
IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAg
TFZhbHVlIHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVl
VmFsdWUoY2VsbCksIGVkZ2UsIGZpbHRlciwKLSAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVj
dHVyZSwgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmVJRCwgbV9vdXQuY29uc3RJbnQzMih2bSgp
LnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAg
ICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLm5vZGUoKSwKICAgICAgICAgICAg
IG1fb3V0LnRlc3ROb25aZXJvOCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1
cmUsIG1faGVhcHMuU3RydWN0dXJlX3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgICAgIG1f
b3V0LmxvYWQ4KGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAogICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0K
ICAgICAKQEAgLTM5ODEsOCArMzk5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBo
aShtX291dC5ib29sZWFuLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQotICAgIAot
ICAgIExWYWx1ZSBhbGxvY2F0ZUNlbGwoTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVy
ZSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisKKyAgICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1
ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMQmFzaWNCbG9jayBzbG93UGF0aCkK
ICAgICB7CiAgICAgICAgIExCYXNpY0Jsb2NrIHN1Y2Nlc3MgPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIm9iamVjdCBhbGxvY2F0aW9uIHN1Y2Nlc3MiKSk7CiAgICAgICAgIApAQCAtMzk5NywxMyAr
NDAwNywxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQubG9hZFB0cihyZXN1bHQsIG1f
aGVhcHMuSlNDZWxsX2ZyZWVMaXN0TmV4dCksCiAgICAgICAgICAgICBhbGxvY2F0b3IsIG1faGVh
cHMuTWFya2VkQWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCk7CiAgICAgICAgIAotICAgICAgICBtX291
dC5zdG9yZVB0cihzdHJ1Y3R1cmUsIHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKSks
IHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICBtX291dC5zdG9y
ZTgobV9vdXQuY29uc3RJbnQ4KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCByZXN1bHQsIG1f
aGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7CisgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5j
b25zdEludDgoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSksIHJlc3VsdCwgbV9oZWFwcy5K
U0NlbGxfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50
OChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpLCByZXN1bHQsIG1faGVh
cHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworICAgICAgICBtX291dC5zdG9yZTgobV9vdXQuY29u
c3RJbnQ4KDApLCByZXN1bHQsIG1faGVhcHMuSlNDZWxsX2djRGF0YSk7CiAgICAgICAgIAogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSBhbGxvY2F0ZU9i
amVjdCgKLSAgICAgICAgTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVl
IGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgICAgIExWYWx1ZSBhbGxvY2F0
b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBz
bG93UGF0aCkKICAgICB7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoYWxs
b2NhdG9yLCBzdHJ1Y3R1cmUsIHNsb3dQYXRoKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoYnV0
dGVyZmx5LCByZXN1bHQsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKQEAgLTQwMTEsNyAr
NDAyNSw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENs
YXNzVHlwZT4KLSAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoTFZhbHVlIHN0cnVjdHVyZSwgTFZh
bHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgTFZhbHVlIGFsbG9jYXRl
T2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9j
ayBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yOwog
ICAgICAgICBzaXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlvblNpemUoMCk7CkBAIC00
MDgwLDcgKzQwOTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZW5kT2ZTdG9yYWdlLCBtX291
dC5jb25zdEludFB0cihzaXplb2YoSlNWYWx1ZSkgKiB2ZWN0b3JMZW5ndGgpKTsKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSBvYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PigKLSAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgp
OworICAgICAgICAgICAgc3RydWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihudW1FbGVtZW50cyksIGJ1
dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgbV9vdXQu
c3RvcmUzMihtX291dC5jb25zdEludDMyKHZlY3Rvckxlbmd0aCksIGJ1dHRlcmZseSwgbV9oZWFw
cy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKQEAgLTQyMTksOCArNDIzMyw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICBqc1ZhbHVlVmFs
dWUodmFsdWUpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICAg
ICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodmFsdWUs
IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAg
ICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+
aWQoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDIz
MSwxOCArNDI0NSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbWFzcXVl
cmFkZXNDYXNlID0KICAgICAgICAgICAgICAgICBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkVxdWFs
TnVsbE9yVW5kZWZpbmVkIG1hc3F1ZXJhZGVzIGNhc2UiKSk7CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cih2YWx1ZSwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgbV9vdXQudGVzdE5vblpl
cm84KAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVhcHMu
U3RydWN0dXJlX3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5sb2Fk
OCh2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksCiAgICAgICAgICAg
ICAgICAgcmFyZWx5KG1hc3F1ZXJhZGVzQ2FzZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1hc3F1ZXJhZGVzQ2FzZSwg
cHJpbWl0aXZlQ2FzZSk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1
cmUgPSBsb2FkU3RydWN0dXJlKHZhbHVlKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAog
ICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLApAQCAtNTAwMyw4ICs1MDE3LDggQEAgcHJp
dmF0ZToKICAgICBMVmFsdWUgaXNPYmplY3QoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9vdXQubm90RXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2
bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZh
bHVlIGlzTm90U3RyaW5nKExWYWx1ZSBjZWxsKQpAQCAtNTAxNSw4ICs1MDI5LDggQEAgcHJpdmF0
ZToKICAgICBMVmFsdWUgaXNTdHJpbmcoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1
cm4gbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIo
dm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlz
Tm90T2JqZWN0KExWYWx1ZSBjZWxsKQpAQCAtNTAzMCw5ICs1MDQ0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAg
ICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czogewotICAgICAgICAgICAgTFZhbHVlIGluZGV4
aW5nVHlwZSA9IG1fb3V0LmxvYWQ4KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2Vs
bCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLlN0
cnVjdHVyZV9pbmRleGluZ1R5cGUpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9
IG1fb3V0LmxvYWQ4KGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewogICAg
ICAgICAgICAgY2FzZSBBcnJheTo6T3JpZ2luYWxBcnJheToKQEAgLTUwNjAsNyArNTA3Miw5IEBA
IHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgcmV0dXJuIGhhc0NsYXNzSW5mbyhjZWxsLCBjbGFzc0luZm9Gb3JUeXBlKGFycmF5
TW9kZS50eXBlZEFycmF5VHlwZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwo
CisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUlu
Zm9UeXBlKSwgCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KHR5cGVGb3JUeXBlZEFy
cmF5VHlwZShhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSkpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTUwNjgsNyArNTA4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1
cm4gbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkUHRyKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKKyAgICAg
ICAgICAgICAgICBsb2FkU3RydWN0dXJlKGNlbGwpLAogICAgICAgICAgICAgICAgIG1faGVhcHMu
U3RydWN0dXJlX2NsYXNzSW5mbyksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihjbGFz
c0luZm8pKTsKICAgICB9CkBAIC01MDc2LDkgKzUwOTAsNyBAQCBwcml2YXRlOgogICAgIExWYWx1
ZSBpc1R5cGUoTFZhbHVlIGNlbGwsIEpTVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgbV9vdXQubG9hZDgoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAg
ICAgICAgIG1faGVhcHMuU3RydWN0dXJlX3R5cGVJbmZvVHlwZSksCisgICAgICAgICAgICBtX291
dC5sb2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQ4KHR5cGUpKTsKICAgICB9CiAgICAgCkBAIC01MTY1LDEzICs1MTc3LDEz
IEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZyA9IEZUTF9ORVdfQkxP
Q0sobV9vdXQsICgiU3BlY3VsYXRlIFN0cmluZ09yU3RyaW5nT2JqZWN0IG5vdCBzdHJpbmcgY2Fz
ZSIpKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJTcGVjdWxhdGUgU3RyaW5nT3JTdHJpbmdPYmplY3QgY29udGludWF0aW9uIikpOwog
ICAgICAgICAKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIobG93Q2Vs
bChlZGdlKSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZUlEID0gbV9vdXQubG9hZDMyKGxvd0NlbGwoZWRnZSksIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuZXF1YWwo
c3RydWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
LAorICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50MzIo
dm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51
YXRpb24pLCB1bnN1cmUobm90U3RyaW5nKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZywgY29udGludWF0aW9uKTsKLSAg
ICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIHN0cnVjdHVyZSk7
CisgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKGVkZ2UsIHN0cnVj
dHVyZUlEKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC01MTgxLDEw
ICs1MTkzLDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JDZWxsKEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBzcGVjdWxh
dGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9y
U3RydWN0dXJlSUQoZWRnZSwgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9y
U3RydWN0dXJlKEVkZ2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZSkKKyAgICB2b2lkIHNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKEVkZ2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZUlE
KQogICAgIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQogICAg
ICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKTsKQEAgLTUxOTQsMjIgKzUyMDYsMjMgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIE5vdFN0cmluZ09i
amVjdCwgbm9WYWx1ZSgpLCAwLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJl
LCB3ZWFrUG9pbnRlcihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBtX291
dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShzdHJpbmdPYmplY3RTdHJ1Y3R1
cmUpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdl
IGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1f
b3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKICAgICAgICAgRlRM
X1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNP
YmplY3QsIAotICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCBtX291dC5jb25zdElu
dFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmVx
dWFsKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9z
dHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmlu
Z1N0cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAog
ICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoY2Vs
bCksIGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgbV9vdXQudGVzdE5vblplcm84KAotICAgICAg
ICAgICAgICAgIG1fb3V0LmxvYWQ4KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUlu
Zm9GbGFncyksCisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0Nl
bGxfdHlwZUluZm9GbGFncyksCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtNTI2NCwxMCArNTI3Nyw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIGxvYWRNYXJrQnl0ZShMVmFsdWUgYmFzZSkKICAg
ICB7Ci0gICAgICAgIExWYWx1ZSBtYXJrZWRCbG9jayA9IG1fb3V0LmJpdEFuZChiYXNlLCBtX291
dC5jb25zdEludDY0KE1hcmtlZEJsb2NrOjpibG9ja01hc2spKTsKLSAgICAgICAgTFZhbHVlIGJh
c2VPZmZzZXQgPSBtX291dC5iaXRBbmQoYmFzZSwgbV9vdXQuY29uc3RJbnQ2NCh+TWFya2VkQmxv
Y2s6OmJsb2NrTWFzaykpOwotICAgICAgICBMVmFsdWUgbWFya0J5dGVJbmRleCA9IG1fb3V0LmxT
aHIoYmFzZU9mZnNldCwgbV9vdXQuY29uc3RJbnQ2NChNYXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1v
dW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRBbW91bnQpKTsKLSAgICAgICAgcmV0dXJu
IG1fb3V0LmxvYWQ4KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLk1hcmtlZEJsb2NrX21hcmtCaXRz
LCBtYXJrZWRCbG9jaywgbWFya0J5dGVJbmRleCwgU2NhbGVPbmUsIE1hcmtlZEJsb2NrOjpvZmZz
ZXRPZk1hcmtzKCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWQ4KGJhc2UsIG1faGVhcHMu
SlNDZWxsX2djRGF0YSk7CiAgICAgfQogCiAgICAgdm9pZCBlbWl0U3RvcmVCYXJyaWVyKExWYWx1
ZSBiYXNlLCBMVmFsdWUgdmFsdWUsIEVkZ2UgdmFsdWVFZGdlKQpAQCAtNTczMiwxMiArNTc0Miwy
NSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5j
ZXMuYWRkTGF6aWx5KHRhcmdldCk7CiAgICAgfQotICAgIAorCisgICAgTFZhbHVlIGxvYWRTdHJ1
Y3R1cmUoTFZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHRhYmxlSW5kZXggPSBt
X291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAg
TFZhbHVlIHRhYmxlQmFzZSA9IG1fb3V0LmdldChtX291dC5jb25zdEludFB0cih2bSgpLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSkpOworICAgICAgICByZXR1cm4gbV9vdXQuZ2V0KG1f
b3V0LmJhc2VJbmRleCh0YWJsZUJhc2UsIHRhYmxlSW5kZXgsIFNjYWxlRWlnaHQpKTsKKyAgICB9
CisKICAgICBMVmFsdWUgd2Vha1BvaW50ZXIoSlNDZWxsKiBwb2ludGVyKQogICAgIHsKICAgICAg
ICAgYWRkV2Vha1JlZmVyZW5jZShwb2ludGVyKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0
SW50UHRyKHBvaW50ZXIpOwogICAgIH0KKworICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShzdHJ1Y3R1
cmUpOworICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkpOwor
ICAgIH0KICAgICAKICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihMVmFsdWUgYmFzZSwgaW50
IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2
NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDkgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gQmFkQ2FjaGUgfHwgZXhpdC5tX2tpbmQg
PT0gQmFkSW5kZXhpbmdUeXBlKSB7CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBleGl0Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgICAgICAgICAgaWYgKEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmln
aW4pLT5nZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotICAgICAg
ICAgICAgICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAg
ICAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMSwgYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdU
eXBlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5zdG9y
ZTMyKEdQUkluZm86OnJlZ1QxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0
dXJlSUQoKSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5m
bzo6cmVnVDEpOwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQubHNoaWZ0
MzIoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQu
b3IzMihHUFJJbmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhhcnJh
eVByb2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDcgQEAg
cHVibGljOgogICAgIExWYWx1ZSBsb2FkNjQoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0Rmll
bGQmIGZpZWxkKSB7IHJldHVybiBsb2FkNjQoYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAg
TFZhbHVlIGxvYWRQdHIoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxkKSB7
IHJldHVybiBsb2FkUHRyKGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2Fk
RG91YmxlKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1cm4g
bG9hZERvdWJsZShhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KKyAgICB2b2lkIHN0b3JlOChMVmFs
dWUgdmFsdWUsIExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBzdG9y
ZTgodmFsdWUsIGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIHZvaWQgc3RvcmUzMihMVmFs
dWUgdmFsdWUsIExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBzdG9y
ZTMyKHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICB2b2lkIHN0b3JlNjQoTFZh
bHVlIHZhbHVlLCBMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQpIHsgc3Rv
cmU2NCh2YWx1ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAgdm9pZCBzdG9yZVB0cihM
VmFsdWUgdmFsdWUsIExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBz
dG9yZVB0cih2YWx1ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICNkZWZpbmUgQVNTRVJU
X0dDX09CSkVDVF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBSRUxFQVNFX0FTU0VSVChj
ZWxsKTtcCi0gICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+
dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51
bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpKTsgXAorICAgIFJF
TEVBU0VfQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSA9PSBjZWxsLT5zdHJ1
Y3R1cmUoKS0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3aGlsZSAoMCkKIAogI2Rl
ZmluZSBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7XApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzcsNiArNDM3LDcgQEAgdm9pZCBIZWFwOjpnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKAog
ICAgIEpTQ2VsbCoqIHJlZ2lzdGVyUm9vdHMgPSBzdGFja1Jvb3RzLnJvb3RzKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdGFja1Jvb3RDb3VudDsgaSsrKSB7CiAgICAgICAgIHNldE1h
cmtlZChyZWdpc3RlclJvb3RzW2ldKTsKKyAgICAgICAgcmVnaXN0ZXJSb290c1tpXS0+bWFyaygp
OwogICAgICAgICByb290cy5hZGQocmVnaXN0ZXJSb290c1tpXSk7CiAgICAgfQogfQpAQCAtODU3
LDYgKzg1OCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAKICAgICB7CiAgICAgICAgIEdDUEhB
U0UoU3RvcEFsbG9jYXRpb24pOworICAgICAgICBtX3N0cnVjdHVyZUlEVGFibGUuZmx1c2hPbGRU
YWJsZXMoKTsKICAgICAgICAgbV9vYmplY3RTcGFjZS5zdG9wQWxsb2NhdGluZygpOwogICAgICAg
ICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQogICAgICAgICAg
ICAgbV9zdG9yYWdlU3BhY2UuZGlkU3RhcnRGdWxsQ29sbGVjdGlvbigpOwpAQCAtMTExMCw4ICsx
MTEyLDExIEBAIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnIKIHsKICNp
ZiBFTkFCTEUoR0dDKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY29uc3RfY2Fz
dDxKU0NlbGwqPihmcm9tKSk7Ci0gICAgaWYgKCFmcm9tIHx8ICFpc01hcmtlZChmcm9tKSkKKyAg
ICBpZiAoIWZyb20gfHwgIWZyb20tPmlzTWFya2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFmcm9t
IHx8ICFpc01hcmtlZChmcm9tKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJU
KGlzTWFya2VkKGZyb20pKTsKICAgICBhZGRUb1JlbWVtYmVyZWRTZXQoZnJvbSk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShmcm9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgi
CiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllckJ1ZmZlci5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllclN1cHBv
cnQuaCIKQEAgLTIwMSw2ICsyMDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNEZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kZWZlcnJhbERlcHRoIHx8
IE9wdGlvbnM6OmRpc2FibGVHQygpOyB9CiAKKyAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2Nr
QWxsb2NhdG9yKCk7CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUo
KSB7IHJldHVybiBtX3N0cnVjdHVyZUlEVGFibGU7IH0KKwogI2lmIFVTRShDRikKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCByZWxlYXNlU29vbihSZXRhaW5QdHI8VD4mJik7CiAj
ZW5kaWYKQEAgLTI1OSw3ICsyNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90
IHNpemVBZnRlckNvbGxlY3QoKTsKIAogICAgICAgICBKU1N0YWNrJiBzdGFjaygpOwotICAgICAg
ICBCbG9ja0FsbG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKICAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgICAgICB2
b2lkIGRlY3JlbWVudERlZmVycmFsRGVwdGgoKTsKQEAgLTI4MCw2ICsyODMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblBy
b2dyZXNzOwogICAgICAgICBCbG9ja0FsbG9jYXRvciBtX2Jsb2NrQWxsb2NhdG9yOworICAgICAg
ICBTdHJ1Y3R1cmVJRFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICAgICAgTWFya2VkU3Bh
Y2UgbV9vYmplY3RTcGFjZTsKICAgICAgICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAg
ICAgICAgIEdDSW5jb21pbmdSZWZDb3VudGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5QnVmZmVy
czsKQEAgLTM5MywxOCArMzk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAK
LSAgICBpbmxpbmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBK
U0NlbGwqIHRvKQotICAgIHsKLSNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCi0g
ICAgICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwotI2VuZGlm
Ci0gICAgICAgIGlmICghZnJvbSB8fCAhaXNNYXJrZWQoZnJvbSkpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIGlmICghdG8gfHwgaXNNYXJrZWQodG8pKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBhZGRUb1JlbWVtYmVyZWRTZXQoZnJvbSk7Ci0gICAgfQotCiAgICAgaW5saW5l
IHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNWYWx1ZSB0bykK
ICAgICB7CiAjaWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsMjAgKzI0NCwyMiBAQCBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0
aE5vCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9y
bWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAg
ICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3Bh
Y2UucHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9ub3Jt
YWxTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAg
ICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JF
YWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9y
U3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAg
fQotCiAgICAgbV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rv
cik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAg
ICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3Vu
dDsgKytpKQorICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0
b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFj
ZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0
dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5j
dG9yKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisg
ICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2Nh
dG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURl
c3RydWN0b3JTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAg
ICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDE2NDY1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgsOSArMTA4LDEyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRv
cjo6aW50ZXJuYWwKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICB2YWxpZGF0ZShjZWxs
KTsKICNlbmRpZgotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0TWFya2VkKGNlbGwpIHx8ICFjZWxs
LT5zdHJ1Y3R1cmUoKSkKKyAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChjZWxsKSB8fCAh
Y2VsbC0+c3RydWN0dXJlKCkpIHsKKyAgICAgICAgQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGNlbGwtPm1hcmsoKTsKICAgICBtX2J5dGVz
VmlzaXRlZCArPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2VsbCktPmNlbGxTaXplKCk7CiAgICAg
ICAgIAogICAgIE1BUktfTE9HX0NISUxEKCp0aGlzLCBjZWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjg2LDkgKzI4Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHBheWxvYWRGb3Io
c3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CiAgICAgfQogCi0gICAgSnVt
cCBicmFuY2hJZk5vdE9iamVjdChHUFJSZWcgc3RydWN0dXJlUmVnKQorICAgIEp1bXAgYnJhbmNo
SWZDZWxsTm90T2JqZWN0KEdQUlJlZyBjZWxsUmVnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIEdQUlJl
ZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBwcmVzZXJ2ZTEgPSBJbnZhbGlkR1BSUmVnLCBHUFJS
ZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMyA9IEludmFsaWRH
UFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJbnZhbGlkR1BSUmVnKQpAQCAtMzg3LDIxICszODcs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQog
I2VuZGlmCiAKLSAgICBKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJS
ZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMikKKyAgICBKdW1wIGdlbmVyaWNXcml0ZUJhcnJp
ZXIoR1BSUmVnIG93bmVyKQogICAgIHsKLSAgICAgICAgbW92ZShvd25lciwgc2NyYXRjaDEpOwot
ICAgICAgICBtb3ZlKG93bmVyLCBzY3JhdGNoMik7Ci0gICAgCi0gICAgICAgIGFuZFB0cihUcnVz
dGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNoMSk7Ci0gICAgICAgIGFu
ZFB0cihUcnVzdGVkSW1tUHRyKH5NYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRjaDIpOwot
ICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHJzaGlmdDY0KFRydXN0ZWRJbW0zMihN
YXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRB
bW91bnQpLCBzY3JhdGNoMik7Ci0jZWxzZQotICAgICAgICByc2hpZnQzMihUcnVzdGVkSW1tMzIo
TWFya2VkQmxvY2s6OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNoaWZ0
QW1vdW50KSwgc2NyYXRjaDIpOwotI2VuZGlmCi0gICAgCi0gICAgICAgIHJldHVybiBicmFuY2hU
ZXN0OChaZXJvLCBCYXNlSW5kZXgoc2NyYXRjaDEsIHNjcmF0Y2gyLCBUaW1lc09uZSwgTWFya2Vk
QmxvY2s6Om9mZnNldE9mTWFya3MoKSkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhvd25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOwogICAgIH0KIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJv
eGVkIGFuZCBKU1ZhbHVlcy4KQEAgLTU1OSw2ICs1NDcsNzkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gb2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKTsKICAgICB9CiAKKyAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFJlZ2lzdGVySUQg
c291cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNv
dXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisgICAgICAgIGxvYWRQ
dHIodm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBzY3JhdGNoKTsKKyAgICAg
ICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIGRlc3QsIE1hY3Jv
QXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgZGVzdCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oc2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291
cmNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyNlbmRpZgorICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKEFzc2VtYmx5SGVscGVycyYgaml0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3QpOwor
ICAgICAgICBqaXQubG9hZFB0cihqaXQudm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFz
ZSgpLCBzY3JhdGNoKTsKKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzY3JhdGNoLCBkZXN0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3QpOwor
I2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJl
V2l0aFR5cGVJbmZvKFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJl
Z2lzdGVySUQpCisgICAgeworICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8o
KnRoaXMsIHN0cnVjdHVyZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwg
UmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBs
b2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmU2NChzY3JhdGNoLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsK
KyNlbHNlCisgICAgICAgIC8vIFN0b3JlIGFsbCB0aGUgaW5mbyBmbGFncyB1c2luZyBhIHNpbmds
ZSAzMi1iaXQgd2lkZSBsb2FkIGFuZCBzdG9yZS4KKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSks
IHNjcmF0Y2gpOworICAgICAgICBzdG9yZTMyKHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGRlc3QsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgICAgICAvLyBT
dG9yZSB0aGUgU3RydWN0dXJlSUQKKyAgICAgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNl
bmRpZgorICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBl
SW5mbyhBc3NlbWJseUhlbHBlcnMmIGppdCwgVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRy
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChzdHJ1Y3R1
cmVQdHItPmlkQmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBKdW1wIGNvcnJl
Y3RTdHJ1Y3R1cmUgPSBqaXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1
cmVQdHItPmlkKCkpKTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVj
dFN0cnVjdHVyZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlw
ZSA9IGppdC5icmFuY2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0Nl
bGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5k
ZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVj
dEluZGV4aW5nVHlwZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdFR5cGUgPSBq
aXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZv
KCkudHlwZSgpKSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RU
eXBlLmxpbmsoJmppdCk7CisKKyAgICAgICAgSnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNo
OChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGlu
ZVR5cGVGbGFncygpKSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJl
Y3RGbGFncy5saW5rKCZqaXQpOworI2VuZGlmCisjZWxzZQorICAgICAgICAvLyBEbyBhIDMyLWJp
dCB3aWRlIHN0b3JlIHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBmaWVsZHMuCisgICAgICAgIGpp
dC5zdG9yZTMyKFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9u
QmxvYigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5
cGVPZmZzZXQoKSkpOworICAgICAgICBqaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRp
ZgorICAgIH0KKwogICAgIHZvaWQgd3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lciwgR1BSUmVnIHNj
cmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIsIFdyaXRlQmFycmllclVzZUtpbmQgdXNlS2luZCkKICAg
ICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShvd25lcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNSw3ICszMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgZW1pdExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVy
SUQgdmFsdWUpOwogICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgs
IEZQUmVnaXN0ZXJJRCB2YWx1ZSk7Ci0gICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChS
ZWdpc3RlcklEIHN0cnVjdHVyZVJlZyk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RP
YmplY3QoUmVnaXN0ZXJJRCBjZWxsUmVnKTsKIAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRy
YW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJl
Z2lzdGVySUQgc2NyYXRjaCk7CiAgICAgICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNo
ZWNrKEpTQ2VsbCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZh
aWx1cmVDYXNlcywgUmVnaXN0ZXJJRCBzY3JhdGNoKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBXcml0ZUJhcnJpZXJNb2RlIHsgVW5jb25kaXRpb25h
bFdyaXRlQmFycmllciwgU2hvdWxkRmlsdGVyVmFsdWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSB9OwogICAgICAgICAvLyB2YWx1ZSByZWdpc3RlciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQg
YmVmb3JlIGFueSBzY3JhdGNoIHJlZ2lzdGVycwogICAgICAgICAvLyBzbyBtYXkgc2FmZWx5IGJl
IHRoZSBzYW1lIGFzIGVpdGhlciBvZiB0aGUgc2NyYXRjaCByZWdpc3RlcnMuCi0gICAgICAgIEp1
bXAgY2hlY2tNYXJrV29yZChSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gxLCBS
ZWdpc3RlcklEIHNjcmF0Y2gyKTsKKyAgICAgICAgSnVtcCBjaGVja01hcmtXb3JkKFJlZ2lzdGVy
SUQgb3duZXIpOwogICAgICAgICBKdW1wIGNoZWNrTWFya1dvcmQoSlNDZWxsKiBvd25lcik7CiAg
ICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFs
dWUsIFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlND
ZWxsKiBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUpOwpAQCAtMzI4LDgg
KzMyOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoVmFsdWVQcm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZSgpOwotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9m
aWxlKik7Ci0gICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5k
ZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRj
aCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUs
IEFycmF5UHJvZmlsZSopOworICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JC
eXRlY29kZUluZGV4V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5n
VHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJv
ZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIHZvaWQg
ZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAg
ICAgICAgIApAQCAtMzY5LDYgKzM2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07
CiAKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEp1bXAgYnJhbmNoU3RydWN0dXJlKFJl
bGF0aW9uYWxDb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqKTsKKwogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
SW50KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24g
MTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3JldF9vYmpl
Y3Rfb3JfdGhpcyhJbnMKIAogICAgIGVtaXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwKTsKICAg
ICBKdW1wIG5vdEpTQ2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVt
cElmTm90T2JqZWN0KHJlZ1QyKTsKKyAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZDZWxs
Tm90T2JqZWN0KHJlZ1QwKTsKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAg
ICAgZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKQEAgLTI2Niw4ICsyNjUsOCBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdExvYWQo
cmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygw
KSwgcmVnVDAsIHJlZ1QxKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qx
KTsKLSAgICAgICAgICAgIHN0b3JlUHRyKHJlZ1QxLCBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RI
KG9wX2NhbGwpIC0gMl0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJl
KCkpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1
Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNz
T2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwog
ICAgICAgICB9CiAgICAgCkBAIC0zNDIsNyArMzQxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpKTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIo
ZXhwZWN0ZWRTdHJ1Y3R1cmUpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1Y3R1cmUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0
YWJsZSgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZEV4ZWN1dGFibGUpKSk7CiAgICAgCiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSks
IHJlZ1QxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNp
b24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9w
Y29kZUlEIG9wY29kZUkKICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxk
RW1pdFByb2ZpbGluZygpKSB7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJl
Z2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCks
IHJlZ1QwKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOwotICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICAgICAgc3RvcmVQdHIocmVnVDAsIGluc3RydWN0
aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09m
TGFzdFNlZW5TdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOworICAgICAgICAgICAgc3RvcmUz
MihyZWdUMCwgaW5zdHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQ
cm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAgICAgCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNl
czsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwg
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
UHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3Ry
dWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBleHBlY3RlZFN0cnVjdHVyZSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUo
KSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdU
MSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSwxMCArMTAxLDEwIEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1
ZmYKIAogdm9pZCBKSVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3Jv
QXNzZW1ibGVyJiBqaXQsIEdQUlJlZyBidXR0ZXJmbHkpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVDaGVj
ayA9IGppdC5wYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCisgICAgbV9zdHJ1Y3R1cmVDaGVj
ayA9IGppdC5wYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5
bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgbV9zdHJ1Y3R1
cmVJbW0sIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHVudXNlZFBvaW50ZXIpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1f
YmFzZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAg
IG1fc3RydWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKICAgICAK
ICAgICBtX3Byb3BlcnR5U3RvcmFnZUxvYWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVj
dDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBidXR0ZXJmbHkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24g
MTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBK
U1ZhbHVlUmVncyBtX2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKLSAgICBN
YWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpEYXRhTGFiZWwzMiBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
UGF0Y2hhYmxlSnVtcCBtX3N0cnVjdHVyZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252
ZXJ0aWJsZUxvYWRMYWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CiAgICAgQXNzZW1ibGVyTGFi
ZWwgbV9sb2FkT3JTdG9yZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0R2V0RnJvbUNhbGxGCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRM
b2FkQ2hhcmFjdGVyU3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExp
c3QmIGZhaWx1cmVzKQogewotICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3Moc3JjLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0ciht
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5j
aFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hl
bHBlcnM6OmpzU3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBs
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmlu
Z1ZhbHVlT2Zmc2V0KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIo
WmVybywgZHN0KSk7CkBAIC01NTcsNyArNTU3LDcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OgogCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3Ry
dWN0dXJlKFJlZ2lzdGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1
cm4gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVj
dHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHN0cnVjdHVyZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlm
Tm90SlNDZWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVn
KQpAQCAtNjA1LDkgKzYwNSw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xv
d1RvSG8KICAgICBqdW1wLmxpbmtUbyhtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRp
dmVPZmZzZXRdLCB0aGlzKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0
SnVtcElmTm90T2JqZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBK
SVQ6Okp1bXAgSklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcp
CiB7Ci0gICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsK
KyAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVO
QUJMRShTQU1QTElOR19GTEFHUykKQEAgLTY3OCwxMSArNjc4LDExIEBAIGlubGluZSB2b2lkIEpJ
VDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QoUmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwg
c2NyYXRjaCk7CiAgICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtl
ZEFsbG9jYXRvcjo6b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6
ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCi0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNz
KHJlc3VsdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6
ZSB0aGUgb2JqZWN0J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cigwKSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQo
KSkpOworCisgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1p
dFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsK
IH0KIAogaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmls
ZSogdmFsdWVQcm9maWxlKQpAQCAtNzE4LDIyICs3MTgsMTkgQEAgaW5saW5lIHZvaWQgSklUOjpl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9ieXRl
Y29kZU9mZnNldCk7CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZShSZWdpc3RlcklEIHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNo
LCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGlu
Z1R5cGUsIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewotICAgIFVOVVNFRF9QQVJBTShz
Y3JhdGNoKTsgLy8gV2UgaGFkIGZvdW5kIHRoaXMgc2NyYXRjaCByZWdpc3RlciB1c2VmdWwgaGVy
ZSBiZWZvcmUsIHNvIEkgd2lsbCBrZWVwIGl0IGZvciBub3cuCi0gICAgCi0gICAgUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7Ci0gICAgUmVnaXN0ZXJJRCBp
bmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7Ci0gICAgCi0gICAgaWYgKHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkKLSAgICAgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBhcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgIGlmIChzaG91bGRFbWl0
UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGwsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CisgICAgICAg
IHN0b3JlMzIoaW5kZXhpbmdUeXBlLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3Ry
dWN0dXJlSUQoKSk7CisgICAgfQogCi0gICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOworICAgIGxvYWQ4KEFk
ZHJlc3MoY2VsbCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7
CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2Rl
SW5kZXgoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2Ny
YXRjaCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5
UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJl
Z2lzdGVySUQgaW5kZXhpbmdUeXBlLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotICAgIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBt
X2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVt
aXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChjZWxsLCBpbmRleGluZ1R5cGUsIG1fY29kZUJs
b2NrLT5nZXRPckFkZEFycmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CiB9CiAKIGlubGluZSB2
b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9m
aWxlKiBhcnJheVByb2ZpbGUpCkBAIC0xMDgyLDYgKzEwNzksMjYgQEAgQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6ZW1pdFRhZ0FzQm9vbEltbQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkK
IAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihj
b25kaXRpb24sIGxlZnRIYW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwor
I2Vsc2UKKyAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PgorTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBq
aXQsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0
SGFuZFNpZGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgcmV0dXJuIGppdC5icmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJu
IGppdC5icmFuY2hQdHIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEwLDggKzIxMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8g
Q2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNl
b2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTIzMCw4ICsyMjksNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlw
ZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVj
dChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1Qx
KSk7CiAKICAgICAvLyBPcHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0
YXJ0IGxvb3BpbmcuCiAgICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90
byBhbmQgcmVnVDIgc3RpbGwgY29udGFpbnMgdmFsdWUuCkBAIC0yNDEsNyArMjM5LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUg
cHJvdG90eXBlIG9mIHRoZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdU
MSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYg
d2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgcmVnVDIpOwogICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwg
cmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJl
Z1QxKTsKICAgICBicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlz
KTsKQEAgLTI5NywxMiArMjk1LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJ
bnN0cnVjdGkKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmso
dGhpcyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDEpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNo
VGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAg
ICAgSnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVn
VDEpOwogICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zNDEs
OCArMzM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAg
IGVtaXRMb2FkKHZhbHVlLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
ICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIHJlZ1QxKTsKLSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJl
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDAp
OworICAgIGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBk
b25lID0ganVtcCgpOwogICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtMzgxLDcg
KzM3OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBl
bWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3Qg
IT0gc3JjKQpAQCAtNTAxLDkgKzQ5OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKElu
c3RydWN0aW9uKiAKIAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwg
aGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9u
IHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChi
cmFuY2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zm
c2V0KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVj
dElzRm9yZWlnbiA9IGp1bXAoKTsKQEAgLTUyNyw5ICs1MjMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxX251bGwoSW5zdHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0g
ICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBh
ZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFy
Z2V0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIHJlZ1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIEp1bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNTgzLDggKzU3OCw4
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmlj
Q2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVy
aWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOwogCiAgICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Db21wYXJlU3RyaW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02MjcsOCArNjIyLDggQEAg
dm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChnZXRTbG93Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNl
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihO
b3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1
c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nh
c2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAKICAgICAvLyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpbmdFcSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTY1OCw4ICs2NTMsOCBAQCB2b2lk
IEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEg
c2xvdyBjYXNlIGlmIGJvdGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNo
MzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAg
IEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVz
cyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKICAgICBub3RDZWxsLmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlz
KTsKIApAQCAtNzEwLDEyICs3MDUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0
cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlz
SW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Q2VsbFRhZykpOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZWdUMSk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwog
CiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAg
bW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCByZWdUMik7CiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsK
QEAgLTc0MSwxMiArNzM2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0
aW9uKiAKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVk
aWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJy
YW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBK
dW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEp
OwogICAgIEp1bXAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAg
IGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwg
cmVnVDIpOwogICAgIGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBA
IC03ODUsMTAgKzc4MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rp
b24KICAgICBlbWl0TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxv
Y2stPmlzS25vd25Ob3RJbW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVu
ZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOwotICAgIGlmIChWaXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNS
ZWdpc3RlcigpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0g
ICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0g
ICAgfQorICAgIGlmIChWaXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNS
ZWdpc3RlcigpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RP
YmplY3QuYXBwZW5kKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBX
ZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0
CiAgICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC04NDEsNyArODM0
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQ
dHIocGF5bG9hZEZvcihiYXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0
dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRy
KE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8v
IFRlc3QgYmFzZSdzIHByb3RvdHlwZSBjaGFpbgpAQCAtODUyLDcgKzg0NSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlw
ZSh0aGlzKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9G
KEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykp
KTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0
KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMy
KHNpemVvZihTdHJ1Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8s
IEFkZHJlc3MocmVnVDMpKS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTA5MSw4
ICsxMDg0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAg
IGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxP
YmplY3RUeXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxP
YmplY3RUeXBlKSkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdU
Mik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNr
X2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2VWYWwpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5z
dGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNz
KHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
QEAgLTEzOCw4ICsxMzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0
aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xv
d0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRK
dW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkg
bG9hZCB0aGUgcmVzdWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxs
eSwgcmVnVDEgc3RpbGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZh
bHVlLgpAQCAtMTQ5LDcgKzE0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5z
dHJ1Y3Rpb24KIAogICAgIC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJl
Z1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2Us
IGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRo
ZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJl
Z1QyLCByZWdUMiwgcmVnVDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
OnByb3RvdHlwZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5j
aFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5s
aW5rVG8obG9vcCwgdGhpcyk7CkBAIC0xNzQsMTIgKzE3MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pc191bmRlZmluZWQoSW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAog
ICAgIGlzQ2VsbC5saW5rKHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigwKSwgcmVnVDApOwogICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAo
KTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRM
b2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAg
IGNvbXBhcmVQdHIoRXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjIxLDggKzIxOSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0
SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWws
IEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdU
eXBlKSwgcmVnVDApOwogICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1
bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKQEAgLTI3Nyw4ICsyNzQsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4g
JWVheC4KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1w
SWZOb3RKU0NlbGwocmV0dXJuVmFsdWVHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5W
YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5v
dE9iamVjdCA9IGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0
ID0gZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVHUFIpOwogCiAgICAgLy8gUmV0
dXJuLgogICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC0zMDIsNyArMjk4LDkgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aQogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAgICAgCiAgICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZO
b3RKU0NlbGwocmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92
bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN0cnVj
dHVyZShOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAorICAgICAgICBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICBpc0ltbS5saW5rKHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0zNTMsOCArMzUx
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAg
aXNJbW1lZGlhdGUgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZpcnN0
LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQg
b24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CisgICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJv
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVn
VDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRk
cmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFy
Z2V0KTsKICAgICBKdW1wIG1hc3F1ZXJhZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgp
OwpAQCAtMzc2LDggKzM3NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVj
dGlvbioKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7
CiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGFkZEp1bXAoYnJh
bmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOwor
ICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkp
LCB0YXJnZXQpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwog
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdU
MCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVj
dHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCB3
YXNOb3RJbW1lZGlhdGUgPSBqdW1wKCk7CkBAIC00NzIsMTAgKzQ3MCw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGJhc2UsIHJlZ1QwKTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRl
KGJhc2UpKQogICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChy
ZWdUMCkpOwotICAgIGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZz
ZXQoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAg
ICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0K
KyAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwg
bV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQo
ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QocmVnVDApKTsKIAogICAgIC8vIFdlIGNvdWxkIGlubGlu
ZSB0aGUgY2FzZSB3aGVyZSB5b3UgaGF2ZSBhIHZhbGlkIGNhY2hlLCBidXQKICAgICAvLyB0aGlz
IGNhbGwgZG9lc24ndCBzZWVtIHRvIGJlIGhvdC4KQEAgLTUyOSw3ICs1MjUsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7
CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgY2FsbEhh
c1Byb3BlcnR5LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJl
c3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hl
ZFN0cnVjdHVyZSkpKSkpOwogCiAgICAgLy8gVGVzdCBiYXNlJ3MgcHJvdG90eXBlIGNoYWluCkBA
IC01NDAsNyArNTM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlv
bgogICAgIExhYmVsIGNoZWNrUHJvdG90eXBlKHRoaXMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJl
Z1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQ
cm9wZXJ0eS5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMikpOwotICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBl
bWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QxKTsKICAgICBjYWxsSGFzUHJvcGVy
dHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMpKSk7CiAg
ICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7CiAgICAg
YnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNrUHJvdG90
eXBlLCB0aGlzKTsKQEAgLTcxMCwxMiArNzA2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251
bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1Qw
KTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChO
b25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1w
IHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwg
cmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCBy
ZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTc0MiwxMiArNzM4LDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNy
YzEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChy
ZWdUMCk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVt
cCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsK
ICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBp
c01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVy
ZShyZWdUMCwgcmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRy
KE5vdEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTgxNSwxMSArODExLDEyIEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwogCi0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgbG9h
ZFB0cihjYWNoZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIo
Tm90RXF1YWwsIHJlZ1QwLCByZWdUMikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIo
WmVybywgcmVnVDIpKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikp
OwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC04OTMsNiArODkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Rv
X3RoaXMoSW5zdHJ1Y3RpbwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsKIAogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfdG9fdGhpcyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25SZWFsbG9jYXRlU3QKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgPiBiYXNlLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJh
c2UtPnN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVCghdm0u
aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGJhc2UtPnNldFN0
cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkodm0sIHN0cnVjdHVyZSk7CiAg
ICAgYmFzZS0+cHV0RGlyZWN0KHZtLCBvZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwpA
QCAtNDQ2LDYgKzQ0Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRl
U3QKIAogc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
YmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYg
dm0gPSBjYWxsRnJhbWUtPnZtKCk7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIo
KSkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwogICAgICAg
ICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKQEAgLTQ1Myw3ICs0NTQsNyBAQCBzdGF0aWMg
dm9pZCBwdXRCeVZhbChDYWxsRnJhbWUqIGNhbGxGcmFtCiAgICAgICAgICAgICBpZiAob2JqZWN0
LT5jYW5TZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkoY2FsbEZyYW1lLT52bSgpLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwg
Y2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpOworICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4
KG9iamVjdCwgY2FsbEZyYW1lLCBpLCB2YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXRC
eUluZGV4KGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKTsKICAgICB9IGVsc2UgaWYgKGlzTmFtZShzdWJzY3JpcHQpKSB7CkBAIC01MDMs
OSArNTA0LDkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZQogICAg
ICAgICBCeVZhbEluZm8mIGJ5VmFsSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRCeVZhbElu
Zm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8uc3R1YlJv
dXRpbmUpOwogCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3Ry
dWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+
c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0g
ICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0
dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5
TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOwog
ICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAgICAg
ICAgICAgICAgICAgSklUOjpjb21waWxlUHV0QnlWYWwoJnZtLCBleGVjLT5jb2RlQmxvY2soKSwg
JmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1v
ZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKQEAgLTUxOSw3ICs1MjAs
NyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlCiAgICAgICAgICAg
ICAvLyB3aGVyZSB3ZSBzZWUgbm9uLWluZGV4LWludGVyY2VwdGluZyBvYmplY3RzLCB0aGlzIGdp
dmVzIDEwIGl0ZXJhdGlvbnMgd29ydGggb2YKICAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IGZv
ciB1cyB0byBvYnNlcnZlIHRoYXQgdGhlIGdldF9ieV92YWwgbWF5IGJlIHBvbHltb3JwaGljLgog
ICAgICAgICAgICAgaWYgKCsrYnlWYWxJbmZvLnNsb3dQYXRoQ291bnQgPj0gMTAKLSAgICAgICAg
ICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgeworICAgICAg
ICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgICAg
ICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoZXhlYy0+Y29kZUJsb2NrKCkpOwogICAg
ICAgICAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvblB1dEJ5
VmFsR2VuZXJpYykpOwpAQCAtNTQ5LDkgKzU1MCw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EaXJlY3RQdXRCeVYKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5nZXRCeVZhbEluZm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAg
ICAgQVNTRVJUKCFieVZhbEluZm8uc3R1YlJvdXRpbmUpOwogICAgICAgICAKLSAgICAgICAgaWYg
KGhhc09wdGltaXphYmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUoKSkpIHsKKyAgICAgICAg
aWYgKGhhc09wdGltaXphYmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSkgewogICAg
ICAgICAgICAgLy8gQXR0ZW1wdCB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIEpJVEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9y
U3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlN
b2RlICE9IGJ5VmFsSW5mby5hcnJheU1vZGUpIHsKICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBp
bGVEaXJlY3RQdXRCeVZhbCgmdm0sIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksICZieVZhbEluZm8s
IFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYXJyYXlNb2RlKTsKICAgICAg
ICAgICAgICAgICBkaWRPcHRpbWl6ZSA9IHRydWU7CkBAIC01NjUsNyArNTY2LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VgogICAgICAgICAgICAgLy8gd2hlcmUg
d2Ugc2VlIG5vbi1pbmRleC1pbnRlcmNlcHRpbmcgb2JqZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVy
YXRpb25zIHdvcnRoIG9mCiAgICAgICAgICAgICAvLyBvcHBvcnR1bml0eSBmb3IgdXMgdG8gb2Jz
ZXJ2ZSB0aGF0IHRoZSBnZXRfYnlfdmFsIG1heSBiZSBwb2x5bW9ycGhpYy4KICAgICAgICAgICAg
IGlmICgrK2J5VmFsSW5mby5zbG93UGF0aENvdW50ID49IDEwCi0gICAgICAgICAgICAgICAgfHwg
b2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlT
bG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKKyAgICAgICAgICAgICAgICB8
fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgICAgICAgICAgUmVwYXRj
aEJ1ZmZlciByZXBhdGNoQnVmZmVyKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOwogICAgICAgICAg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkRpcmVjdFB1dEJ5
VmFsR2VuZXJpYykpOwpAQCAtNzgwLDExICs3ODEsMTIgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRv
T3B0aW1pemVDbG9zdXJlQ2FsbAogICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBWTSYgdm0gPSBleGVjQ2FsbGVlLT52bSgpOwog
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOwogICAgIEpTRnVuY3Rpb24qIG9sZENhbGxlZSA9IGNhbGxMaW5rSW5mby5jYWxs
ZWUuZ2V0KCk7CiAgICAgCiAgICAgaWYgKCFvbGRDYWxsZWUKLSAgICAgICAgfHwgb2xkQ2FsbGVl
LT5zdHJ1Y3R1cmUoKSAhPSBjYWxsZWUtPnN0cnVjdHVyZSgpCisgICAgICAgIHx8IG9sZENhbGxl
ZS0+c3RydWN0dXJlKHZtKSAhPSBjYWxsZWUtPnN0cnVjdHVyZSh2bSkKICAgICAgICAgfHwgb2xk
Q2FsbGVlLT5leGVjdXRhYmxlKCkgIT0gY2FsbGVlLT5leGVjdXRhYmxlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKQEAgLTEzNDQsMjIgKzEzNDYsMjIgQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblByb2ZpbGVXaWxsQwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkNoZWNrSGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsKQogewotICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkQmFzZVZhbCk7CiAKICAgICBpZiAoYmFzZVZhbC5pc09iamVjdCgpKSB7CiAgICAg
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbCk7Ci0gICAgICAgIEFT
U0VSVCghYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSgpKTsKLSAgICAgICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKSB7Ci0gICAgICAgICAgICBib29sIHJl
c3VsdCA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VP
YmplY3QsIGV4ZWMsIHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCFiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAg
ICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNI
YXNJbnN0YW5jZSgpKSB7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+Y3VzdG9tSGFzSW5zdGFuY2UoYmFzZU9iamVjdCwgZXhlYywgdmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
SW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworICAg
IHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVj
LCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CiB9CiAKQEAgLTE0NTAsOSArMTQ1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVj
LT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAg
IEFTU0VSVCghYnlWYWxJbmZvLnN0dWJSb3V0aW5lKTsKICAgICAgICAgCi0gICAgICAgIGlmICho
YXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlm
IChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAg
ICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUg
YXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkp
OworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0
cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9k
ZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxl
R2V0QnlWYWwoJnZtLCBleGVjLT5jb2RlQmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVz
c1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRp
ZE9wdGltaXplID0gdHJ1ZTsKQEAgLTE0NjYsNyArMTQ2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICAgICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24t
aW5kZXgtaW50ZXJjZXB0aW5nIG9iamVjdHMsIHRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0
aCBvZgogICAgICAgICAgICAgLy8gb3Bwb3J0dW5pdHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0
aGUgZ2V0X2J5X3ZhbCBtYXkgYmUgcG9seW1vcnBoaWMuCiAgICAgICAgICAgICBpZiAoKytieVZh
bEluZm8uc2xvd1BhdGhDb3VudCA+PSAxMAotICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CisgICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgewogICAgICAgICAgICAgICAgIC8vIERvbid0
IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVw
YXRjaEJ1ZmZlcihleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgICAgICAgICAgICAgcmVwYXRjaEJ1
ZmZlci5yZWxpbmtDYWxsZXJUb0Z1bmN0aW9uKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgRnVuY3Rpb25QdHIob3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKSk7CkBAIC0xNTMw
LDcgKzE1MzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlCiAg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNPYmpl
Y3QqIGJhc2VPYmogPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2JqZWN0KGV4ZWMp
OwotICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqLCBleGVjLCAqaWRlbnRpZmllcik7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhl
YywgKmlkZW50aWZpZXIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVs
ZXRlKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSkKICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKQEAgLTE1NDIsNyArMTU0NCw3
IEBAIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUoKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iai0+c3RydWN0dXJlKHZtKTsKICAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJh
dGlvbkNhY2hlKCk7CiAgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90
b3R5cGVDaGFpbihleGVjKSkKICAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvYmopOwpAQCAtMTY3MiwxMCArMTY3NCwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgfQogCiAg
ICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50
aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBh
dCBjb21waWxlIHRpbWUuCi0gICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmIHNsb3Qu
c2xvdEJhc2UoKSA9PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSkgeworICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5
QWNjZXNzZXNBcmVDYWNoZWFibGUoKSkgewogICAgICAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgp
ID09IEdsb2JhbFByb3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0
dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+
c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZt
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsK
ICAgICAgICAgICAgIHBjWzZdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAg
ICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDcgKzgzLDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHVi
R2VuZQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVy
ZXM7Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3Ry
dWN0dXJlKGppdCwgTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAgICAvLyBMb2Fk
IHN0cmluZyBsZW5ndGggdG8gcmVnVDEsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5n
IHRoZSBkYXRhIHBvaW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdU
MCwgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMTMy
LDggKzEzMiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAg
ICAKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwo
YmFzZSwgcmVnVDEpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCBy
ZWdUMywgcHJvZmlsZSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1Qw
LCByZWdUMSwgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVN
YXNrKSwgcmVnVDEpOwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjM1LDcgKzIz
NCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1
bXAgbm9uQ2VsbCA9IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJy
YXkgY2hlY2sKLSAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1
Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX3Zt
LT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBK
dW1wIGZhaWxlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7CkBAIC0yNzYsOCArMjc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRB
cnJheVByb2ZpbGluZ1NpdGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QxLCBwcm9maWxlKTsKICAgICBhbmQzMihU
cnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMSk7CiAgICAgCiAgICAgUGF0Y2hh
YmxlSnVtcCBiYWRUeXBlOwpAQCAtNDc1LDEwICs0NzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsK
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCi0gICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5
dGVjb2RlSW5kZXgocmVnVDIsIHJlZ1QzLCBtX2J5dGVjb2RlT2Zmc2V0KTsKLSAgICB9CisgICAg
aWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFBy
b2ZpbGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRl
eFdpdGhDZWxsKHJlZ1QwLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CiAKICAgICBKSVRHZXRC
eUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRl
Y29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCkBAIC02MzQsNyAr
NjMwLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVt
aXRMb2FkUGF5bG9hZChpdGVyLCByZWdUMSk7CiAgICAgCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3Ry
dWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSks
IHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTczMSw3ICs3
MjcsNyBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAg
ZW1pdExvYWQoc2NvcGUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVTbG90
LCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHko
dWludHB0cl90KiBvcGVyYW5kU2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTEsNyArNTEsMTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2Vu
ZQogewogICAgIEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7
Ci0gICAgZmFpbHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0
dXJlKGppdCwKKyAgICAgICAgTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgdm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQg
dGhlIHByb2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBq
aXQubG9hZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZz
ZXQoKSksIHJlZ1QyKTsKQEAgLTEwNiw4ICsxMDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
YnlfdmFsKEluc3RydWN0aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsK
IAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwot
ICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBl
bWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKICAg
ICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAKICAgICBQ
YXRjaGFibGVKdW1wIGJhZFR5cGU7CkBAIC0yMDQsNyArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX2dldF9ieV92YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0
ZXIsIGJhc2UpOyAvLyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBu
b3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOworICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCAKKyAg
ICAgICAgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAg
ICAgIG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2Rl
TG9jYXRpb25MYWJlbChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRv
cikuY29kZSgpKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywgcmVnVDAp
OwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yNzUsNyArMjc5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0IGJhc2Un
cyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCBy
ZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVz
cyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVk
U3RydWN0dXJlKSkpKTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1
YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwpAQCAtMzE2LDggKzMyMCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVudCBpbiBv
cF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1p
dEFycmF5UHJvZmlsaW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOworICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogICAgIGFuZDMy
KFRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKICAgICAKICAgICBQYXRj
aGFibGVKdW1wIGJhZFR5cGU7CkBAIC01MTMsMTAgKzUxNiw4IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RK
U0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEp
OwotICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMSwg
cmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0t
PnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAg
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDAsIHJl
Z1QxLCBtX2J5dGVjb2RlT2Zmc2V0KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0
ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKQEAgLTY5Myw3ICs2OTQsOSBAQCB2b2lkIEpJVDo6
ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzY29wZSwgcmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0dXJlU2xvdCwgcmVnVDEpOwot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dFB0cihaZXJvLCByZWdUMSkpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QxKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBv
cGVyYW5kU2xvdCkKQEAgLTc1NCw2ICs3NTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2Zyb21fc2NvcGUoSW5zCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNv
bHZlVHlwZSA9PSBDbG9zdXJlVmFyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVzb2x2
ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAg
bGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJh
dGlvbkdldEZyb21TY29wZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODU1LDYg
Kzg2MCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHIKICAgICBp
ZiAoKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAmJiBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0u
dS53YXRjaHBvaW50U2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpCiAgICAgICAgIGxpbmtD
b3VudCsrOworICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxp
bmtDb3VudCsrOwogICAgIGlmICghbGlua0NvdW50KQogICAgICAgICByZXR1cm47CiAgICAgd2hp
bGUgKGxpbmtDb3VudC0tKQpAQCAtODcyLDI1ICs4NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aW5pdF9nbG9iYWxfY29uc3QoSW5zdAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotSklU
OjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNj
cmF0Y2gxLCBSZWdpc3RlcklEIHNjcmF0Y2gyKQorSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29y
ZChSZWdpc3RlcklEIG93bmVyKQogewotICAgIG1vdmUob3duZXIsIHNjcmF0Y2gxKTsKLSAgICBt
b3ZlKG93bmVyLCBzY3JhdGNoMik7Ci0KLSAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihNYXJrZWRC
bG9jazo6YmxvY2tNYXNrKSwgc2NyYXRjaDEpOwotICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKH5N
YXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRjaDIpOwotCi0gICAgcnNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyKDMgKyA0KSwgc2NyYXRjaDIpOwotCi0gICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8s
IEJhc2VJbmRleChzY3JhdGNoMSwgc2NyYXRjaDIsIFRpbWVzT25lLCBNYXJrZWRCbG9jazo6b2Zm
c2V0T2ZNYXJrcygpKSk7CisgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3Mob3du
ZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsKIH0KIAogSklUOjpKdW1wIEpJVDo6Y2hlY2tN
YXJrV29yZChKU0NlbGwqIG93bmVyKQogewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtl
ZEJsb2NrOjpibG9ja0Zvcihvd25lcik7Ci0gICAgc2l6ZV90IGluZGV4ID0gKHJlaW50ZXJwcmV0
X2Nhc3Q8c2l6ZV90Pihvd25lcikgJiB+TWFya2VkQmxvY2s6OmJsb2NrTWFzaykgPj4gKDMgKyA0
KTsKLSAgICB2b2lkKiBhZGRyZXNzID0gKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSAr
IE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtzKCkpICsgaW5kZXg7Ci0KKyAgICB1aW50OF90KiBh
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0Rh
dGFPZmZzZXQoKTsKICAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywgQWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKIH0KIApAQCAtOTA4LDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0V3JpdGVC
YXJyaWVyKHVuc2lnbmVkIG93bmUKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5k
VmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdU
MCwgdGFnTWFza1JlZ2lzdGVyKTsKIAotICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01h
cmtXb3JkKHJlZ1QwLCByZWdUMSwgcmVnVDIpOworICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBj
aGVja01hcmtXb3JkKHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0
aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1QwKTsKICAgICBvd25lck5vdE1hcmtlZC5saW5rKHRoaXMp
OwogCkBAIC05NTcsNyArOTUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWdu
ZWQgb3duZQogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAg
ICAgb3duZXJOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFy
a1dvcmQocmVnVDEsIHJlZ1QwLCByZWdUMik7CisgICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNo
ZWNrTWFya1dvcmQocmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRp
b25hbFdyaXRlQmFycmllciwgcmVnVDEpOwogICAgIG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7
CiAKQEAgLTEwMTMsNyArMTAwOSw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5z
aXRpb25DaGUKICAgICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHVi
SW5mby0+YWRkV2F0Y2hwb2ludChtX2NvZGVCbG9jaykpOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgICAgICBK
dW1wIG9rID0gYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBKdW1wIG9r
ID0gYnJhbmNoU3RydWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFrcG9pbnQoKTsKICAgICAg
ICAgb2subGluayh0aGlzKTsKICNlbmRpZgpAQCAtMTAyMiw3ICsxMDE4LDcgQEAgSklUOjpKdW1w
IEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIob2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICByZXR1cm4gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFs
LCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVy
ZSk7CiB9CiAKIHZvaWQgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiBv
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTExODAsOCAr
MTE3Niw4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICAK
ICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0
Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsK
KyAgICBsb2FkOChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBz
Y3JhdGNoKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0
Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93
Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFz
ZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFB0cihB
ZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgYmFzZSk7
CiAgICAgCkBAIC0xMjUwLDkgKzEyNDYsOSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0
VHlwZWRBcnJheUdlCiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAg
Ci0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIGJhZFR5cGUgPSBwYXRj
aGFibGVCcmFuY2gzMihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBl
ZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0
T2ZMZW5ndGgoKSkpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZp
ZXc6Om9mZnNldE9mVmVjdG9yKCkpLCBiYXNlKTsKICAgICAKQEAgLTEzMDQsOCArMTMwMCw4IEBA
IEpJVDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1w
TGlzdCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFi
bGVCcmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7
CisgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
ZWFybHlTY3JhdGNoKTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWws
IGVhcmx5U2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkp
OwogICAgIEp1bXAgaW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIEFkZHJlc3Mo
YmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKICAgICBlbWl0QXJy
YXlQcm9maWxlT3V0T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKICAgICBKdW1wIGRvbmUg
PSBqdW1wKCk7CkBAIC0xMzc2LDggKzEzNzIsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZs
b2F0VHlwZWRBcnJheVB1CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAg
IGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgZWFybHlT
Y3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKGVhcmx5U2NyYXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIoY2xhc3NJbmZvRm9yVHlwZSh0eXBlKSkpOworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgYmFkVHlw
ZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0z
Mih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJh
bmNoMzIoQmVsb3csIHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3Ojpv
ZmZzZXRPZkxlbmd0aCgpKSk7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lh
bENhc2UocHJvZmlsZSk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Myw3ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRGYXN0
QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CiAj
ZW5kaWYKIAotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJl
ZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUpOworICAgICAgICBKdW1wIGVtaXRKdW1w
SWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsKIAogICAgICAgICB2b2lkIGVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5
LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAg
ICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkpOwpAQCAtMjI0LDEwICsyMjQsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VK
SVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFz
ZVJlZywgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUgdHlwZSkKKyAgICBBTFdBWVNfSU5M
SU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlw
ZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbG9hZFB0
cihBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVn
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaFJlZywg
U3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7Cisg
ICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVySUQg
dG8sIFJlZ2lzdGVySUQgZnJvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRGR1Nw
ZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oIgpAQCAtMTAzLDcgKzEwNSw3IEBAIHN0
YXRpYyB2b2lkIHJlcGF0Y2hCeUlkU2VsZkFjY2VzcyhWTSYgdm0KICAgICByZXBhdGNoQ2FsbChy
ZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rp
b24pOwogCiAgICAgLy8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2Yg
dGhlIGxvYWQuCi0gICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2hlY2tJbW1Ub0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRj
aChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0
cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4oc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1
Y3Rpb25Jc0FjdGl2ZShzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uY29udmVydGlibGVMb2Fk
QXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZM
aW5lT2Zmc2V0KG9mZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3Qp
CkBAIC0xMzEsMTAgKzEzMywxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9u
Q2hlY2soCiAgICAgICAgIC8vIElmIHdlIGV4ZWN1dGUgdGhpcyBjb2RlLCB0aGUgb2JqZWN0IG11
c3QgaGF2ZSB0aGUgc3RydWN0dXJlIHdlIGV4cGVjdC4gQXNzZXJ0CiAgICAgICAgIC8vIHRoaXMg
aW4gZGVidWcgbW9kZXMuCiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG9iamVjdCksIHNjcmF0Y2hHUFIpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBvayA9IGppdC5icmFuY2hQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0g
YnJhbmNoU3RydWN0dXJlKGppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
Y3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3Ry
dWN0dXJlKTsKICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluaygmaml0
KTsKICNlbmRpZgpAQCAtMTQzLDEwICsxNDUsMTAgQEAgc3RhdGljIHZvaWQgYWRkU3RydWN0dXJl
VHJhbnNpdGlvbkNoZWNrKAogICAgIAogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2hHUFIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
Ci0gICAgICAgIGppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShqaXQsCiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsK
KyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKIH0KIAogc3Rh
dGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApAQCAtMTY1LDEwICsxNjcsMTAg
QEAgc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogCiBzdGF0aWMgdm9p
ZCByZXBsYWNlV2l0aEp1bXAoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0KQog
ewotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQ
dHJXaXRoUGF0Y2goKSkgeworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVw
bGFjZVdpdGhKdW1wKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcygKLSAgICAgICAgICAgICAgICBzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoCisgICAgICAgICAgICBSZXBh
dGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoCisg
ICAgICAgICAgICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRP
ZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVs
dGFDaGVja0ltbVRvQ2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0OSw3ICsyNTEsMTAgQEAgc3RhdGljIFByb3RvQ2hh
aW5HZW5lcmF0aW9uUmVzdWx0IGdlbmVyYQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgCi0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFu
Y2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAK
KyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgCisgICAgICAgIHN0cnVjdHVyZSkpOwogCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5m
bygpLm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQpAQCAtMzgwLDggKzM4NSw3
IEBAIHN0YXRpYyBib29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgCi0g
ICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7IAotICAgICAgICBzdHViSml0
LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5i
cmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoSXNBcnJheSkpKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVu
ZChzdHViSml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzaykpKTsKICAgICAg
ICAgCkBAIC01NzMsNyArNTc3LDEwIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXQKICAgICAgICAgCiAgICAgICAgIENDYWxsSGVscGVycyBzdHViSml0KHZtLCBjb2Rl
QmxvY2spOwogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgd3JvbmdTdHJ1
Y3QgPSBzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgd3JvbmdTdHJ1Y3QgPSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgc3RyYXRlZ3kg
d2UgdXNlIGZvciBzdHVicyBpcyBhcyBmb2xsb3dzOgogICAgICAgICAvLyAxKSBDYWxsIERGRyBo
ZWxwZXIgdGhhdCBjYWxscyB0aGUgZ2V0dGVyLgpAQCAtODE3LDcgKzgyNCw3IEBAIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCB3cml0ZUJhcnJpZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2Ny
YXRjaDEpOwogICAgIEFTU0VSVChvd25lciAhPSBzY3JhdGNoMik7CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2Vu
ZXJpY1dyaXRlQmFycmllcihqaXQsIG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBERkc6OlNwZWN1bGF0aXZl
SklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKGppdCwgb3duZXIpOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGwgPSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgYWxsb2NhdG9yKTsKICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmso
JmppdCk7CiAgICAgcmV0dXJuIGNhbGw7CkBAIC04NTgsMTAgKzg2NSwxMCBAQCBzdGF0aWMgdm9p
ZCBlbWl0UHV0UmVwbGFjZVN0dWIoCiAKICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdp
c3RlcnNCeVB1c2hpbmcoc3R1YkppdCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRT
dHJ1Y3R1cmUgPSBzdHViSml0LmJyYW5jaFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBi
YWRTdHJ1Y3R1cmUgPSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVy
ZSk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNh
Y2hlZE9mZnNldCgpKSkKQEAgLTk3NSw3ICs5ODIsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRy
YW5zaXRpb25TdHViKAogICAgICAgICAgICAgCiAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJh
bnNpdGlvbldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCi0gICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvbGRTdHJ1Y3R1cmUpKSk7Cisg
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG9sZFN0
cnVjdHVyZSkpOwogICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAg
ICAgb2xkU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0
dWJJbmZvLCBzdHViSml0LCBmYWlsdXJlQ2FzZXMsCkBAIC0xMDI2LDcgKzEwMzYsMTAgQEAgc3Rh
dGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhhc1N0
b3JhZ2UgPSB0cnVlOwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIEFTU0VSVChvbGRTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwor
ICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0g
c3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICBBU1NFUlQob2xk
U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsK
KyAgICBzdHViSml0LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmUtPmlkKCkpKSwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAg
ICAgICAgIHN0dWJKaXQuc3RvcmU2NCh2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5Jbmxp
bmVTdG9yYWdlKHNsb3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CkBAIC0x
MjcxLDcgKzEyODQsNyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTEzNDYsMTAgKzEzNTksMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVw
YXRjaEluKAogICAgICAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAg
ICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAg
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
CisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygp
Lm5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQpAQCAtMTUwMCwxMCArMTUxMywx
MCBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFw
cGVuZCgKLSAgICAgICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVy
ZShzdHViSml0LAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAK
ICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTU3
MywxNiArMTU4NiwxNiBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKIHZvaWQgcmVzZXRHZXRCeUlE
KFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bykKIHsKICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJu
TG9jYXRpb24sIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgQ29kZUxvY2F0aW9uRGF0
YUxhYmVsUHRyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRh
dGFMYWJlbFB0ckF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0lt
bVRvQ2FsbCk7Ci0gICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJs
ZUJyYW5jaFB0cldpdGhQYXRjaCgpKSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICBS
ZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNz
KHN0cnVjdHVyZUxhYmVsKSwKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVM
YWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0o
aW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CisgICAgaWYgKE1h
Y3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkp
IHsKKyAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwK
LSAgICAgICAgICAgICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAg
ICBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
aW50MzJfdD4odW51c2VkUG9pbnRlcikpOwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0
Y2goc3RydWN0dXJlTGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIp
KTsKKyAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHN0YXRpY19jYXN0
PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0
Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29t
cGFjdEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsK
ICNlbHNlCkBAIC0xNjA3LDE2ICsxNjIwLDE2IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hC
dWZmZXImIHJlcGF0Y2gKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIHJlcGF0Y2hDYWxsKHJlcGF0
Y2hCdWZmZXIsIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24p
OwotICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZv
LmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJ
bmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6
Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0
aFBhdGNoKAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5j
aFB0cldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9u
RGF0YUxhYmVsMzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24u
ZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJ
bW1Ub0NhbGwpOworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVt
cFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJl
cGF0Y2hCdWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhz
dHJ1Y3R1cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1
YkluZm8ucGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2lu
dGVyKSk7CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0
PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVj
dHVyZUxhYmVsLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVy
bkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9M
b2FkT3JTdG9yZSksIDApOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksOCBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTSW50ZXJmYWNlSklULmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKQEAgLTY3LDE0ICs2OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBsb2FkSlNTdHJpbmdBcmd1bWVudChWTSYgdm0sIGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRz
dCk7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFk
ZHJlc3MoZHN0LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChi
cmFuY2hTdHJ1Y3R1cmUoKnRoaXMsIE5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBBZGRyZXNz
KGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgdm0u
c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZv
aWQgbG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3MoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAg
ICAgICAgewogICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKLSAg
ICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBzY3JhdGNoKTsKKyAgICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKGRzdCwgc2NyYXRjaCwg
ZHN0KTsKICAgICAgICAgICAgIGFwcGVuZEZhaWx1cmUoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRy
KGNsYXNzSW5mbykpKTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1
bWVudCBzaW5jZSBlbWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCisgICAgICAgICAgICBs
b2FkQ2VsbEFyZ3VtZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGxvYWRJbnQzMkFyZ3VtZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3Qs
IEp1bXAmIGZhaWxUYXJnZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3Iu
aCIKQEAgLTE4OSw3ICsxOTAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1
YWxGb3JUCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdU
MSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKSk7CiAjZW5kaWYKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7
CisgICAgQXNzZW1ibHlIZWxwZXJzOjplbWl0TG9hZFN0cnVjdHVyZShqaXQsIEdQUkluZm86OnJl
Z1QwLCBHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIHNsb3dDYXNlLmFwcGVu
ZCgKICAgICAgICAgaml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90
RXF1YWwsCkBAIC05NTksOSArOTYwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBh
cnJheUl0ZXJhdAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUNCwgSlNBcnJheUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSwgU3BlY2lhbGl6ZWRU
aHVua0pJVDo6cmVnVDEpOwogICAgIAogICAgIC8vIFB1bGwgb3V0IHRoZSBidXR0ZXJmbHkgZnJv
bSBpdGVyYXRlZE9iamVjdAotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMik7Ci0gICAgCi0gICAgaml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMyk7CisgICAgaml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMyk7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDIpOwogICAgIAogICAgIGppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdT
aGFwZU1hc2spLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEs
MTMgQEAgbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZQogICAgICAgICBw
YXlsb2FkKQogZW5kCiAKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGwsIHN0
cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0
dXJlSURbY2VsbF0KKworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9ibG9iICsgU3RydWN0dXJlSURC
bG9iOjp1LndvcmRzLndvcmQyW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWkgc2NyYXRj
aCwgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXQorZW5kCisKIG1hY3JvIHdyaXRlQmFycmll
ck9uT3BlcmFuZChjZWxsT3BlcmFuZCkKICAgICBpZiBHR0MKICAgICAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKGNlbGxPcGVyYW5kLCB0MSkKQEAgLTc0OCwxMCArNzU1LDkgQEAgX2xsaW50X29w
X3RvX3RoaXM6CiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBd
LCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkcEZyb21JbnN0cnVjdGlv
bigyLCB0MikKLSAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKDMp
CiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC04NjgsOCArODc0LDcgQEAgX2xsaW50X29wX2VxX251bGw6
CiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbElt
bWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJ0Ym56
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgLm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56
IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAsIHQxCiAgICAgam1wIC5vcEVxTnVsbE5v
dEltbWVkaWF0ZQogLm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKQEAgLTkxNSw4ICs5
MjAsNyBAQCBfbGxpbnRfb3BfbmVxX251bGw6CiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcE5lcU51bGxNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgLm9wTmVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBt
b3ZlIDEsIHQxCiAgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKIC5vcE5lcU51bGxNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkOgpAQCAtOTQyLDEwICs5NDYsOCBAQCBtYWNybyBzdHJpY3RFcShl
cXVhbGl0eU9wZXJhdGlvbiwgc2xvd1BhCiAgICAgYmluZXEgdDIsIHQzLCAuc2xvdwogICAgIGJp
YiB0MiwgTG93ZXN0VGFnLCAuc2xvdwogICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5n
Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MV0sIHQzCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKLSAgICBiYmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAu
c2xvdworICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmlu
ZworICAgIGJiZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAuc2xvdwogLm5vdFN0
cmluZzoKICAgICBsb2FkaSA0W1BDXSwgdDIKICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEs
IHQwKQpAQCAtMTIyNSw4ICsxMjI3LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgMTJbUENdLCB0MQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
OgpAQCAtMTI0MCwxNSArMTI0MSwxNCBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICBsb2Fk
aSAxMltQQ10sIHQwCiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNs
b3cKICAgICBsb2FkaSA4W1BDXSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQogICAgIAogICAgICMgUmVnaXN0
ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAogLm9w
SW5zdGFuY2VvZkxvb3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBsb2FkaSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCiAgICAgYnBlcSB0MiwgdDEs
IC5vcEluc3RhbmNlb2ZEb25lCiAgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCkBAIC0x
Mjc1LDEyICsxMjc1LDEyIEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZp
bmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKLSAgICBidGJu
eiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIC5vcElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAg
IGJ0Ym56IEpTQ2VsbDo6bV9mbGFnc1t0M10sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcElz
VW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNV
bmRlZmluZWRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0M10sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1f
Z2xvYmFsT2JqZWN0W3QxXSwgdDMsIHQxCkBAIC0xMzE4LDggKzEzMTgsNyBAQCBfbGxpbnRfb3Bf
aXNfc3RyaW5nOgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykKICAgICBz
dG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYmluZXEgdDAsIENl
bGxUYWcsIC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MAotICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0M10sIFN0cmlu
Z1R5cGUsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAg
ZGlzcGF0Y2goMykKIC5vcElzU3RyaW5nTm90Q2VsbDoKQEAgLTEzODcsNyArMTM4Niw3IEBAIG1h
Y3JvIGdldEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0MywKICAgICAgICAgdDAs
CiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAg
ICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cK
ICAgICAgICAgICAgIGxvYWRpIDRbUENdLCB0MQogICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0
W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNoCiAgICAgICAgICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3Byb3BlcnR5U3RvcmFnZSwgdDJdLCB0MgpAQCAtMTQxNSw3ICsxNDE0LDcgQEAgX2xs
aW50X29wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAg
MTZbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MywgLm9wR2V0QXJyYXlMZW5ndGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDNdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQyCiAgICAg
YXJyYXlQcm9maWxlKHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJy
YXlMZW5ndGhTbG93CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5
TGVuZ3RoU2xvdwpAQCAtMTQ2MCw3ICsxNDU5LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0
eVN0b3JhZ2UpCiAgICAgICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3Bl
cnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgMjBb
UENdLCB0MQogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0
Y2gsIHQyKQogICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0
b3JhZ2UsIHQxXQpAQCAtMTQ4OCw3ICsxNDg3LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxv
YWRpIDEyW1BDXSwgdDIKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CiAgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93
KQogICAgIGxvYWRpIDIwW1BDXSwgdDEKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCkBAIC0xNTAw
LDcgKzE0OTksNyBAQCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzCiAg
ICAgICAgICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KICAgICAgICAgICAgIGxvYWRpIDI0
W1BDXSwgdDEKICAgICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KLSAgICAg
ICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIHN0
b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXQogICAgICAgICAgICAgZGlzcGF0Y2go
OSkKICAgICAgICAgZW5kKQogCkBAIC0xNTIyLDcgKzE1MjEsNyBAQCBtYWNybyBzdHJ1Y3R1cmVD
aGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsCiAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
ICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCiAubG9vcDoKICAgICBs
b2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVd
LCBwcm90b0NlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9s
ZFN0cnVjdHVyZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtwcm90b0NlbGxdLCBv
bGRTdHJ1Y3R1cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvd1BhdGgK
ICAgICBhZGRwIDQsIHNjcmF0Y2gKICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
VGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCkBAIC0xNTQ5LDcgKzE1NDgs
NyBAQCBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9h
ZGkgOFtQQ10sIHQyCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxU
YWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBsb2Fk
cCAxNltQQ10sIHQzCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCiAgICAgbG9hZGkgMTJb
UENdLCB0MwpAQCAtMTYzMyw3ICsxNjMyLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5
UG5hbWVTbG93KQogICAgIGxvYWRpIDIwW1BDXSwgdDAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYnBuZXEgdDAsIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKICAgICBsb2FkaSAyNFtQQ10sIHQwCiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MApA
QCAtMTY3NSw3ICsxNjc0LDcgQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkK
ICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRC
eVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QxXSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQzCiAg
ICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGkgOFtQQ10sIHQwCkBAIC0xNzgx
LDggKzE3ODAsOCBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0Miwg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIo
dDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykKIAogLnRh
cmdldDoKQEAgLTE5MTIsOCArMTkxMSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKICAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MQotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBiYm5lcSBK
U0NlbGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAog
ICAgIGJpbmVxIEpTU3RyaW5nOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhy
b3VnaAogICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKICAgICBidHB6ICB0MCwg
Lm9wU3dpdGNoT25Sb3BlCkBAIC0xOTYxLDkgKzE5NTksOSBAQCBtYWNybyBhcnJheVByb2ZpbGVG
b3JDYWxsKCkKICAgICBuZWdpIHQzCiAgICAgYmluZXEgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAgIGxvYWRpIFRoaXNBcmd1bWVu
dE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCi0gICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XSwgdDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbihDYWxsT3BDb2RlU2l6ZSAtIDIsIHQxKQot
ICAgIHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QxXQorICAg
IHN0b3JlcCB0MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbdDFdCiAuZG9u
ZToKIGVuZAogCkBAIC0yMDI2LDggKzIwMjQsNyBAQCBfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90
aGlzOgogICAgIGxvYWRpIDRbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2Jq
ZWN0Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBdLCBPYmpl
Y3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKICAgICBkb1JldHVybigpCiAKIC5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKQEAgLTIwNDIsOCArMjAzOSw3IEBAIF9sbGludF9v
cF90b19wcmltaXRpdmU6CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2
ZUlzSW1tCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUs
IC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0
cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KQEAgLTIwNzEsNyArMjA2Nyw3IEBAIF9sbGludF9vcF9uZXh0
X3BuYW1lOgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogICAgIGxv
YWRpIDhbUENdLCB0MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCiAgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTIwNzksNyArMjA3NSw3
IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
OgogICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxU
YWcsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
UGF5bG9hZE9mZnNldFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0s
IHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEKICAgICBicG5lcSB0
MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAgICBidHBueiBbdDBd
LCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTIzMjQsNyArMjMyMCw3IEBAIG1h
Y3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhdLCB0MAogICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0
MSwgc2xvd1BhdGgKIGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
cmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsMjkgQEAgbWFj
cm8gdmFsdWVQcm9maWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIHN0b3JlcSB2YWx1ZSwg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHNbc2NyYXRjaF0KIGVuZAogCittYWNybyBsb2FkU3RydWN0
dXJlKGNlbGwsIHN0cnVjdHVyZSkKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBz
Y3JhdGNoCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3ZtW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAg
bG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRh
YmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBbc2NyYXRjaCwgc3RydWN0dXJlLCA4
XSwgc3RydWN0dXJlCitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFy
ZyhjZWxsLCBzdHJ1Y3R1cmUpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxd
LCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV92bVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9z
dHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxsXSwgY2VsbAor
ICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBz
dG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAg
bG9hZHEgU3RydWN0dXJlOjptX2Jsb2IgKyBTdHJ1Y3R1cmVJREJsb2I6OnUuZG91YmxlV29yZFtz
dHJ1Y3R1cmVdLCBzY3JhdGNoCisgICAgc3RvcmVxIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFtjZWxsXQorZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAK
QEAgLTU5NSwxMCArNjE4LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbigxLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnog
dDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigy
LCB0MikKLSAgICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIs
IC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNzEz
LDExICs3MzYsMTEgQEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFu
eiB0MCwgdGFnTWFzaywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgotICAgIGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QyXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQK
KyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAu
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwg
dDIsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9i
amVjdFt0Ml0sIHQwLCB0MApAQCAtMTA1NCw4ICsxMDc3LDcgQEAgX2xsaW50X29wX2NoZWNrX2hh
c19pbnN0YW5jZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0
aW9uKDMsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQw
Ci0gICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0s
IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Cisg
ICAgYnRieiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
LCAub3BDaGVja0hhc0luc3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFz
SW5zdGFuY2VTbG93OgpAQCAtMTA2NywyNCArMTA4OSwyMyBAQCBfbGxpbnRfb3BfaW5zdGFuY2Vv
ZjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDApCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDEsIHQzKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wSW5zdGFu
Y2VvZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5
cGUsIC5vcEluc3RhbmNlb2ZTbG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cp
CiAgICAgCiAgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUK
ICAgICBtb3ZlIDEsIHQwCiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QyXSwgdDIKLSAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwg
dDIKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHQyLCB0MykKKyAgICBsb2Fk
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QzXSwgdDIKICAgICBicWVxIHQyLCB0MSwgLm9wSW5z
dGFuY2VvZkRvbmUKICAgICBidHF6IHQyLCB0YWdNYXNrLCAub3BJbnN0YW5jZW9mTG9vcAogCiAg
ICAgbW92ZSAwLCB0MAogLm9wSW5zdGFuY2VvZkRvbmU6CiAgICAgb3JxIFZhbHVlRmFsc2UsIHQw
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIHN0b3JlcSB0MCwgW2Nmciwg
dDMsIDhdCiAgICAgZGlzcGF0Y2goNCkKIApAQCAtMTEwNCwxNyArMTEyNSwxNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
CisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3Rv
cmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQ6CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MV0sIHQxCi0gICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQz
Ci0gICAgb3JxIFZhbHVlRmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAg
ICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFs
dWVGYWxzZSwgdDAKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMp
CiAKIApAQCAtMTE0Nyw4ICsxMTY4LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAotICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0Nl
bGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAg
ICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQpAQCAtMTIwMCwxNCAr
MTIyMCwxNSBAQCBtYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAjIHRvIHRh
a2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRo
LCB3aGljaCBpcyB3aGF0CiAgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5Lgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlv
big0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5
SWRTbG93KQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDMsIHQyLCB0MSkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0
MSkKKyAgICBicG5lcSB0MiwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgZ2V0UHJvcGVydHlTdG9y
YWdlKAogICAgICAgICB0MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0
b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24o
NSwgdDIpCiAgICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgICAg
ICAgICBsb2FkcSBbcHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKICAgICAgICAgICAgIHN0
b3JlcSBzY3JhdGNoLCBbY2ZyLCB0MSwgOF0KQEAgLTEyMzMsNyArMTI1NCw3IEBAIF9sbGludF9v
cF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbCh0MCwgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QzXSwgdDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0Miwg
dDEsIHQwKQogICAgIGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAg
IGJ0aXogdDIsIEluZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTEy
NzEsMTUgKzEyOTIsMTYgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwg
dDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xv
dykKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdp
dGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisg
ICAgYnBuZXEgdDIsIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgK
ICAgICAgICAgdDAsCiAgICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdl
LCBzY3JhdGNoKQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
LCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQx
KQorICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHN0b3JlcSBz
Y3JhdGNoLCBbcHJvcGVydHlTdG9yYWdlLCB0MV0KICAgICAgICAgICAgIGRpc3BhdGNoKDkpCkBA
IC0xMzA0LDkgKzEzMjYsMTAgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENo
ZWNrcwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkcEZyb21JbnN0
cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQor
ICAgIGJwbmVxIHQyLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQx
LCB0MywgdDIpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQotICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFs
Q2hlY2tzKHQxLCB0MykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgZ2V0
UHJvcGVydHlTdG9yYWdlKAogICAgICAgICB0MCwKQEAgLTEzMTYsMTUgKzEzMzksMTYgQEAgbWFj
cm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEpCiAgICAgICAgICAgICBzdG9yZXEgdDEsIFt0M10KICAg
ICAgICAgICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICAgICAgc3RvcmVw
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJl
OjptX2Jsb2IgKyBTdHJ1Y3R1cmVJREJsb2I6OnUud29yZHMud29yZDFbdDFdLCB0MQorICAgICAg
ICAgICAgc3RvcmVpIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCiAgICAgICAgICAgICBk
aXNwYXRjaCg5KQogICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tz
KG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUNoYWluQ2hl
Y2tzKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9s
ZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xk
U3RydWN0dXJlICAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUg
cHJvdG8KICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3JhdGNoKQogICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEzMzMsNyArMTM1Nyw4IEBAIG1h
Y3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBicWVxIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQogLmxvb3A6CiAg
ICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQor
ICAgIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJvdG9DZWxsLCBzY3JhdGNoMikK
KyAgICBtb3ZlIHNjcmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgLm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgsIHNjcmF0Y2gKICAgICBicW5l
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AK
QEAgLTEzNjAsOCArMTM4NSw4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDMp
CisgICAgbW92ZSB0MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMy
KHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQpAQCAtMTQ0NCw3ICsxNDY5LDcgQEAgX2xsaW50X29w
X2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5v
cEdldEJ5UG5hbWVTbG93KQogICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQogICAgIGxvYWRxIFtj
ZnIsIHQzLCA4XSwgdDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKICAgICBicG5lcSB0MiwgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDFdLCAub3BHZXRCeVBuYW1l
U2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykKICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdLCB0MwpAQCAtMTQ4NSw4ICsxNTEwLDggQEAgbWFjcm8gcHV0QnlW
YWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMp
CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHQwLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDFdLCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQorICAgIG1v
dmUgdDEsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDMs
IC5vcFB1dEJ5VmFsU2xvdykKQEAgLTE1ODksOCArMTYxNCw4IEBAIG1hY3JvIGVxdWFsTnVsbChj
ZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBs
b2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0
MiwgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0
KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNlbGxIYW5k
bGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAK
IC50YXJnZXQ6CkBAIC0xNzIyLDggKzE3NDcsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQxLCB0YWdN
YXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QxXSwgdDAKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgYmJu
ZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAgYnRweiAg
dDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAtMTc3Miw5ICsxNzk2LDkgQEAgbWFjcm8gYXJyYXlQcm9m
aWxlRm9yQ2FsbCgpCiAgICAgbmVncCB0MwogICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldFtj
ZnIsIHQzLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigoQ2Fs
bE9wQ29kZVNpemUgLSAyKSwgdDEpCi0gICAgc3RvcmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFz
dFNlZW5TdHJ1Y3R1cmVbdDFdCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwg
dDMKKyAgICBzdG9yZWkgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Qx
XQogLmRvbmU6CiBlbmQKIApAQCAtMTgzNSw4ICsxODU5LDcgQEAgX2xsaW50X29wX3JldF9vYmpl
Y3Rfb3JfdGhpczoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
T2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6
bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAg
ZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CkBAIC0xODUxLDggKzE4
NzQsNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0
MCwgdGFnTWFzaywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJu
ZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNl
CiAub3BUb1ByaW1pdGl2ZUlzSW1tOgogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAg
ZGlzcGF0Y2goMykKQEAgLTE4ODIsNyArMTkwNCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0
MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0M10sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAg
ICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qy
XSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjpt
X3ZlY3Rvclt0MF0sIHQwCkBAIC0xODkwLDcgKzE5MTIsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFt
ZToKIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGVbdDFdLCBWYWx1ZU51bGwsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDEKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAg
ICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBi
dHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTIwOTYsOCArMjEx
OCw5IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVD
aGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFu
ZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MCwgdDIsIHQxKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0
MiwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
cmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MzksMTEgKzQzOSwxMiBAQCBtYWNy
byBzbG93UGF0aEZvckNhbGwoc2xvd1BhdGgpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBh
cnJheVByb2ZpbGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQot
ICAgIGNvbnN0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0
IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQotICAgIHN0b3JlcCBzdHJ1
Y3R1cmUsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVtwcm9maWxlXQotICAgIGxv
YWRiIFN0cnVjdHVyZTo6bV9pbmRleGluZ1R5cGVbc3RydWN0dXJlXSwgaW5kZXhpbmdUeXBlCitt
YWNybyBhcnJheVByb2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgcHJvZmlsZSwgc2NyYXRjaCkK
KyAgICBjb25zdCBjZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQorICAgIGNvbnN0IGluZGV4aW5n
VHlwZSA9IGNlbGxBbmRJbmRleGluZ1R5cGUgCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVy
ZUlEW2NlbGxdLCBzY3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6bV9s
YXN0U2VlblN0cnVjdHVyZUlEW3Byb2ZpbGVdCisgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5n
VHlwZVtjZWxsXSwgaW5kZXhpbmdUeXBlCiBlbmQKIAogbWFjcm8gY2hlY2tNYXJrQnl0ZShjZWxs
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIGNvbnRpbnVhdGlvbikKQEAgLTYyMCw4ICs2MjEsOCBAQCBt
YWNybyBhbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0CiAgICAgICAgIHN0b3JlcCBz
Y3JhdGNoMSwgb2Zmc2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0KICAgICAKICAgICAgICAg
IyBJbml0aWFsaXplIHRoZSBvYmplY3QuCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQogICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3Jlc3VsdF0KKyAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8ocmVzdWx0
LCBzdHJ1Y3R1cmUsIHNjcmF0Y2gxKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTY0NjU0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2Fs
bGVySWYKICAgICBtX292ZXJyb2RlQ2FsbGVyID0gdHJ1ZTsKICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzY3JpcHRvcjsKICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihnbG9i
YWxPYmplY3QoKS0+dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIodm0pLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBBY2Nlc3Nvcik7Ci0gICAgbWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpcywgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyLCBkZXNjcmlwdG9yLCBmYWxz
ZSk7CisgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXMs
IGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQog
CiB2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNT
dGF0ZSogZXhlYykKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3Ry
aWN0TW9kZUNhbGxlZUlmCiAgICAgbV9vdmVycm9kZUNhbGxlZSA9IHRydWU7CiAgICAgUHJvcGVy
dHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2Ny
aXB0b3IoZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZtKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgQWNjZXNzb3IpOwotICAgIG1ldGhvZFRhYmxlKCktPmRlZmlu
ZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgZGVzY3Jp
cHRvciwgZmFsc2UpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9w
ZXJ0eSh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIGRlc2NyaXB0b3IsIGZh
bHNlKTsKIH0KIAogYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3Vt
ZW50cy5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgeyAKLSAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQXJndW1lbnRzVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKICAgICB9CiAgICAg
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZk51bUFyZ3VtZW50cygpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihBcmd1bWVudHMsIG1fbnVtQXJndW1lbnRzKTsgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTYgKzIxMiwxNiBAQCB2b2lkIHNoaWZ0KEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoCiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
c2xvdC5nZXRWYWx1ZShleGVjLCBmcm9tKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzT2JqLT5t
ZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7
CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNl
IGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIHRvKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkg
ewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiBsZW5ndGggLSBjb3VudDsg
LS1rKSB7Ci0gICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgayAtIDEpKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0yNTYsOCArMjU2LDggQEAgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIAogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFs
dWUoZXhlYywgZnJvbSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9
IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgdG8pKSB7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwor
ICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgewogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjgwLDExICsyODAsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiAgICAgLy8gMy4g
SWYgSXNDYWxsYWJsZShmdW5jKSBpcyBmYWxzZSwgdGhlbiBsZXQgZnVuYyBiZSB0aGUgc3RhbmRh
cmQgYnVpbHQtaW4gbWV0aG9kIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKDE1LjIuNC4yKS4K
ICAgICBpZiAoIWZ1bmN0aW9uLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09i
amVjdCksICJdIikpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5v
bnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikp
OwogCiAgICAgLy8gNC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0g
aW50ZXJuYWwgbWV0aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVl
IGFuZCBhbiBlbXB0eSBhcmd1bWVudHMgbGlzdC4KICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2Jq
ZWN0KSB8fCBjYWxsVHlwZSAhPSBDYWxsVHlwZUhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uICE9IGFycmF5UHJvdG9GdW5jSm9pbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmot
PmdldChleGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgbGVuZ3RoIC0gMSkpIHsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMs
IGxlbmd0aCAtIDEpKSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQpAQCAtNTI4LDE5ICs1
MjgsMTkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgICAgICBp
ZiAob2JqMikgewotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCBrLCBvYmoyLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIG9iajIs
IHRydWUpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBrKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsp
KSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvYmopIHsKLSAg
ICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhl
YywgbGsxLCBvYmosIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxLCBvYmosIHRydWUpOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBsazEpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxKSkgewogICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgICAgIH0KQEAgLTY1OCwxOCArNjU4LDE4IEBAIHN0YXRpYyBib29s
IHBlcmZvcm1TbG93U29ydChFeGVjU3RhdGUqIGUKICAgICAgICAgLy8gU3dhcCB0aGVtaW4gYW5k
IGkKICAgICAgICAgaWYgKHRoZW1pbiA+IGkpIHsKICAgICAgICAgICAgIGlmIChtaW5PYmopIHsK
LSAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNP
YmosIGV4ZWMsIGksIG1pbk9iaiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSwgbWluT2Jq
LCB0cnVlKTsKICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBpKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpKSkgewogICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChpT2JqKSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4sIGlPYmosIHRydWUpOworICAg
ICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIHRoZW1pbiwgaU9iaiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgeworICAgICAgICAgICAgfSBl
bHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4pKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtNzAzLDcgKzcwMyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eSBuYW1lQXJyYXkoZXhlYyk7Ci0gICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRp
ZXMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5h
bWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC03MzQsNyArNzM0LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICBpZiAoaW5kZXggPCBmbGF0QXJy
YXktPmxlbmd0aCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBp
ZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCBpbmRleCkpIHsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGluZGV4KSkgewog
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgICAgICB9CkBAIC03NDMsNyArNzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgIGZvciAoc2l6ZV90IGkgPSBmbGF0QXJyYXktPmxlbmd0aCgp
OyBpLS07KSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPckhvbGUoZmxhdEFycmF5LCBl
eGVjLCBpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUpOwotICAgICAgICB0aGlzT2Jq
LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIHZhbHVlLCB0cnVl
KTsKKyAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgaSwgdmFsdWUsIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIH0KQEAgLTgwMCw3ICs4MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYWRkaXRpb25h
bEFyZ3M7ICsraykgewotICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGsgKyBiZWdpbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayArIDIp
LCB0cnVlKTsKKyAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpc09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChr
ICsgMiksIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KQEAgLTgy
NSw3ICs4MjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKLSAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChrKSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGspLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBA
QCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhpcykKICAgICBCRUdJTigpOwogICAgIEpT
VmFsdWUgdjEgPSBPUCgxKS5qc1ZhbHVlKCk7CiAgICAgaWYgKHYxLmlzQ2VsbCgpKQotICAgICAg
ICBwY1syXS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgZXhlYy0+Y29kZUJsb2NrKCktPm93
bmVyRXhlY3V0YWJsZSgpLCB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAgICBwY1sy
XS51LnN0cnVjdHVyZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KSwgdjEuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogICAgIGVsc2UKICAgICAgICAgcGNbMl0u
dS5zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICBSRVRVUk4odjEudG9UaGlzKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IGJvb2wgaXNGdW5jdGlvbkV4ZWN1dGFibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOworICAg
ICAgICByZXR1cm4gdHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7CiAgICAgfQogICAg
IGJvb2wgaXNQcm9ncmFtRXhlY3V0YWJsZSgpCiAgICAgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1
YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIGludCBtX251
bVBhcmFtZXRlcnNGb3JDYWxsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7
CiAKQEAgLTY4MCw3ICs2ODAsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxl
QmFzZTo6Y2xlYXJDb2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAg
ICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgewor
ICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJs
ZVR5cGU6CiAgICAgICAgIHJldHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y2xlYXJDb2RlKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02OTQs
NyArNjk0LDcgQEAgaW5saW5lIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBp
bmxpbmUgdm9pZCBTY3JpcHRFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkg
ewogICAgIGNhc2UgRXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2
YWxFeGVjdXRhYmxlKj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhl
Y3V0YWJsZVR5cGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcg
QEAgSlNWYWx1ZSBjYWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNh
bGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwogICAgIHJldHVybiBjYWxs
KGV4ZWMsIGdldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOwogfQog
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUKICAgICBhcmdzLmFwcGVuZCh2YWx1ZSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEo
c2V0dGVyLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBj
YWxsKGV4ZWMsIHNldHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgi
CiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8
d3RmL2R0b2EuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
Y3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDggKzIzOCw4IEBAIGJvb2wgSlNBcnJh
eTo6dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKIHsKICAgICBBcnJheVN0b3JhZ2UqIHN0b3Jh
Z2UgPSBlbnN1cmVBcnJheVN0b3JhZ2Uodm0pOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
c3RvcmFnZS0+YnV0dGVyZmx5KCk7Ci0gICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0
cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6
ZSA9IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVTaXplKCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlD
YXBhY2l0eSA9IHN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWdu
ZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lU2l6ZSgpOwogCiAgICAg
Ly8gSWYgbm90LCB3ZSBzaG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgb24gdGhlIGZhc3QgcGF0aC4K
ICAgICBBU1NFUlQoIWFkZFRvRnJvbnQgfHwgY291bnQgPiBzdG9yYWdlLT5tX2luZGV4Qmlhcyk7
CkBAIC0yNzMsNyArMjczLDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShW
TSYgdgogICAgIHVuc2lnbmVkIG5ld1N0b3JhZ2VDYXBhY2l0eTsKICAgICAvLyBJZiB0aGUgY3Vy
cmVudCBzdG9yYWdlIGFycmF5IGlzIHN1ZmZpY2llbnRseSBsYXJnZSAoYnV0IG5vdCB0b28gbGFy
Z2UhKSB0aGVuIGp1c3Qga2VlcCB1c2luZyBpdC4KICAgICBpZiAoY3VycmVudENhcGFjaXR5ID4g
ZGVzaXJlZENhcGFjaXR5ICYmIGlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoY3VycmVudENhcGFjaXR5
LCByZXF1aXJlZFZlY3Rvckxlbmd0aCkpIHsKLSAgICAgICAgbmV3QWxsb2NCYXNlID0gYnV0dGVy
Zmx5LT5iYXNlKHN0cnVjdHVyZSgpKTsKKyAgICAgICAgbmV3QWxsb2NCYXNlID0gYnV0dGVyZmx5
LT5iYXNlKHN0cnVjdHVyZSh2bSkpOwogICAgICAgICBuZXdTdG9yYWdlQ2FwYWNpdHkgPSBjdXJy
ZW50Q2FwYWNpdHk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBCdXR0
ZXJmbHk6OnRvdGFsU2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBBcnJheVN0b3JhZ2U6
OnNpemVGb3IoZGVzaXJlZENhcGFjaXR5KSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBKU0Fy
cmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgICAgICAvLyBBdG9taWMgZGVjYXks
ICsgdGhlIHBvc3QtY2FwYWNpdHkgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB3aGF0IGlzIGF2YWls
YWJsZS4KICAgICAgICAgcG9zdENhcGFjaXR5ID0gbWluKChzdG9yYWdlLT52ZWN0b3JMZW5ndGgo
KSAtIGxlbmd0aCkgPj4gMSwgbmV3U3RvcmFnZUNhcGFjaXR5IC0gcmVxdWlyZWRWZWN0b3JMZW5n
dGgpOwogICAgICAgICAvLyBJZiB3ZSdyZSBtb3ZpbmcgY29udGVudHMgd2l0aGluIHRoZSBzYW1l
IGFsbG9jYXRpb24sIHRoZSBwb3N0LWNhcGFjaXR5IGlzIGJlaW5nIHJlZHVjZWQuCi0gICAgICAg
IEFTU0VSVChuZXdBbGxvY0Jhc2UgIT0gYnV0dGVyZmx5LT5iYXNlKHN0cnVjdHVyZSgpKSB8fCBw
b3N0Q2FwYWNpdHkgPCBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSAtIGxlbmd0aCk7CisgICAgICAg
IEFTU0VSVChuZXdBbGxvY0Jhc2UgIT0gYnV0dGVyZmx5LT5iYXNlKHN0cnVjdHVyZSh2bSkpIHx8
IHBvc3RDYXBhY2l0eSA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpIC0gbGVuZ3RoKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSByZXF1aXJlZFZlY3Rvckxlbmd0aCAr
IHBvc3RDYXBhY2l0eTsKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRD
b3VudFNsb3dDYXNlKFZNJiB2CiAgICAgICAgIEFTU0VSVChjb3VudCArIHVzZWRWZWN0b3JMZW5n
dGggPD0gbmV3VmVjdG9yTGVuZ3RoKTsKICAgICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPmFy
cmF5U3RvcmFnZSgpLT5tX3ZlY3RvciArIGNvdW50LCBzdG9yYWdlLT5tX3ZlY3Rvciwgc2l6ZW9m
KEpTVmFsdWUpICogdXNlZFZlY3Rvckxlbmd0aCk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVy
Zmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0
eVN0b3JhZ2UoKSAtIHByb3BlcnR5U2l6ZSwgc2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXpl
ICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSArIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7Ci0g
ICAgfSBlbHNlIGlmICgobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUo
KSkpIHx8IChuZXdJbmRleEJpYXMgIT0gc3RvcmFnZS0+bV9pbmRleEJpYXMpKSB7CisgICAgfSBl
bHNlIGlmICgobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUodm0pKSkg
fHwgKG5ld0luZGV4QmlhcyAhPSBzdG9yYWdlLT5tX2luZGV4QmlhcykpIHsKICAgICAgICAgbWVt
bW92ZShuZXdCdXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlTaXplLCBidXR0
ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlTaXplLCBzaXplb2YoSlNWYWx1ZSkg
KiBwcm9wZXJ0eVNpemUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpICsgQXJyYXlTdG9yYWdlOjpz
aXplRm9yKDApKTsKICAgICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT5tX3ZlY3Rvciwgc3RvcmFnZS0+bV92ZWN0b3IsIHNpemVvZihKU1ZhbHVlKSAqIHVzZWRWZWN0
b3JMZW5ndGgpOwogCkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhX
aXRoQXJyYXlTdG9yYWdlKAogCiBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4
ZWMsIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIGlmICghbmV3TGVuZ3RoKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MjAsNyArNDIwLDcgQEAgYm9vbCBKU0FycmF5
OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgZW5zdXJlTGVuZ3RoKGV4
ZWMtPnZtKCksIG5ld0xlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERv
dWJsZSkgeworICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3Ro
KCk7IGktLSA+IG5ld0xlbmd0aDspCiAgICAgICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NDIsNyArNDQy
LDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogCiBKU1ZhbHVl
IEpTQXJyYXk6OnBvcChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAg
Y2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAg
CkBAIC01MzcsNyArNTM3LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVj
KQogLy8gIC0gcHVzaGluZyB0byBhbiBhcnJheSBvZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUg
cHJvcGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBlcnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAg
Y2FzZSBBcnJheUNsYXNzOiB7CiAgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQoZXhlYy0+
dm0oKSwgMCk7CiAgICAgICAgIEZBTExUSFJPVUdIOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQg
SlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsK
KyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4
ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0
aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJ
bmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUs
IHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3Io
ZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjE3LDcgKzYxNyw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRF
WCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBs
ZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJy
YXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjUxLDcgKzY1MSw3IEBAIHZv
aWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogICAgICAgICAvLyBQdXNo
aW5nIHRvIGFuIGFycmF5IG9mIGludmFsaWQgbGVuZ3RoICgyXjMxLTEpIHN0b3JlcyB0aGUgcHJv
cGVydHksIGJ1dCB0aHJvd3MgYSByYW5nZSBlcnJvci4KICAgICAgICAgaWYgKHN0b3JhZ2UtPmxl
bmd0aCgpID4gTUFYX0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVj
LCBzdG9yYWdlLT5sZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVT
NS4xIDE1LjQuNC43IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYg
KCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVu
Z3RoIikpOwpAQCAtNjc1LDcgKzY3NSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhB
cnJheVN0b3JhZ2UKICAgICAKICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgaG9sZXMgb3Ig
aXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRlLAogICAgIC8vIHVzZSB0aGUgZ2VuZXJp
YyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCi0gICAgaWYgKG9sZExlbmd0aCAhPSBzdG9y
YWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hv
dWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChvbGRM
ZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBpblNwYXJzZUluZGV4aW5n
TW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIW9sZExlbmd0aCkKQEAgLTc0OSw3ICs3NDksNyBAQCBib29s
IEpTQXJyYXk6OnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoY291bnQgPiAwKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xh
c3M6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKQEAgLTg0Nyw3ICs4NDcsNyBAQCBi
b29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKICAgICAvLyBJZiB0aGUg
YXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRl
LAogICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCi0g
ICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IHN0b3JhZ2Ut
PmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKSkKKyAgICBpZiAobGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3Ig
fHwgc3RvcmFnZS0+aW5TcGFyc2VNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5
cGUoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgbW92ZUZyb250ID0gIXN0
YXJ0SW5kZXggfHwgc3RhcnRJbmRleCA8IGxlbmd0aCAvIDI7CkBAIC04ODUsNyArODg1LDcgQEAg
Ym9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBj
YXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgIC8v
IFdlIGNvdWxkIGhhbmRsZSB0aGlzLiBCdXQgaXQgc2hvdWxkbid0IGV2ZXIgY29tZSB1cCwgc28g
d2Ugd29uJ3QuCkBAIC05OTQsMjAgKzk5NCwyMCBAQCBzdGF0aWMgaW50IGNvbXBhcmVCeVN0cmlu
Z1BhaXJGb3JRU29ydChjCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUodmEtPnNlY29uZCwg
dmItPnNlY29uZCk7CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0
ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OnNv
cnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24s
IENhbGxUeXBlIGNhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgQVNT
RVJUKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBpbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoRG91YmxlIHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1b3VzIHx8IGlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOworICAgIEFTU0VSVChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJh
eVdpdGhEb3VibGUgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQ29udGlndW91cyB8
fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgIAogICAg
IHVuc2lnbmVkIGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsKICAgICB1bnNpZ25lZCBuZXdS
ZWxldmFudExlbmd0aDsKLSAgICBjb21wYWN0Rm9yU29ydGluZzxpbmRleGluZ1R5cGU+KAorICAg
IGNvbXBhY3RGb3JTb3J0aW5nPGFycmF5SW5kZXhpbmdUeXBlPigKICAgICAgICAgbGVuZ3RoTm90
SW5jbHVkaW5nVW5kZWZpbmVkLAogICAgICAgICBuZXdSZWxldmFudExlbmd0aCk7CiAgICAgCi0g
ICAgQ29udGlndW91c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigp
OworICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhp
bmdUeXBlPigpOwogICAgIAotICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlT
dG9yYWdlICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgeworICAgIGlmIChh
cnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9yYWdl
KCktPm1fc3BhcnNlTWFwLmdldCgpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihl
eGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQg
SlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGJvb2wgYWxsVmFsdWVzQXJlTnVtYmVycyA9IHRydWU7Ci0gICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBB
cnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAgYnJlYWs7
CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4
ZWNTdGF0CiAgICAgLy8gYWxzbyBkb24ndCByZXF1aXJlIG1lcmdlc29ydCdzIHN0YWJpbGl0eSwg
c2luY2UgdGhlcmUncyBubyB1c2VyIHZpc2libGUKICAgICAvLyBzaWRlLWVmZmVjdCBmcm9tIHN3
YXBwaW5nIHRoZSBvcmRlciBvZiBlcXVhbCBwcmltaXRpdmUgdmFsdWVzLgogICAgIGludCAoKmNv
bXBhcmUpKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5
cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdp
dGhJbnQzMjoKICAgICAgICAgY29tcGFyZSA9IGNvbXBhcmVOdW1iZXJzRm9yUVNvcnRXaXRoSW50
MzI7CiAgICAgICAgIGJyZWFrOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBKU0FycmF5Ojpz
b3J0TnVtZXJpYyhFeGVjU3RhdGUqIGV4ZQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGlu
Z01vZGUoKSk7CiAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgewor
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB0ZW1wbGF0ZSA8PiBz
dHJ1Y3QgQ29udGlndW91c1R5cGVBY2Nlc3NvCiB9OwogCiAKLXRlbXBsYXRlPEluZGV4aW5nVHlw
ZSBpbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdU
eXBlIGFycmF5SW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KIHZvaWQgSlNBcnJh
eTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIENvbnRpZ3VvdXNEYXRhPFN0
b3JhZ2VUeXBlPiBkYXRhLCB1bnNpZ25lZCByZWxldmFudExlbmd0aCkKIHsKICAgICBpZiAoIXJl
bGV2YW50TGVuZ3RoKQpAQCAtMTEzOCwxMSArMTEzOCwxMSBAQCB2b2lkIEpTQXJyYXk6OnNvcnRD
b21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgYm9vbCBpc1NvcnRpbmdQcmltaXRpdmVWYWx1ZXMg
PSB0cnVlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxldmFudExlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4
aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7Ci0gICAgICAgIEFTU0VSVChpbmRleGluZ1R5
cGUgIT0gQXJyYXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+OjpnZXRB
c1ZhbHVlKGRhdGEsIGkpOworICAgICAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJy
YXlXaXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5p
c1VuZGVmaW5lZCgpKTsKICAgICAgICAgdmFsdWVzW2ldLmZpcnN0ID0gdmFsdWU7Ci0gICAgICAg
IGlmIChpbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGluZGV4aW5nVHlwZSAhPSBB
cnJheVdpdGhJbnQzMikKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlICE9IEFycmF5V2l0
aERvdWJsZSAmJiBhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMikKICAgICAgICAg
ICAgIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyAm
JiB2YWx1ZS5pc1ByaW1pdGl2ZSgpOwogICAgIH0KICAgICAgICAgCkBAIC0xMTczLDcgKzExNzMs
NyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgCiAgICAg
Ly8gSWYgdGhlIHRvU3RyaW5nIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIGxlbmd0aCBvZiB0aGUgYXJy
YXkgb3IgdmVjdG9yIHN0b3JhZ2UsCiAgICAgLy8gaW5jcmVhc2UgdGhlIGxlbmd0aCB0byBoYW5k
bGUgdGhlIG9yaWduYWwgbnVtYmVyIG9mIGFjdHVhbCB2YWx1ZXMuCi0gICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBB
cnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICBjYXNlIEFycmF5
V2l0aENvbnRpZ3VvdXM6CkBAIC0xMTgzLDcgKzExODMsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRD
b21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAg
ICAgICAgIGlmIChhcnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgPCByZWxldmFudExlbmd0
aCkgewogICAgICAgICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwgcmVsZXZh
bnRMZW5ndGgpOwotICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRleGluZ1R5
cGU+OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZlY3Rvcigp
KTsKKyAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+
OjpyZXBsYWNlRGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZlY3RvcigpKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPmxlbmd0aCgpIDwgcmVsZXZh
bnRMZW5ndGgpCiAgICAgICAgICAgICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKHJlbGV2YW50
TGVuZ3RoKTsKQEAgLTExOTQsNyArMTE5NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3Rl
ZFZlY3RvcihFeGVjU3QKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGV2
YW50TGVuZ3RoOyBpKyspCi0gICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8aW5kZXhpbmdU
eXBlPjo6c2V0V2l0aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3QpOwor
ICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5kZXhpbmdUeXBlPjo6c2V0V2l0
aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3QpOwogICAgIAogICAgIEhl
YXA6OmhlYXAodGhpcyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMpOwogfQpAQCAtMTIwMyw3
ICsxMjAzLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBB
U1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMzNSwxMSArMTMzNSwxMSBAQCBzdHJ1Y3QgQVZMVHJlZUFic3RyYWN0
b3JGb3JBcnJheUNvbXBhcmUgCiAgICAgc3RhdGljIGhhbmRsZSBudWxsKCkgeyByZXR1cm4gMHg3
RkZGRkZGRjsgfQogfTsKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KK3Rl
bXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJheTo6c29y
dFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlw
ZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIEFTU0VSVCghaW5T
cGFyc2VJbmRleGluZ01vZGUoKSk7Ci0gICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBp
bmRleGluZ1R5cGUoKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBleGNlcHRp
b25zIHJhaXNlZCBpbiB0aGUgY29tcGFyZSBmdW5jdGlvbiBvciBpbiB0b051bWJlci4KICAgICAg
ICAgCkBAIC0xMzQ5LDcgKzEzNDksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0
YXRlKiBleGVjCiAgICAgaWYgKG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gcmVsZXZh
bnRMZW5ndGg8aW5kZXhpbmdUeXBlPigpOworICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAgICB1bnNpZ25lZCBub2Rl
Q291bnQgPSB1c2VkVmVjdG9yTGVuZ3RoOwogICAgICAgICAKICAgICBpZiAoIW5vZGVDb3VudCkK
QEAgLTE0MTYsMTQgKzE0MTYsMTQgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0
ZSogZXhlYwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJU
KGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4
aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5j
b250aWd1b3VzRG91YmxlKClbaV0gPSB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52
YWx1ZS5hc051bWJlcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhp
bmdEYXRhKClbaV0uc2V0KHZtLCB0aGlzLCB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVy
XS52YWx1ZSk7CiAgICAgICAgICsraXRlcjsKICAgICB9CiAgICAgLy8gUHV0IHVuZGVmaW5lZCB2
YWx1ZXMgYmFjayBpbi4KLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkg
eworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMy
OgogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgogICAgICAgICBBU1NFUlQoZWxlbWVudHNUb0V4
dHJhY3RUaHJlc2hvbGQgPT0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQpOwpAQCAtMTQzOSwx
MyArMTQzOSwxMyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAg
ICAgLy8gRW5zdXJlIHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGFyZSB6ZXJvZWQg
b3V0LgogICAgIGZvciAodW5zaWduZWQgaSA9IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNob2xkOyBp
IDwgY2xlYXJFbGVtZW50c1RocmVzaG9sZDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwgYnV0
dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChpbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29udGlndW91
c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3VycmVudElu
ZGV4aW5nRGF0YSgpW2ldLmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIGlmIChoYXNBcnJheVN0
b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9y
YWdlKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVtVmFsdWVz
SW5WZWN0b3IgPSBuZXdVc2VkVmVjdG9yTGVuZ3RoOwogfQogCkBAIC0xNDUzLDcgKzE0NTMsNyBA
QCB2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiB7CiAgICAgQVNTRVJU
KCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBj
YXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgIHJl
dHVybjsKQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3QoRXhl
Y1N0YXRlKiBleGUKICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiB2ZWN0b3I7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNs
YXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgdm9p
ZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAgIHVuc2lnbmVkIHZlY3Rv
ckVuZDsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBjb3B5TGVuZ3RoICsgZmlyc3RWYXJBcmdPZmZz
ZXQ7CiAgICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5ndGgoKSk7Ci0gICAgc3dpdGNoIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAt
MTYwMiw0MCArMTYwMiw0MCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3Rh
dGUqCiAgICAgICAgIGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0
LCBnZXQoZXhlYywgaSkpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBl
PgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5
Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZCYgbnVtRGVmaW5lZCwgdW5zaWduZWQmIG5ld1Jl
bGV2YW50TGVuZ3RoKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7Ci0g
ICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOwor
ICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAKLSAgICB1
bnNpZ25lZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBlPigp
OworICAgIHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUlu
ZGV4aW5nVHlwZT4oKTsKICAgICAKICAgICBudW1EZWZpbmVkID0gMDsKICAgICB1bnNpZ25lZCBu
dW1VbmRlZmluZWQgPSAwOwogICAgICAgICAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IG15UmVs
ZXZhbnRMZW5ndGg7ICsrbnVtRGVmaW5lZCkgewogICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8
IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUg
PT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFy
cmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRlcmZseS0+Y29u
dGlndW91c0ludDMyKClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYpCiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBBU1NFUlQodi5pc0ludDMyKCkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5nVHlw
ZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW251bURlZmluZWRdOwogICAgICAgICAgICAgaWYgKHYgIT0gdikK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVtRGVm
aW5lZF0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUluZGV4
aW5nVHlwZT4oKVtudW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8IHYuaXNVbmRl
ZmluZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAg
ICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlm
IChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBt
X2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAo
IXYpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCB2b2lk
IEpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1dHRl
cmZseS0+Y29udGlndW91c0ludDMyKClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHYpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhp
bmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1
dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE2NTIsMjMgKzE2NTIsMjMgQEAgdm9pZCBK
U0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkKytdID0gdjsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRl
eGluZ1R5cGU+KClbaV0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxh
cnJheUluZGV4aW5nVHlwZT4oKVtpXS5nZXQoKTsKICAgICAgICAgaWYgKHYpIHsKICAgICAgICAg
ICAgIGlmICh2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgKytudW1VbmRlZmluZWQ7
CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8
IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgaW5kZXhpbmdE
YXRhPGluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIo
dik7CisgICAgICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW251
bURlZmluZWQrK10uc2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KICAgICAgICAgCiAgICAgbmV3UmVsZXZhbnRMZW5ndGggPSBudW1EZWZp
bmVkICsgbnVtVW5kZWZpbmVkOwogICAgIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhp
bmdUeXBlKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIWFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAgICAg
Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdU
eXBlKSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJs
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVtRGVmaW5lZCA9PSBuZXdSZWxldmFudExlbmd0
aCk7CkBAIC0xNjc3LDE5ICsxNjc3LDE5IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRp
bmcodW5zaWduZWQKICAgICBkZWZhdWx0OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1E
ZWZpbmVkOyBpIDwgbmV3UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgQVNTRVJU
KGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAgICAgaW5kZXhpbmdE
YXRhPGluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIGluZGV4
aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKICAgICAgICAg
fQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3UmVsZXZh
bnRMZW5ndGg7IGkgPCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkg
PCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBl
ID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFy
cmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91Ymxl
KClbaV0gPSBRTmFOOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5k
ZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CisgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJ
bmRleGluZ1R5cGU+KClbaV0uY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAoaGFzQXJyYXlTdG9y
YWdlKGluZGV4aW5nVHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUluZGV4aW5n
VHlwZSkpCiAgICAgICAgIGFycmF5U3RvcmFnZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3
UmVsZXZhbnRMZW5ndGg7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNjQ1LDcgKzY0NSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0
IENsYXMKIAogaW5saW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywg
RUNNQU1vZGUgZWNtYU1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxs
KCktPm1ldGhvZFRhYmxlKCktPnRvVGhpcyhhc0NlbGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9U
aGlzU2xvd0Nhc2UoZXhlYywgZWNtYU1vZGUpOworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2Vs
bCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+dG9UaGlzKGFzQ2VsbCgpLCBleGVjLCBlY21h
TW9kZSkgOiB0b1RoaXNTbG93Q2FzZShleGVjLCBlY21hTW9kZSk7CiB9CiAKIGlubGluZSBKU1Zh
bHVlIEpTVmFsdWU6OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUpIGNvbnN0CkBAIC03MDAsNyArNzAwLDcgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4
ZWNTdGF0ZSogZXhlYwogICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlLCBzbG90KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0
aG9kVGFibGUoKS0+cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKKyAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGlubGluZSB2b2lkIEpTVmFs
dWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCkBAIC03MDksNyArNzA5LDcgQEAgaW5saW5l
IHZvaWQgSlNWYWx1ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgICAgICBwdXRUb1ByaW1pdGl2
ZUJ5SW5kZXgoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4
KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAg
YXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1Zh
bHVlIEpTVmFsdWU6OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKQEAgLTczMCw2ICs3MzAs
NyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjplcXVhbChFeGVjU3RhdGUqIGV4CiAKIEFMV0FZU19J
TkxJTkUgYm9vbCBKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGRvIHsKICAgICAgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAg
ICAgICAgIHJldHVybiB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CkBAIC03NDQsMTMg
Kzc0NSwxMyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoIXYyLmlzQ2VsbCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB2Mi5hc0Nl
bGwoKS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKTsKKyAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0dXJl
KHZtKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAg
ICAgICAgICAgIGlmICghdjEuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAg
cmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
djEuaXNPYmplY3QoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0
X3QpLCBqc2NlbGxfaXNfZWlnaHRfYnl0ZXMpOwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlf
REVTVFJVQ1RJQkxFKEpTQ2VsbCk7CiAKIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2Vs
bCkKQEAgLTkwLDcgKzkxLDcgQEAgdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0g
Y2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmll
ciwgdmFsdWUsIHNsb3QpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCiB2
b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5z
aWduZWQgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTEw
MSwxOSArMTAyLDE5IEBAIHZvaWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXgK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwt
PnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlm
aWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVl
LCBzaG91bGRUaHJvdyk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwq
IGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAg
SlNPYmplY3QqIHRoaXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4g
dGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlm
aWVyKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0
aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50
aWZpZXIpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOwogfQog
CiBKU1ZhbHVlIEpTQ2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBF
Q01BTW9kZSBlY21hTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIkNhbGxE
YXRhLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNp
bmNsdWRlICJJbmRleGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJK
U1R5cGVJbmZvLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJUeXBlZEFy
cmF5VHlwZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAtOTIsOSArOTQsMTIgQEAg
cHVibGljOgogICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAg
Ym9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNUeXBlIHR5cGUoKSBjb25z
dDsKKyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7CiAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUoKSBjb25zdDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZShWTSYpIGNvbnN0
OwogICAgIHZvaWQgc2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBjbGVh
clN0cnVjdHVyZSgpIHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXJTdHJ1
Y3R1cmUoKSB7IG1fc3RydWN0dXJlSUQgPSAwOyB9CiAKICAgICBjb25zdCBjaGFyKiBjbGFzc05h
bWUoKTsKIApAQCAtMTIxLDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBPYmplY3Qgb3BlcmF0
aW9ucywgd2l0aCB0aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgogICAgIGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhv
ZFRhYmxlKCkgY29uc3Q7CisgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikg
Y29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlRm9yRGVzdHJ1Y3Rpb24o
KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRC
eUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSwgYm9vbCBzaG91bGRUaHJvdyk7CkBAIC0xMzUsMjAgKzE0MSwzNCBAQCBwdWJsaWM6CiAKICAg
ICBKU1ZhbHVlIGZhc3RHZXRPd25Qcm9wZXJ0eShWTSYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAg
c3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQorICAgIHZvaWQgbWFyaygpIHsgbV9n
Y0RhdGEgPSAxOyB9CisgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2NEYXRh
OyB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CisgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZUlEKTsKICAgICB9
CiAKLSAgICB2b2lkKiBzdHJ1Y3R1cmVBZGRyZXNzKCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHR5
cGVJbmZvRmxhZ3NPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZTsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fZmxhZ3MpOwogICAgIH0K
LSAgICAgICAgCi0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgU3RydWN0dXJlKiB1bnZh
bGlkYXRlZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVk
R2V0KCk7IH0KLSNlbmRpZgotICAgICAgICAKKworICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUlu
Zm9UeXBlT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlND
ZWxsLCBtX3R5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdUeXBl
T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X2luZGV4aW5nVHlwZSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBnY0RhdGFPZmZz
ZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fZ2NE
YXRhKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJh
eVN0b3JhZ2VUeXBlID0gTm90VHlwZWRBcnJheTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDggKzE5
MCwxMiBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKLSAgICAgICAgCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9z
dHJ1Y3R1cmU7CisKKyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4aW5n
VHlwZSBtX2luZGV4aW5nVHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZvOjpJ
bmxpbmVUeXBlRmxhZ3MgbV9mbGFnczsKKyAgICB1aW50OF90IG1fZ2NEYXRhOwogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDEyICszOCwxNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBKU0NlbGw6
OkpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKKyAgICA6IG1fZ2NEYXRhKDApCiB7CiAgICAg
QVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0Nl
bGwoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0
aGlzLCBzdHJ1Y3R1cmUpCitpbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IG1fc3RydWN0dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV9p
bmRleGluZ1R5cGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKKyAgICAsIG1fdHlwZShzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpCisgICAgLCBtX2djRGF0YSgwKQogewogICAgIEFTU0VS
VCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKIH0KQEAgLTU2LDcgKzYxLDcgQEAgaW5saW5lIHZv
aWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
dm0pOwogI2VuZGlmCi0gICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9zdHJ1
Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCkBAIC02NCwyMyAr
NjksNDcgQEAgaW5saW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogI2lmIEVO
QUJMRShHQ19WQUxJREFUSU9OKQogICAgIEFTU0VSVCh2bS5pc0luaXRpYWxpemluZ09iamVjdCgp
KTsKICAgICB2bS5zZXRJbml0aWFsaXppbmdPYmplY3RDbGFzcygwKTsKLSAgICBpZiAoc3RydWN0
dXJlKQorICAgIGlmIChzdHJ1Y3R1cmUpIHsKKyNlbmRpZgorICAgICAgICBtX3N0cnVjdHVyZUlE
ID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCk7CisgICAgICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCk7CisgICAgICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlw
ZUZsYWdzKCk7CisjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgfQorI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0odm0pOwogI2VuZGlmCi0gICAgICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFs
dWUodm0sIHRoaXMsIHN0cnVjdHVyZSk7CiAgICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2Nh
dGlvbnMgd29uJ3QgaGF2ZSBhIHJlYWwgc3RydWN0dXJlLgotICAgIEFTU0VSVChtX3N0cnVjdHVy
ZSB8fCAhdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9zdHJ1Y3R1cmVJRCB8
fCAhdm0uc3RydWN0dXJlU3RydWN0dXJlKTsKK30KKworaW5saW5lIEpTVHlwZSBKU0NlbGw6OnR5
cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK2lubGluZSBJbmRleGluZ1R5
cGUgSlNDZWxsOjppbmRleGluZ1R5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZGV4aW5n
VHlwZTsKIH0KIAogaW5saW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3N0cnVjdHVyZS5nZXQoKTsKKyAgICByZXR1cm4gSGVhcDo6aGVhcCh0
aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmdldChtX3N0cnVjdHVyZUlEKTsKK30KKworaW5saW5l
IFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAoreworICAgIHJldHVy
biB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7CiB9CiAKIGlu
bGluZSB2b2lkIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxsKTsKIAotICAg
IHZpc2l0b3IuYXBwZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
UG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTExNiwz
NyArMTQ1LDQxIEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKIAog
aW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBl
KTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOworICAgIHJl
dHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0dl
dHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gR2V0dGVy
U2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IFByb3h5VHlwZTsK
KyAgICByZXR1cm4gbV90eXBlID09IFByb3h5VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxs
Ojppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOworICAgIHJldHVybiBtX3R5
cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjpzZXRT
dHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSA9PSB0aGlzLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Ci0g
ICAgQVNTRVJUKCFtX3N0cnVjdHVyZQotICAgICAgICB8fCBtX3N0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAgICAgICB8fCBtX3N0cnVjdHVy
ZS5nZXQoKSA9PSBzdHJ1Y3R1cmUpOwotICAgIG1fc3RydWN0dXJlLnNldCh2bSwgdGhpcywgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0aGlzLT5zdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOworICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCkKKyAg
ICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVl
bkludmFsaWRhdGVkKCkKKyAgICAgICAgfHwgSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURU
YWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVyZSk7CisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0
dXJlLT5pZCgpOworICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlw
ZUZsYWdzKCk7CisgICAgbV90eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKTsKKyAg
ICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiB9CiAKIGlubGlu
ZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZUZvckRlc3RydWN0aW9uKCkg
Y29uc3QKQEAgLTE1NiwxMCArMTg5LDIwIEBAIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlND
ZWxsOjptZXRob2QKIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRh
YmxlKCkgY29uc3QKIHsKLSAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gbV9zdHJ1
Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3Ry
dWN0dXJlKCk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+
c3RydWN0dXJlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0gcm9v
dFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOwogCi0gICAgcmV0dXJuICZjbGFzc0luZm8oKS0+bWV0
aG9kVGFibGU7CisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJs
ZTsKK30KKworaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKFZN
JiB2bSkgY29uc3QKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSh2bSk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+c3Ry
dWN0dXJlKCkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0gcm9vdFN0
cnVjdHVyZS0+c3RydWN0dXJlKCkpOworCisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0cyhjb25z
dCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CkBAIC0xOTcsNiArMjQwLDIyIEBAIGlubGluZSBUcmlT
dGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSAKICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
IH0KIAoraW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwg
SlNDZWxsKiB0bykKK3sKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAg
V3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVCYXJyaWVyKCk7CisjZW5kaWYKKyAgICBp
ZiAoIWZyb20gfHwgIWZyb20tPmlzTWFya2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFmcm9tIHx8
ICFpc01hcmtlZChmcm9tKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF0byB8
fCB0by0+aXNNYXJrZWQoKSkgeworICAgICAgICBBU1NFUlQoIXRvIHx8IGlzTWFya2VkKHRvKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ2VsbElubGluZXNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHJldmlz
aW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgU3RydWN0dXJlKiBKU0RhdGFW
aWV3OjpjcmVhdGVTdHJ1Y3R1cmUoCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoCi0gICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksCisgICAgICAgIHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oRGF0YVZpZXdUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwKICAgICAgICAgTm9uQXJyYXkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDE2NDY1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMyw3IEBAIGlubGluZSBjb25zdCBDbGFzc0lu
Zm8qIEpTQ2VsbDo6Y2xhc3NJbmYKIHsKICAgICBpZiAoTWFya2VkQmxvY2s6OmJsb2NrRm9yKHRo
aXMpLT5kZXN0cnVjdG9yVHlwZSgpID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFz
c0luZm8oKTsKLSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICByZXR1cm4gbV9zdHJ1Y3R1
cmUudW52YWxpZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3N0
cnVjdHVyZS0+Y2xhc3NJbmZvKCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gc3RydWN0dXJlKCktPmNs
YXNzSW5mbygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgSlNGdW5jdGlvbjo6Z2V0T3duTm9uSW5kZXhQcm9w
ZXJ0eU4KICAgICBpZiAoIXRoaXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYg
KG1vZGUgPT0gSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcykpIHsKICAgICAgICAgLy8gTWFrZSBz
dXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90
b3R5cGUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5wcm90b3R5cGUsIHNsb3QpOwogCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpOwogICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKTsKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEpT
RnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAgICAgICAgIC8vIE1ha2Ugc3VyZSBw
cm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0IGl0IGNhbiBvbmx5IGJlIG92ZXJ3
cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVsZXMgc2V0IG91dCBpbiBFQ01BLTI2
MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwotICAgICAg
ICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAgICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9m
aWxlLmNsZWFyKCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1fYWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50LmZpcmVBbGwoKTsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgdGhpcyB0byBiZSBjYWNo
ZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fYWxsb2NhdGlvblByb2ZpbGUuCkBAIC00
NjEsNyArNDYxLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iagog
ICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhh
dCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1
bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAg
ICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKICAgICAgICAgdGhpc09i
amVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwogICAgICAgICB0aGlzT2JqZWN0LT5t
X2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5maXJlQWxsKCk7CiAgICAgICAgIHJldHVybiBC
YXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3Jp
cHRvciwgdGhyb3dFeGNlcHRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5KTsKKyAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8odHlwZUZvclR5cGVkQXJyYXlUeXBlKEFkYXB0b3I6OnR5cGVWYWx1ZSksIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBj
b25zdCBDbGFzc0luZm8gc19pbmZvOyAvLyBUaGlzIGlzIG5ldmVyIGFjY2Vzc2VkIGRpcmVjdGx5
LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmthZ2Ugb24gc29tZSBjb21waWxlcnMuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAx
NjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nyw5IEBAIHN0YXRpYyB1bnNpZ25lZCBsYXN0QXJyYXlT
aXplID0gMDsKIAogSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVjdFNsb3coSlNDZWxsKiBjZWxsKQog
ewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKCk7Ci0gICAgaWYg
KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisgICAgaWYg
KGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAgICAgICAgcmV0dXJuIGNlbGw7Ci0g
ICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0
aW9uOjppbmZvKCkpKQorICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPmlz
U3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gY2Vs
bDsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEyOSw3ICsxMjgsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgSlNPYmplY3Q6OmNvcHlCdXR0ZXJmCiAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4qIGN1cnJlbnRTb3VyY2U7CiAgICAgICAgICAgICBzaXplX3QgY291bnQ7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgeworICAg
ICAgICAgICAgc3dpdGNoICh0aGlzLT5pbmRleGluZ1R5cGUoKSkgewogICAgICAgICAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgY2FzZSBBTExfQ09O
VElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVY
SU5HX1RZUEVTOgpAQCAtMTkwLDcgKzE4OSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVj
dDo6dmlzaXRCdXR0ZXIKICAgICAgICAgYnV0dGVyZmx5LT5iYXNlKHByZUNhcGFjaXR5LCBwcm9w
ZXJ0eUNhcGFjaXR5KSwgY2FwYWNpdHlJbkJ5dGVzKTsKICAgICAKICAgICAvLyBNYXJrIHRoZSBh
cnJheSBpZiBhcHByb3ByaWF0ZS4KLSAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkpIHsKKyAgICBzd2l0Y2ggKHRoaXMtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExf
Q09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
YnV0dGVyZmx5LT5jb250aWd1b3VzKCkuZGF0YSgpLCBidXR0ZXJmbHktPnB1YmxpY0xlbmd0aCgp
KTsKICAgICAgICAgYnJlYWs7CkBAIC0yNDgsMTEgKzI0NywxMiBAQCB2b2lkIEpTRmluYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAgICAgCiAgICAgSlNDZWxsOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKTsKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IHRoaXNPYmpl
Y3QtPmJ1dHRlcmZseSgpOwogICAgIGlmIChidXR0ZXJmbHkpCi0gICAgICAgIHRoaXNPYmplY3Qt
PnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwgdGhpc09iamVjdC0+c3RydWN0dXJl
KCktPm91dE9mTGluZVNpemUoKSk7CisgICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5
KHZpc2l0b3IsIGJ1dHRlcmZseSwgc3RydWN0dXJlLT5vdXRPZkxpbmVTaXplKCkpOwogCi0gICAg
c2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3RydWN0dXJlKCktPmlubGluZVNpemUo
KTsKKyAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBzdHJ1Y3R1cmUtPmlubGluZVNpemUoKTsKICAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5pbmxpbmVTdG9yYWdlKCksIHN0b3Jh
Z2VTaXplKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTI3NCw5ICsyNzQsOSBAQCBib29s
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4CiAgICAgLy8gZ2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCgpLgogICAgIAogICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQotICAg
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90
KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgaSksIHNsb3QpOworICAg
ICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blBy
b3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBz
bG90KTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAg
ICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFrOwpAQCAtMzU4LDEwICszNTgsMTAgQEAgdm9p
ZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIC8vIENoZWNrIGlmIHRo
ZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KICAg
ICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJvcGVydHlOYW1lICE9IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgZm9yIChKU09iamVjdCogb2Jq
ID0gdGhpc09iamVjdDsgIW9iai0+c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkg
eworICAgICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzT2JqZWN0OyAhb2JqLT5zdHJ1Y3R1
cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3Rv
KCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9
IG9iai0+cHJvdG90eXBlKCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvdG90
eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90
eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkpOwog
ICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0
KHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpAQCAtMzc0LDEwICszNzQsMTAgQEAg
dm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgIGZvciAob2JqID0g
dGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgIHVuc2ln
bmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSh2bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgaWYgKGlzVmFsaWRPZmZzZXQob2Zmc2V0
KSkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewotICAgICAgICAg
ICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW5NYXlJ
bnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXNP
YmplY3QpOworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0p
LT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlO
YW1lKSB8fCBvYmogPT0gdGhpc09iamVjdCk7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDA2LDcgKzQwNiw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBBU1NFUlQoIXRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0o
KSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpc09iamVjdCk7CisgICAgQVNTRVJUKCF0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8o
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpc09iamVjdCk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0Pih2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKSAmJiBzbG90Lmlz
U3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAgcmV0dXJuOwpAQCAt
NDIyLDcgKzQyMiw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPnN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+aW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIApAQCAtNTUzLDcgKzU1Myw3IEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmVudGVyRGljdGlvbmFyeUkKICAgICB9CiAKICAgICBEZWZlckdDIGRlZmVyR0Modm0u
aGVhcCk7Ci0gICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHko
KS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSgpLCAwLCBBcnJheVN0b3JhZ2U6OnNp
emVGb3IoMCkpOworICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVy
Zmx5KCktPnJlc2l6ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCAwLCBBcnJheVN0b3Jh
Z2U6OnNpemVGb3IoMCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAgICAg
bmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9pbmRleEJpYXMgPSAwOwogICAgIG5ld0J1
dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnNldFZlY3Rvckxlbmd0aCgwKTsKQEAgLTU2NSw3ICs1
NjUsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRlckRpY3Rpb25hcnlJCiAKIHZvaWQg
SlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZShWTSYgdm0pCiB7Ci0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5H
X1RZUEVTOgpAQCAtNTg5LDcgKzU4OSw3IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVByZXNlbmNl
T2ZJbmRleGVkQWMKICAgICBpZiAobWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWRkSW5kZXhlZEFjY2Vzc29ycykpOwor
ICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSh2bSksIEFkZEluZGV4ZWRBY2Nlc3NvcnMpKTsKICAgICAKICAgICBpZiAoIXZt
LnByb3RvdHlwZU1hcC5pc1Byb3RvdHlwZSh0aGlzKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjAw
LDcgKzYwMCw3IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMKIEJ1
dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZShWTSYgdm0sIHVu
c2lnbmVkIGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplKQogewogICAgIEFTU0VSVChsZW5ndGgg
PCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpOworICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gaW5kZXhpbmdU
eXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3BlcnRpZXMo
b2xkVHlwZSkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5n
KCkpOwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKQEAgLTYxNyw3ICs2
MTcsNyBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpCiB7CiAgICAg
RGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0g
Y3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9w
ZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZVVuZGVjaWRlZCk7CisgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVVbmRlY2lkZWQpOwogICAgIHNldFN0cnVjdHVy
ZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJmbHkpOwogICAgIHJldHVy
biBuZXdCdXR0ZXJmbHk7CiB9CkBAIC02MjYsNyArNjI2LDcgQEAgQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0OjpjcmVhdGVJbml0aQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsK
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFn
ZSh2bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsKLSAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUoKSwgQWxsb2NhdGVJbnQzMik7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVJ
bnQzMik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5l
d0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7
CiB9CkBAIC02MzcsNyArNjM3LDcgQEAgQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNyZWF0
ZUluaXRpYQogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4
ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihkb3VibGUpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KQogICAgICAgICBuZXdCdXR0
ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47Ci0gICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIEFsbG9jYXRlRG91YmxlKTsKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxvY2F0ZURv
dWJsZSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5l
d0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
OwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y3Jl
YXRlSW5pdGkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQnV0dGVyZmx5
KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxlbmd0aCwg
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRl
Q29udGlndW91cyk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3Vz
KTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0
dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CkBAIC02
NTQsMTAgKzY1NCwxMSBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRp
CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhZ2UoVk0mIHZtLCB1bnNp
Z25lZCBsZW5ndGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKICAgICBEZWZlckdDIGRlZmVy
R0Modm0uaGVhcCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUo
KTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VS
VF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKICAgICBC
dXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdo
dCgKLSAgICAgICAgbV9idXR0ZXJmbHkuZ2V0KCksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRl
cmZseS5nZXQoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBmYWxzZSwgMCwKICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxl
bmd0aCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAKQEAgLTY2Nyw3ICs2
NjgsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhCiAgICAgcmVz
dWx0LT5tX3NwYXJzZU1hcC5jbGVhcigpOwogICAgIHJlc3VsdC0+bV9udW1WYWx1ZXNJblZlY3Rv
ciA9IDA7CiAgICAgcmVzdWx0LT5tX2luZGV4QmlhcyA9IDA7Ci0gICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKCkpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBu
ZXdCdXR0ZXJmbHkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NzksMzQgKzY4MCwzNSBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQXJyCiAKIENvbnRpZ3VvdXNK
U1ZhbHVlcyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvSW50MzIoVk0mIHZtKQogewotICAg
IEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFsbG9jYXRlSW50MzIpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4
aW5nVHlwZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVJbnQzMikpOwogICAgIHJldHVy
biBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVz
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUoVk0mIHZtKQogewotICAgIEFTU0VS
VChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJU
KGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgCi0gICAgc2V0U3RydWN0dXJl
KHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFs
bG9jYXRlRG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsKICAgICBy
ZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAogQ29udGlndW91c0pT
VmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKFZNJiB2bSkKIHsK
LSAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwot
ICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNp
ZGVkKGluZGV4aW5nVHlwZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3Vz
KSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5
aW5nRWxlbWVudHMoVk0mIHZtLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIHVuc2lnbmVkIHB1Ymxp
Y0xlbmd0aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBwcm9w
ZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgdW5z
aWduZWQgcHJvcGVydHlTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsKKyAgICB1
bnNpZ25lZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
OworICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgp
OwogICAgIAogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVV
bmluaXRpYWxpemVkKAogICAgICAgICB2bSwgdGhpcywgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5lZWRlZExlbmd0aCkpOwpAQCAtNzI5LDEyICs3MzEs
MTIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogQXJyYXlTdG9y
YWdlKiBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9u
UHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsK
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY29uc3Ry
dWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVk
TGVuZ3RoKTsKICAgICAvLyBObyBuZWVkIHRvIGNvcHkgZWxlbWVudHMuCiAgICAgCi0gICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2
bSwgc3RydWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRy
YW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJl
LCBzdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CkBAIC03NDYs
MTIgKzc0OCwxMiBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkCiAK
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShW
TSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwg
c3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0
dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3Vn
Z2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKIH0KIAogQ29udGlndW91c0RvdWJsZXMg
SlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFz
SW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMy
KGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJm
bHktPnZlY3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiogY3VycmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV07CkBAIC03NjUs
MjEgKzc2NywyMSBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyCiAg
ICAgICAgICpjdXJyZW50QXNEb3VibGUgPSB2LmFzSW50MzIoKTsKICAgICB9CiAgICAgCi0gICAg
c2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIEFsbG9jYXRlRG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3Vi
bGUpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAog
Q29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMoVk0m
IHZtKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKLSAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUoKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250
aWd1b3VzKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZNJiB2bSwg
Tm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkK
IHsKLSAgICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Cisg
ICAgQVNTRVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgRGVmZXJHQyBk
ZWZlckdDKHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVj
dENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExl
bmd0aCk7CkBAIC03OTEsNyArNzkzLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dEludDMyVG9BcgogICAgICAgICBuZXdTdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAg
ICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZt
LCBzdHJ1Y3R1cmUodm0pLCB0cmFuc2l0aW9uKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJm
bHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVy
biBuZXdTdG9yYWdlOwogfQpAQCAtODAzLDEzICs4MDUsMTMgQEAgQXJyYXlTdG9yYWdlKiBKU09i
amVjdDo6Y29udmVydEludDMyVG9BcgogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0
SW50MzJUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRv
QXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNp
dGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVj
dHVyZSh2bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHRlbXBs
YXRlPEpTT2JqZWN0OjpEb3VibGVUb0NvbnRpZ3VvdXNNb2RlIG1vZGU+CiBDb250aWd1b3VzSlNW
YWx1ZXMgSlNPYmplY3Q6OmdlbmVyaWNDb252ZXJ0RG91YmxlVG9Db250aWd1b3VzKFZNJiB2bSkK
IHsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAg
ZG91YmxlKiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CkBA
IC04MzIsNyArODM0LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpnZW5lcmljQ29u
dgogICAgICAgICBjdXJyZW50QXNWYWx1ZS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAg
ICB9CiAgICAgCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOworICAgIHNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSh2bSksIEFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29u
dGlndW91cygpOwogfQogCkBAIC04NDksNyArODUxLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpT
T2JqZWN0OjpyYWdlQ29udmVydAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJs
ZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24s
IHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
Ci0gICAgQVNTRVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9y
YWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENv
cHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTg2MCw3ICs4NjIsNyBAQCBB
cnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAgICAgICAgIG5ld1N0b3Jh
Z2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0
dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRpb24p
OwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdTdG9y
YWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC04NzIsMTMg
Kzg3NCwxMyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAKIEFy
cmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0p
CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJl
KCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnZl
cnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlT
dG9yYWdlVHJhbnNpdGlvbigpKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dENvbnRpZ3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0
cmFuc2l0aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSk7CiAg
ICAgCiAgICAgQXJyYXlTdG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJy
YXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAg
LTg4OSw3ICs4OTEsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91
CiAgICAgICAgIG5ld1N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAg
Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVy
ZSh2bSksIHRyYW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3
U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3Jh
Z2U7CiB9CkBAIC05MDEsNyArOTAzLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVy
dENvbnRpZ3VvdQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1Rv
QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydENvbnRpZ3VvdXNUb0Fy
cmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRp
b24oKSk7CisgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN0
cnVjdHVyZSh2bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHZv
aWQgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFs
dWUpCkBAIC05NzUsOSArOTc3LDkgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1
cmVJbnQzMgogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYg
KFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNT
bG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJl
U3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAgICAgICAgIHJldHVybiBjcmVh
dGVJbml0aWFsSW50MzIodm0sIDApOwogICAgICAgICAKQEAgLTk5OSw5ICsxMDAxLDkgQEAgQ29u
dGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmVuc3VyZURvdWJsZQogewogICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFO
S19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAg
IGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+
bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0Rv
dWJsZXMoKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxEb3VibGUodm0sIDApOwogICAg
ICAgICAKQEAgLTEwMjUsOSArMTAyNyw5IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6
ZW5zdXJlQ29udGkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4
aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAg
IGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4g
Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXModm0sIDApOwogICAgICAgICAKQEAgLTEwNjUsNyArMTA2
Nyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIHsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGlu
Z1Nob3VsZEJlU3BhcnNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFn
ZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSk7CkBAIC0xMDczLDIyICsx
MDc1LDIyIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKICAgICAg
ICAgCiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBBU1NF
UlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghc3RydWN0dXJl
KCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2
bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1cm4gY29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsK
LSAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7Cisg
ICAgICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAg
ICAgICAgIHJldHVybiBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSk7CiAgICAgICAgIAog
ICAgIGNhc2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRl
eGluZ1Nob3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5
U3RvcmFnZSh2bSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAg
IEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAg
IHJldHVybiBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAg
ICAgZGVmYXVsdDoKQEAgLTEwOTksNyArMTEwMSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmVuc3VyZUFycmF5U3RvcmEKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlT
dG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJiB2bSkKIHsKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAg
ICAgICBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApOwogICAgICAgICBTcGFyc2VBcnJheVZh
bHVlTWFwKiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsKQEAgLTExMzAsNyArMTEz
Miw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAogdm9pZCBK
U09iamVjdDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAg
IGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgQWxsb2NhdGVTbG93UHV0QXJyYXlT
dG9yYWdlKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTQ5LDcgKzExNTEsNyBAQCB2b2lkIEpTT2Jq
ZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhCiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJy
YXlXaXRoQXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2Up
OwogICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTExNjYsNyArMTE2OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZShWTSYgdm0sIEpTVmEKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgIHZt
LnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUoYXNPYmplY3QocHJvdG90eXBlKSk7CiAgICAgCi0g
ICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm90b3R5cGUpOworICAgIFN0cnVjdHVyZSogbmV3
U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCBwcm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJl
KTsKICAgICAKICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+YW55T2JqZWN0SW5DaGFpbk1heUludGVy
Y2VwdEluZGV4ZWRBY2Nlc3NlcygpKQpAQCAtMTE3NywxMCArMTE3OSwxMCBAQCB2b2lkIEpTT2Jq
ZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgCi0gICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpKQorICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5
cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0
b3JhZ2Uodm0pOwpAQCAtMTE4OCw3ICsxMTkwLDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90
eXBlKFZNJiB2bSwgSlNWYQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVD
aGVjayhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIEFTU0VSVCht
ZXRob2RUYWJsZSgpLT50b1RoaXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7
CisgICAgQVNTRVJUKG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXModGhpcywgZXhlYywg
Tm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJv
dG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUuaXNPYmpl
Y3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQpAQCAtMTIyNywxMiAr
MTIyOSwxMyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yCiAgICAg
Ly8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91
ciBTdHJ1Y3R1cmUKICAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVy
IG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6
TmV3UHJvcGVydHkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1
dGVDaGFuZ2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzKSk7CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMp
KTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAg
ICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29u
dGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWlu
c1JlYWRPbmx5UHJvcGVydGllcygpOwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90byk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHBy
b3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCiBi
b29sIEpTT2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0xMjU0LDI0ICsxMjU3LDI1IEBAIGJvb2wgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2UKICAgICAKICAgICB1bnNpZ25lZCBpID0gcHJvcGVy
dHlOYW1lLmFzSW5kZXgoKTsKICAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgp
Ci0gICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmpl
Y3QsIGV4ZWMsIGkpOwogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlm
aWVkKCkpCiAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRl
KGV4ZWMpOwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmlj
VmFsdWU7Ci0gICAgaWYgKGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdl
dChleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkg
ewotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZtKCkuaXNJ
bkRlZmluZU93blByb3BlcnR5KCkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAo
aXNWYWxpZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgRG9udERlbGV0ZSAmJiAhdm0uaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVj
LT52bSgpLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3Qo
dm0sIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8v
IExvb2sgaW4gdGhlIHN0YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwogICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSB0aGlzT2JqZWN0LT5maW5kUHJvcGVydHlIYXNoRW50cnkoZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRy
aWJ1dGVzKCkgJiBEb250RGVsZXRlICYmICFleGVjLT52bSgpLmlzSW5EZWZpbmVPd25Qcm9wZXJ0
eSgpKQorICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIXZt
LmlzSW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0
aGlzIGJ1aWx0aW4gcHJvcGVydHkgY2FuJ3QgYmUgZGVsZXRlZAogCiAgICAgICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwpAQCAtMTI4NCw3ICsxMjg4LDcgQEAgYm9vbCBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogYm9vbCBKU09iamVjdDo6aGFzT3duUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAog
ewogICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHJldHVybiBjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9j
YXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0
dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJ
bmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKQEAgLTEyOTIs
OSArMTI5Niw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAg
ICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAog
ICAgIGlmIChpID4gTUFYX0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBpKSk7CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBB
TExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEz
NjcsNyArMTM3MSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHQK
IAogYm9vbCBKU09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91
YmxlJiBudW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICByZXN1bHQgPSBtZXRo
b2RUYWJsZSgpLT5kZWZhdWx0VmFsdWUodGhpcywgZXhlYywgUHJlZmVyTnVtYmVyKTsKKyAgICBy
ZXN1bHQgPSBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmYXVsdFZhbHVlKHRoaXMsIGV4ZWMs
IFByZWZlck51bWJlcik7CiAgICAgbnVtYmVyID0gcmVzdWx0LnRvTnVtYmVyKGV4ZWMpOwogICAg
IHJldHVybiAhcmVzdWx0LmlzU3RyaW5nKCk7CiB9CkBAIC0xNDEwLDEyICsxNDE0LDEzIEBAIGNv
bnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUgKIAogYm9vbCBKU09iamVjdDo6
aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFR5cGVJ
bmZvIGluZm8gPSBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOworICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwogICAg
IGlmIChpbmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJu
IGRlZmF1bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUpKTsKICAgICBpZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2Uo
KSkKLSAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMs
IGV4ZWMsIHZhbHVlKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0
ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIgLCB0aGlzKSk7CisgICAg
ICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMs
IHZhbHVlKTsKKyAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkUGFyYW1l
dGVyRXJyb3IoZXhlYywgImluc3RhbmNlb2YiICwgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtMTQzOSw4ICsxNDQ0LDkgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3Rh
bmNlKEV4ZWNTdAogCiBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQg
YXR0cmlidXRlczsKLSAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMt
PnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKQorICAgIGlm
IChpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSh2bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
VGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNob3Vs
ZCBwcm9iYWJseQpAQCAtMTQ1MywxOCArMTQ1OSwxOSBAQCBib29sIEpTT2JqZWN0OjpnZXRQcm9w
ZXJ0eVNwZWNpZmljVmFsdWUoCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFz
ZU9iamVjdChvYmplY3QpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IEpTT2JqZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmplY3QtPnByb3RvdHlwZSgpKTsKICAg
ICB3aGlsZSgxKSB7Ci0gICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkgewotICAgICAgICAgICAgcHJvdG90eXBl
LT5tZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CisgICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5
cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7CisgICAgICAgICAgICBwcm90
b3R5cGUtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMs
IHByb3BlcnR5TmFtZXMsIG1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3Rv
dHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0
aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVy
dHlOYW1lcywgbW9kZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5w
cm90b3R5cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTQ3OCw3ICsxNDg1LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iagogICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdp
dGggYW4gaWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkg
aW5lZmZpY2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2Fj
aCwKICAgICAvLyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVj
dHVyZSBmb3IgUHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPnN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0xNTM3LDE1ICsxNTQ0
LDE2IEBAIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBtb2RlKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHBy
b3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIGdldENsYXNzUHJvcGVy
dHlOYW1lcyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCBv
YmplY3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKKyAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIGJvb2wgY2FuQ2FjaGVQcm9wZXJ0aWVzRnJvbVN0cnVjdHVyZSA9ICFwcm9wZXJ0
eU5hbWVzLnNpemUoKTsKLSAgICBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVz
RnJvbVN0cnVjdHVyZShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmpl
Y3QtPnN0cnVjdHVyZSh2bSktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlmIChjYW5DYWNoZVByb3BlcnRpZXNGcm9tU3RydWN0
dXJlKQogICAgICAgICBwcm9wZXJ0eU5hbWVzLnNldE51bUNhY2hlYWJsZVNsb3RzRm9yT2JqZWN0
KG9iamVjdCwgcHJvcGVydHlOYW1lcy5zaXplKCkpOwpAQCAtMTU3Nyw3ICsxNTg1LDcgQEAgdm9p
ZCBKU09iamVjdDo6c2VhbChWTSYgdm0pCiAgICAgaWYgKGlzU2VhbGVkKHZtKSkKICAgICAgICAg
cmV0dXJuOwogICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0s
IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgc2V0U3Ry
dWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7
CiB9CiAKIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYgdm0pCkBAIC0xNTg1LDE0ICsxNTkzLDE0
IEBAIHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYgdm0pCiAgICAgaWYgKGlzRnJvemVuKHZtKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKLSAgICBzZXRTdHJ1
Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCkpKTsK
KyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKHZtKSkpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhWTSYg
dm0pCiB7CiAgICAgZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKICAgICBpZiAoaXNF
eHRlbnNpYmxlKCkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpwcmV2ZW50
RXh0ZW5zaW9uc1RyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgICAgIHNldFN0cnVj
dHVyZSh2bSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSh2bSkpKTsKIH0KIAogLy8gVGhpcyBwcmVzZW50bHkgd2lsbCBmbGF0dGVuIHRvIGFuIHVu
Y2FjaGFibGUgZGljdGlvbmFyeTsgdGhpcyBpcyBzdWl0YWJsZQpAQCAtMTYwNSwxMiArMTYxMywx
MiBAQCB2b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgLy8gSWYg
dGhpcyBvYmplY3QncyBDbGFzc0luZm8gaGFzIG5vIHN0YXRpYyBwcm9wZXJ0aWVzLCB0aGVuIG5v
dGhpbmcgdG8gcmVpZnkhCiAgICAgLy8gV2UgY2FuIHNhZmVseSBzZXQgdGhlIGZsYWcgdG8gYXZv
aWQgdGhlIGV4cGVuc2l2ZSBjaGVjayBhZ2FpbiBpbiB0aGUgZnV0dXJlLgogICAgIGlmICghY2xh
c3NJbmZvKCktPmhhc1N0YXRpY1Byb3BlcnRpZXMoKSkgewotICAgICAgICBzdHJ1Y3R1cmUoKS0+
c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOworICAgICAgICBzdHJ1Y3R1cmUodm0pLT5zZXRT
dGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoIXN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQotICAgICAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KHZtLCBzdHJ1Y3R1cmUoKSkpOworICAgIGlmICghc3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSkKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnRvVW5j
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogCiAgICAg
Zm9yIChjb25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8oKTsgaW5mbzsgaW5mbyA9IGlu
Zm8tPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogaGFzaFRhYmxlID0g
aW5mby0+cHJvcEhhc2hUYWJsZShnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKQEAgLTE2
MjMsMjQgKzE2MzEsMjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JE
ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9u
c1JlaWZpZWQoKTsKKyAgICBzdHJ1Y3R1cmUodm0pLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVk
KCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5n
ZXQodm0sIHByb3BlcnR5TmFtZSkpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0s
IHByb3BlcnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQ7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFy
eSgpKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1v
dmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBp
ZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIHB1dERpcmVjdFVuZGVmaW5lZChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAgICAgaWYgKG9mZnNldCA9PSBpbnZh
bGlkT2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0RGlyZWN0VW5kZWZpbmVk
KG9mZnNldCk7CkBAIC0xODY5LDcgKzE4NzgsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9J
bnRlcmNlcHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIHZv
aWQgSlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRl
cyhFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNT
RVJUKChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0g
aW5kZXhpbmdTaGFwZSk7CisgICAgQVNTRVJUKChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hh
cGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSk7CiAgICAgCiAgICAgLy8gRm9yIHVzIHRvIGdldCBoZXJlLCB0aGUgaW5kZXggaXMg
ZWl0aGVyIGdyZWF0ZXIgdGhhbiB0aGUgcHVibGljIGxlbmd0aCwgb3IgZ3JlYXRlciB0aGFuCkBA
IC0xOTk4LDcgKzIwMDcsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9y
TGVuCiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNp
ZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9yLgogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRF
WCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdf
VFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkgewogICAgICAg
ICAgICAgcHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0y
MDExLDcgKzIwMjAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVu
CiAgICAgICAgICAgICAgICAgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBjcmVhdGVBcnJh
eVN0b3JhZ2Uodm0sIDAsIDApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkgeworICAgICAgICBp
ZiAoc3RydWN0dXJlKGV4ZWMtPnZtKCkpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CiAgICAg
ICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkg
KyAxLCBnZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKICAgICAgICAgICAgIHN0b3Jh
Z2UtPm1fdmVjdG9yW2ldLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3RvcmFn
ZS0+bV9udW1WYWx1ZXNJblZlY3RvcisrOwpAQCAtMjA2Niw3ICsyMDc1LDcgQEAgYm9vbCBKU09i
amVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgCiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91
dHNpZGUgb2YgdGhlIGN1cnJlbnQgdmVjdG9yLgotICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFn
ZShpbmRleGluZ1R5cGUoKSkpOwogICAgIEFTU0VSVChhcnJheVN0b3JhZ2UoKSA9PSBzdG9yYWdl
KTsKICAgICBBU1NFUlQoaSA+PSBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSB8fCBhdHRyaWJ1dGVz
KTsKICAgICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjE0OCw3ICsyMTU3LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIGlmIChhdHRy
aWJ1dGVzICYgKFJlYWRPbmx5IHwgQWNjZXNzb3IpKQogICAgICAgICBub3RpZnlQcmVzZW5jZU9m
SW5kZXhlZEFjY2Vzc29ycyh2bSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
TExfQkxBTktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVT
cGFyc2UoKSB8fCBhdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5k
ZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKApAQCAtMjE1OSw3ICsyMTY4LDcg
QEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgICAgICAgICAg
cmV0dXJuIHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgK
ICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwgY3JlYXRl
QXJyYXlTdG9yYWdlKHZtLCAwLCAwKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVy
ZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhl
Yy0+dm0oKSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3Rv
cmFnZSogc3RvcmFnZSA9IGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rv
ckxlbmd0aCgwLCAwLCBpICsgMSkpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0u
c2V0KHZtLCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yKys7CkBAIC0yMjgyLDcgKzIyOTEsNyBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpT
T2JqZWN0OjpnZXROZXdWCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoOwogICAgIHVuc2lnbmVk
IGxlbmd0aDsKICAgICAKLSAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSkgeworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGlu
Z1R5cGUoKSkpIHsKICAgICAgICAgdmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxl
bmd0aCgpOwogICAgICAgICBsZW5ndGggPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAg
ICAgfSBlbHNlIHsKQEAgLTIzMjEsNyArMjMzMCw3IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3Vu
dEVsZW1lbnRzKEJ1dHRlcmYKIAogdW5zaWduZWQgSlNPYmplY3Q6OmNvdW50RWxlbWVudHMoKQog
ewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgog
ICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0yMzYwLDEwICsyMzY5LDExIEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVu
Z3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5n
dGgobmV3TGVuZ3RoKTsKIAogICAgIC8vIEZhc3QgY2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFj
aXR5LiBJbiB0aGVzZSBjYXNlcyBhIHJlYWxsb2MgbWFrZXMgc2Vuc2UuCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChMSUtFTFkoIWluZGV4
QmlhcykpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0
ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5ncm93QXJyYXlSaWdo
dCgKLSAgICAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9m
TGluZUNhcGFjaXR5KCksIHRydWUsCisgICAgICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgICAgICBBcnJheVN0
b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1Zl
Y3Rvckxlbmd0aCkpOwogICAgICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIzNzcsNyArMjM4Nyw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNl
VmVjdG9yTGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdJbmRleEJpYXMgPSBzdGQ6Om1pbihp
bmRleEJpYXMgPj4gMSwgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCAtIG5ld1ZlY3Rvckxlbmd0
aCk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+
cmVzaXplQXJyYXkoCiAgICAgICAgIHZtLCB0aGlzLAotICAgICAgICBzdHJ1Y3R1cmUoKS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0
aCksCisgICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlT
dG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3
QnV0dGVyZmx5KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzkwLDcgKzI0MDAsNyBAQCBi
b29sIEpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiB2b2lkIEpTT2JqZWN0Ojpl
bnN1cmVMZW5ndGhTbG93KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChs
ZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKSB8fCBoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNV
bmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0Nv
bnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBo
YXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkp
OwogICAgIEFTU0VSVChsZW5ndGggPiBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAg
IAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9IHN0ZDo6bWluKApAQCAtMjQwNSw3ICsy
NDE1LDcgQEAgdm9pZCBKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyhWTSYgdm0sIAogCiAgICAg
bV9idXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOwogCi0gICAgaWYg
KGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0Rv
dWJsZShpbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkVmVj
dG9yTGVuZ3RoOyBpIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2J1dHRl
cmZseS0+Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKVtpXSA9IFFOYU47CiAgICAgfQpAQCAtMjQx
OCwxNiArMjQyOCwxNiBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFn
CiAgICAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0
cnVjdHVyZSgpLCBmb3IgdGhlIHByb3BlcnR5CiAgICAgLy8gY2FwYWNpdHksIHNpbmNlIHdlIG1p
Z2h0IGhhdmUgYWxyZWFkeSBtdXRhdGVkIHRoZSBzdHJ1Y3R1cmUgaW4tcGxhY2UuCiAgICAgCi0g
ICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5ncm93UHJvcGVydHlTdG9yYWdlKHZtLCB0aGlzLCBzdHJ1
Y3R1cmUoKSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5ncm93
UHJvcGVydHlTdG9yYWdlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXpl
KTsKIH0KIAogYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewogICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgaWYg
KCFtZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKKyAgICBpZiAoIW1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIC8qIFdvcmthcm91bmQsIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3Qgc2VhcmNoZXMgdGhlIHByb3RvdHlwZSBjaGFpbi4gOi0oICovCi0gICAgaWYgKHNsb3Quc2xv
dEJhc2UoKSAhPSB0aGlzICYmIHNsb3Quc2xvdEJhc2UoKSAmJiBzbG90LnNsb3RCYXNlKCktPm1l
dGhvZFRhYmxlKCktPnRvVGhpcyhzbG90LnNsb3RCYXNlKCksIGV4ZWMsIE5vdFN0cmljdE1vZGUp
ICE9IHRoaXMpCisgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSB0aGlzICYmIHNsb3Quc2xvdEJh
c2UoKSAmJiBzbG90LnNsb3RCYXNlKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXMo
c2xvdC5zbG90QmFzZSgpLCBleGVjLCBOb3RTdHJpY3RNb2RlKSAhPSB0aGlzKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKQogICAgICAgICBkZXNjcmlw
dG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihzbG90LmdldHRlclNldHRlcigpLCBzbG90LmF0dHJp
YnV0ZXMoKSk7CkBAIC0yNDU4LDcgKzI0NjgsNyBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9y
KEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZERlc2NyaXB0b3IudmFs
dWUoKTsKICAgICAgICAgdGFyZ2V0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgbmV3VmFs
dWUsIGF0dHJpYnV0ZXMgJiB+QWNjZXNzb3IpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJl
YWRPbmx5KQotICAgICAgICAgICAgdGFyZ2V0LT5zdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFk
T25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHRhcmdldC0+c3RydWN0dXJlKHZtKS0+c2V0
Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogICAgIGF0dHJpYnV0ZXMgJj0gflJlYWRPbmx5OwpAQCAtMjU0OCw3ICsyNTU4LDcgQEAgYm9v
bCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgIC8vIEEgZ2VuZXJpYyBk
ZXNjcmlwdG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGlu
ZyBwcm9wZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewog
ICAgICAgICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKSB7Ci0gICAg
ICAgICAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVz
Y3JpcHRvcihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3Iu
YXR0cmlidXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1NjEsNyArMjU3MSw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgICAgICAgICBleGVjLT52bSgp
LnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkF0dGVtcHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJh
YmxlIHByb3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
LSAgICAgICAgbWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9y
KGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1
dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMjU4
Myw3ICsyNTkzLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQog
ICAgICAgICB9CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9y
KSAmJiAhZGVzY3JpcHRvci52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIG1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlz
LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVj
LCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092
ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CiAKQEAgLTI2MTEsNyAr
MjYyMSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAg
ICAgZ2V0dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZGVzY3JpcHRvci5nZXR0ZXJP
YmplY3QoKSk7CiAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0
aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2lnbmVkIGF0
dHJzID0gZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAg
ICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0
dHJzIHwgQWNjZXNzb3IpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAg
ICBpZiAodmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5j
dGlvblR5cGUpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIDA7
CiB9CkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBnZXRBcnJh
eUxlbmd0aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVz
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFBy
b3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IHJldHVybiBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfQogICAgICAgICAKICAg
ICB1bnNpZ25lZCBnZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRl
eGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAo
IWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0K
QEAgLTE1Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHko
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgIG1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNo
b3VsZFRocm93KTsKICAgICB9CiAgICAgICAgIAogICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0
aGUgcHV0RGlyZWN0KiBtZXRob2RzOgpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAg
c3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
SlNWYWx1ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAg
ICAgICAgICByZXR1cm4ganNOdW1iZXIobV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQo
KS5hc0ludDMyKCkpOwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVT
OgpAQCAtMjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1ZSB0cnlH
ZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2Ug
QUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY4
LDcgKzI2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdHJ5R2V0
SW5kZXhRdWlja2x5KGkpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgICAgIGlmIChtZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpKQorICAgICAgICBpZiAobWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhl
YywgaSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBpKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CkBAIC0yODIsNyArMjgyLDcgQEAgcHVi
bGljOgogICAgICAgICAKICAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQog
ICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAg
ICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVT
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgCiAgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QodW5zaWdu
ZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExf
QkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMSw3ICszMjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIAogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWdu
ZWQgaSwgSlNWYWx1ZSB2KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAg
ICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogewogICAgICAgICAgICAgQVNTRVJUKGkg
PCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCF2LmlzSW50
MzIoKSkgewpAQCAtMzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBp
bml0aWFsaXplSW5kZXgoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElO
R19UWVBFUzogewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9VbmRlY2lkZWQodm0sIGks
IHYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBib29sIGhhc1NwYXJzZU1hcCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBj
YXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAg
ICAgYm9vbCBpblNwYXJzZUluZGV4aW5nTW9kZSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBj
YXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMy
X0lOREVYSU5HX1RZUEVTOgpAQCAtNDk0LDMxICs0OTQsMzUgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgZ2V0IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBKU1Zh
bHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAg
ICAgewotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZt
LCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgp
LT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlz
LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBz
dHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGlu
dmFsaWRPZmZzZXQgPyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAg
ICBKU1ZhbHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzKSBjb25zdAogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZp
YzsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0
KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBn
ZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNl
dCBnZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAg
IHsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+
aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+
c3RydWN0dXJlKHZtKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9
CiAKICAgICBQcm9wZXJ0eU9mZnNldCBnZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIEpT
Q2VsbCogc3BlY2lmaWM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwotICAgICAg
ICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAg
ICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9
CiAKQEAgLTU5Niw4ICs2MDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFsKFZNJik7CiAgICAg
dm9pZCBmcmVlemUoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByZXZlbnRFeHRl
bnNpb25zKFZNJik7Ci0gICAgYm9vbCBpc1NlYWxlZChWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5pc1NlYWxlZCh2bSk7IH0KLSAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4g
c3RydWN0dXJlKCktPmlzRnJvemVuKHZtKTsgfQorICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7
IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0KKyAgICBib29sIGlzRnJvemVu
KFZNJiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9CiAgICAgYm9v
bCBpc0V4dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0K
ICAgICBib29sIGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKQogICAgIHsKQEAgLTYxOCw3ICs2MjIs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIHN0cnVjdHVyZSgpLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgdGhpcyk7CisgICAgICAgIHN0cnVjdHVyZSh2bSktPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0
dXJlKHZtLCB0aGlzKTsKICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KCkgY29uc3QKQEAgLTY0NSw3ICs2NDksNyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGlndW91cywg
YXJyYXkgc3RvcmFnZSkuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkp
KSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZUludDMyU2xvdyh2bSk7CkBAIC02NTcs
NyArNjYxLDcgQEAgcHVibGljOgogICAgIC8vIG9yIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRp
Z3VvdXNEb3VibGVzIGVuc3VyZURvdWJsZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElL
RUxZKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYg
KExJS0VMWShoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJl
dHVybiBlbnN1cmVEb3VibGVTbG93KHZtKTsKQEAgLTY2Nyw3ICs2NzEsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gaW5kZXhpbmcgc2hvdWxkIGJlIHNwYXJzZSBvciBiZWNhdXNlIHdlJ3JlIGhhdmluZyBh
IGJhZCB0aW1lLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2
bSkKICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4
aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMo
KTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlQ29udGlndW91c1Nsb3codm0p
OwpAQCAtNjc4LDcgKzY4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBhdHRlbXB0cyB0byBjb252ZXJ0
IGVhY2ggZG91YmxlIHRvIGFuIGludDMyLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyByYWdlRW5z
dXJlQ29udGlndW91cyhWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRp
Z3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFko
aGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0
dGVyZmx5LT5jb250aWd1b3VzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIHJhZ2VF
bnN1cmVDb250aWd1b3VzU2xvdyh2bSk7CkBAIC02OTAsNyArNjk0LDcgQEAgcHVibGljOgogICAg
IC8vIGFscmVhZHkuCiAgICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZt
KQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKGlu
ZGV4aW5nVHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VT
bG93KHZtKTsKQEAgLTczOCw3ICs3NDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3RvcmFnZS4g
VGhpcyB3aWxsIGFzc2VydCBvdGhlcndpc2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3Jh
Z2UoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGlu
Z1R5cGUoKSkpOwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwog
ICAgIH0KICAgICAgICAgCkBAIC03NDYsNyArNzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIG9i
amVjdCBpcyBpbiBhIG1vZGUgd2hlcmUgaXQgaGFzIGFycmF5IHN0b3JhZ2UuCiAgICAgQXJyYXlT
dG9yYWdlKiBhcnJheVN0b3JhZ2VPck51bGwoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAg
ICAgICAKQEAgLTgxMyw3ICs4MTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVMZW5n
dGgoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQobGVuZ3Ro
IDwgTUFYX0FSUkFZX0lOREVYKTsKLSAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1Vu
ZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhh
c0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8
fCBoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUo
KSkpOwogICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkgPCBsZW5ndGgpCiAgICAgICAgICAgICBlbnN1cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwpA
QCAtODUxLDcgKzg1NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBj
dXJyZW50SW5kZXhpbmdEYXRhKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NP
TlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXMoKTsKQEAgLTg2OCw3ICs4NzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1
ZSBnZXRIb2x5SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQo
aSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2Ug
QUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0
ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKQEAgLTkwOCw3ICs5MTIsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB1bnNpZ25lZCBjdXJyZW50UmVsZXZhbnRMZW5ndGgoKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNl
IEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgpAQCAtOTgwLDYgKzk4NCwxMCBAQCBwcml2
YXRlOgogICAgIAogcHJvdGVjdGVkOgogICAgIENvcHlXcml0ZUJhcnJpZXI8QnV0dGVyZmx5PiBt
X2J1dHRlcmZseTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorcHJpdmF0ZToKKyAgICB1aW50MzJf
dCBtX3BhZGRpbmc7CisjZW5kaWYKIH07CiAKIC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBl
IG9mIEpTT2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwKQEAgLTExMDYsMzUg
KzExMTQsMzUgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogCiBp
bmxpbmUgYm9vbCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVy
biBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZTsKKyAg
ICByZXR1cm4gdHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpT
T2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKKyAgICByZXR1cm4g
dHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKIH0KIAogCiBpbmxpbmUgYm9vbCBKU09iamVj
dDo6aXNTdGF0aWNTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgSlNUeXBlIHR5cGUgPSBzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUgPSB0aGlzLT50eXBl
KCk7CiAgICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZSB8fCB0eXBlID09IEFj
dGl2YXRpb25PYmplY3RUeXBlOwogfQogCiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc05hbWVT
Y29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gTmFt
ZVNjb3BlT2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzQWN0aXZhdGlv
bk9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEFjdGl2
YXRpb25PYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3Rh
bmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgp
ID09IEVycm9ySW5zdGFuY2VUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gRXJyb3JJbnN0YW5j
ZVR5cGU7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJm
bHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCkBA
IC0xMTk4LDEwICsxMjA2LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5l
R2V0T3cKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWM7
Ci0gICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsK
KyAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkT2Zmc2V0
KG9mZnNldCkpKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXREaXJlY3Qob2Zmc2V0KTsK
LSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYg
dmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpICYmIHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAg
ICBmaWxsR2V0dGVyUHJvcGVydHlTbG90KHNsb3QsIHZhbHVlLCBhdHRyaWJ1dGVzLCBvZmZzZXQp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIGF0dHJpYnV0
ZXMsIHZhbHVlLCBvZmZzZXQpOwpAQCAtMTIyMSw5ICsxMjMxLDEwIEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGUKIAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0
OjpmYXN0R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmICghc3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBpZiAoIXN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5s
aW5lR2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgcmV0
dXJuIG1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiAvLyBJdCBtYXkgc2Vl
bSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJp
ZyBkaWZmZXJlbmNlCkBAIC0xMjQ1LDcgKzEyNTYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmdldFByb3BlcnR5CiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAg
d2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisg
ICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdC0+cHJv
dG90eXBlKCk7CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCkBAIC0xMjgwLDE1
ICsxMjkxLDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAg
ICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6
OmhlYXAodGhpcykpOwogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUuYXNJbmRleCgpID09IFByb3Bl
cnR5TmFtZTo6Tm90QW5JbmRleCk7CiAKLSAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFy
eSgpKSB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwor
ICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1
cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9u
OwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7
CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9w
ZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAg
ICAgICAgIGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYg
dGhlcmUgaXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0
aGVyIGlzbid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQs
IHRoZW4gZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9u
ICYmIChzcGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAg
ICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBw
cm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKChtb2RlID09
IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzA5LDI0ICsxMzIxLDI0IEBAIGlubGluZSBib29s
IEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgICAgICBEZWZlckdDIGRlZmVyR0Mo
dm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7
Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkp
Ci0gICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3Ry
dWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdP
dXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgp
LT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHko
dm0sIHN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkpOworICAgICAgICBpZiAodGhpcy0+c3RydWN0
dXJlKCktPnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3QnV0
dGVyZmx5ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIHRoaXMtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVDYXBhY2l0eSgpLCB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5l
U3RvcmFnZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSB0aGlzLT5zdHJ1Y3R1cmUoKS0+
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCB0aGlzLT5zdHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsKIAogICAgICAgICB2YWxpZGF0ZU9m
ZnNldChvZmZzZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRPZmZzZXQo
b2Zmc2V0KSk7CisgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNl
dChvZmZzZXQpKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAg
ICAgLy8gU2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAg
aWYgKCFzcGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0
aGlzLCBvZmZzZXQpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAg
ICAgICAgc3RydWN0dXJlKCktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAg
ICAgICAgICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMo
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0OwotICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKTsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gdGhpcy0+c3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0g
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMt
PnN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24s
IG9mZnNldCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBC
dXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpOwpAQCAtMTM0OCw3ICsxMzYwLDcg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgdW5zaWdu
ZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlv
bjsKLSAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJl
bnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRT
cGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAg
ICAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVh
ZE9ubHkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzY5LDcgKzEzODEsNyBAQCBp
bmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNw
ZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0s
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwg
cHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkp
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUg
cHV0LCByZXR1cm4uCkBAIC0xMzgxLDcgKzEzOTMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4
dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgdGhpcy0+c3RydWN0
dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0
LCBzbG90LmNvbnRleHQoKSk7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY0Z1bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKICAgICAKICAgICB2YWxpZGF0
ZU9mZnNldChvZmZzZXQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zm
c2V0KSk7CkBAIC0xNDE1LDcgKzE0MjcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3Ry
dWN0dXJlQW5kUmVhCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxv
Y2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeShWTSYgdm0sIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQog
ewogICAgIHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoCi0gICAg
ICAgIHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsK
KyAgICAgICAgdm0sIHN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVj
dHVyZSk7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgCiAgICAg
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CkBAIC03Niw2ICs3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2Jq
ZWN0KiBvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShy
ZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNTUgKzczLDU1IEBAIFN0cmluZyBKU1Byb3h5Ojpj
bGFzc05hbWUoY29uc3QgSlNPYmplY3QKIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdl
dCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmpl
Y3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTUHJv
eHk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAgIHJl
dHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90
KTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTUHJveHk6OnB1dChKU0NlbGwqIGNl
bGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2
YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZSgpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNsb3QpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKIH0KIAogdm9pZCBKU1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJv
b2wgc2hvdWxkVGhyb3cpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1By
b3h5Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1
dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNob3VsZFRocm93KTsKKyAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBz
aG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkq
PihvYmplY3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUo
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNP
YmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRo
cm93KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Byb3h5
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09i
amVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50
YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmpl
Y3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiBib29sIEpTUHJveHk6OmRl
bGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgcHJvcGVydHlOYW1lKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQ
cm94eSo+KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBKU1Byb3h5OjpnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTUHJveHkqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+dGFy
Z2V0KCktPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0
KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgp
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50
YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgSlNQcm94eTo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsK
ICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAg
IHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3Bl
cnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVjU3QKIEpTT2JqZWN0KiBK
U1Njb3BlOjpvYmplY3RBdFNjb3BlKEpTU2NvcGUqIHNjb3BlKQogewogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBzY29wZTsKLSAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gV2l0aFNjb3BlVHlwZSkKKyAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gV2l0aFNj
b3BlVHlwZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1dpdGhTY29wZSo+KG9iamVjdCktPm9i
amVjdCgpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG8pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybyksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBzaXpl
X3Qgb2Zmc2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1f
bGVuZ3RoKTsgfQpAQCAtMTgxLDYgKzE4MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
OwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJ
bW1vcnRhbDsKKwogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICAgICAgICAgIAog
ICAgICAgICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0K
QEAgLTUyNiw3ICs1MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVy
biB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZv
KCk7IH0KKyAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5p
c0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT50eXBlKCkgPT0gU3RyaW5nVHlwZTsgfQogCiAgICAgLy8g
LS0tIEpTVmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDE2
NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTVHlw
ZSB7CitlbnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFVuc3BlY2lmaWVkVHlwZSwKICAgICBV
bmRlZmluZWRUeXBlLAogICAgIEJvb2xlYW5UeXBlLApAQCAtNTUsNiArNTUsMTggQEAgZW51bSBK
U1R5cGUgewogICAgIEVycm9ySW5zdGFuY2VUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBXaXRo
U2NvcGVUeXBlLAorICAgIEFyZ3VtZW50c1R5cGUsCisKKyAgICBJbnQ4QXJyYXlUeXBlLAorICAg
IEludDE2QXJyYXlUeXBlLAorICAgIEludDMyQXJyYXlUeXBlLAorICAgIFVpbnQ4QXJyYXlUeXBl
LAorICAgIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSwKKyAgICBVaW50MTZBcnJheVR5cGUsCisgICAg
VWludDMyQXJyYXlUeXBlLAorICAgIEZsb2F0MzJBcnJheVR5cGUsCisgICAgRmxvYXQ2NEFycmF5
VHlwZSwKKyAgICBEYXRhVmlld1R5cGUsCiAKICAgICBOYW1lU2NvcGVPYmplY3RUeXBlLAogICAg
IC8vIFZhcmlhYmxlT2JqZWN0VHlwZSBtdXN0IGJlIGxlc3MgdGhhbiBNT1NUIG9mIHRoZSB0eXBl
cyBvZiBpdHMgc3ViY2xhc3NlcyBhbmQgb25seSBpdHMgc3ViY2xhc3Nlcy4KQEAgLTY0LDYgKzc2
LDggQEAgZW51bSBKU1R5cGUgewogICAgIEFjdGl2YXRpb25PYmplY3RUeXBlLAogfTsKIAorQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEpTVHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCBzaXplb2ZfanN0
eXBlX2lzX29uZV9ieXRlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTY0
NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwyMSArNDQsMzEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwgNTsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiA9IDEgPDwgNzsKKwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzID0gMSA8PCA4OwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEgPDwg
MTA7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRj
aHBvaW50cyA9IDEgPDwgMTE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUhh
c1JhcmVEYXRhID0gMSA8PCAxMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
SXNJbW1vcnRhbCA9IDEgPDwgMTM7CiAKICAgICBjbGFzcyBUeXBlSW5mbyB7CiAgICAgcHVibGlj
OgorICAgICAgICB0eXBlZGVmIHVpbnQ4X3QgSW5saW5lVHlwZUZsYWdzOworICAgICAgICB0eXBl
ZGVmIHVpbnQ4X3QgT3V0T2ZMaW5lVHlwZUZsYWdzOworCiAgICAgICAgIFR5cGVJbmZvKEpTVHlw
ZSB0eXBlLCB1bnNpZ25lZCBmbGFncyA9IDApCisgICAgICAgICAgICA6IFR5cGVJbmZvKHR5cGUs
IGZsYWdzICYgMHhmZiwgZmxhZ3MgPj4gOCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBUeXBlSW5mbyhKU1R5cGUgdHlwZSwgSW5saW5lVHlwZUZsYWdzIGlubGluZVR5
cGVGbGFncywgT3V0T2ZMaW5lVHlwZUZsYWdzIG91dE9mTGluZVR5cGVGbGFncykKICAgICAgICAg
ICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgJiAweGZmKQot
ICAgICAgICAgICAgLCBtX2ZsYWdzMihmbGFncyA+PiA4KQorICAgICAgICAgICAgLCBtX2ZsYWdz
KGlubGluZVR5cGVGbGFncykKKyAgICAgICAgICAgICwgbV9mbGFnczIob3V0T2ZMaW5lVHlwZUZs
YWdzKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pih0eXBl
KSA8PSAweGZmKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlID49IENvbXBvdW5kVHlwZSB8fCAh
KGZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikpOworICAgICAgICAgICAgQVNTRVJUKG1f
dHlwZSA+PSBDb21wb3VuZFR5cGUgfHwgIShtX2ZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bikpOwogICAgICAgICAgICAgLy8gTm8gb2JqZWN0IHRoYXQgZG9lc24ndCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2Ugc2hvdWxkIG92ZXJyaWRlIGl0IQogICAgICAgICAgICAgQVNTRVJUKChtX2ZsYWdz
ICYgKEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0hhc0luc3RhbmNlKSkgIT0gT3Zl
cnJpZGVzSGFzSW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSBtZWFucyAoSW1wbGVtZW50c0hhc0luc3RhbmNlICYgIU92ZXJyaWRlc0hhc0luc3Rh
bmNlKQpAQCAtNjcsNyArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
ICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5
cGUpOyB9Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPj0g
T2JqZWN0VHlwZTsgfQorICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNP
YmplY3QodHlwZSgpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc09iamVjdChKU1R5cGUgdHlw
ZSkgeyByZXR1cm4gdHlwZSA+PSBPYmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNGaW5hbE9i
amVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7IH0KICAgICAg
ICAgYm9vbCBpc051bWJlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJP
YmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNOYW1lKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IE5hbWVJbnN0YW5jZVR5cGU7IH0KQEAgLTg2LDYgKzk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1
cm4gaXNTZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QpOyB9CiAgICAgICAg
IGJvb2wgbmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKCkgY29uc3QgeyByZXR1cm4g
aXNTZXRPbkZsYWdzMihOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMpOyB9CiAgICAg
ICAgIGJvb2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxh
Z3MyKFN0cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBib29sIHN0cnVjdHVyZUlzSW1t
b3J0YWwoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlzSW1tb3J0YWwp
OyB9CiAKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNldCgpCiAgICAgICAgIHsK
QEAgLTk3LDYgKzEwOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihUeXBlSW5mbywgbV90eXBlKTsKICAgICAgICAgfQogCisgICAgICAgIElu
bGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9
CisgICAgICAgIE91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7
IHJldHVybiBtX2ZsYWdzMjsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9NYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFwRGF0YS5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFdURjo6
VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50MzJfdD4gSW5kZXhUcmFpdHM7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw3ICsyMDYsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0
eSBuYW1lcyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3Bl
cnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1l
bnQoMCkpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGll
cyk7CisgICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkq
IG5hbWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJv
cGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtUHJvcGVydGllczsgaSsrKQpAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5v
dCBhbiBvYmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMp
OwotICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3du
UHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRp
ZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNP
YmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVu
dW1Qcm9wZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShl
eGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzI0LDE0
ICszMjQsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2Ny
aXB0b3IuYXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29y
RGVzY3JpcHRvcigpKSk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAg
Ty0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihl
eGVjLCBwcm9wZXJ0eU5hbWUpLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBPLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVj
LCBwcm9wZXJ0eU5hbWUpLCBkZXNjcmlwdG9yLCB0cnVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKE8pOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9w
ZXJ0aWVzKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9w
ZXJ0aWVzKSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CisgICAgYXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVz
LCBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9
IHByb3BlcnR5TmFtZXMuc2l6ZSgpOwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRl
c2NyaXB0b3JzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zNTQs
NyArMzU0LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdAogICAg
ICAgICB9CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsg
aSsrKSB7Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHko
b2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzW2ldLCBkZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7Cisg
ICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5
KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lc1tpXSwgZGVzY3JpcHRvcnNbaV0sIHRydWUpOwog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNO
dWxsKCk7CiAgICAgfQpAQCAtMzk4LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0
eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwot
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4
ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVj
LCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5h
bWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3Ig
KFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdp
bigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhv
ZCBvZiBPIHdpdGggUC4KQEAgLTQwOCw3ICs0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgIC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVd
XSBpcyB0cnVlLCBzZXQgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBk
ZXNjLnNldENvbmZpZ3VyYWJsZShmYWxzZSk7CiAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVm
aW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0
cnVlIGFzIGFyZ3VtZW50cy4KLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVP
d25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBl
eGVjLCAqaXRlciwgZGVzYywgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CkBAIC00
MjgsMTQgKzQyOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiT2JqZWN0LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0
cy4iKSkpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCi0gICAgaWYg
KGlzSlNGaW5hbE9iamVjdChvYmplY3QpICYmICFoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3Qt
PnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0
KG9iamVjdCkgJiYgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkp
KSB7CiAgICAgICAgIG9iamVjdC0+ZnJlZXplKGV4ZWMtPnZtKCkpOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQg
b3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRp
ZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVz
KG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhv
YmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
IFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgp
OwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0
IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50
ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgLy8gYy4gSWYgZGVzYy5bW0Nv
bmZpZ3VyYWJsZV1dIGlzIHRydWUsIHNldCBkZXNjLltbQ29uZmlndXJhYmxlXV0gdG8gZmFsc2Uu
CiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGZhbHNlKTsKICAgICAgICAgLy8gZC4gQ2Fs
bCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUCwg
ZGVzYywgYW5kIHRydWUgYXMgYXJndW1lbnRzLgotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUpOwor
ICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0
eShvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwog
ICAgIH0KQEAgLTQ4Myw3ICs0ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0CiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQ
IG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRl
ciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3
aXRoIFAuCkBAIC01MTMsNyArNTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdAogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUg
UCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJv
cGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3Bl
cnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVy
dHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3Vs
dCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8g
d2l0aCBQLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyAr
MTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRl
c2NyaXB0b3Iuc2V0R2V0dGVyKGdldCk7CiAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRy
dWUpOwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRl
c2NyaXB0b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CkBAIC0xNDMsNyArMTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKHNldCk7CiAgICAgZGVzY3Jp
cHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxl
KHRydWUpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNP
YmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyh0aGlzVmFsdWUuaXNV
bmRlZmluZWQoKSA/IEFTQ0lJTGl0ZXJhbCgiW29iamVjdCBVbmRlZmluZWRdIikgOiBBU0NJSUxp
dGVyYWwoIltvYmplY3QgTnVsbF0iKSkpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRo
aXNWYWx1ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgIEpTU3RyaW5nKiBy
ZXN1bHQgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm9iamVjdFRvU3RyaW5n
VmFsdWUoKTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
bmV3U3RyaW5nID0gV1RGOjp0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKTsKKyAgICAgICAgUmVmUHRy
PFN0cmluZ0ltcGw+IG5ld1N0cmluZyA9IFdURjo6dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCB0
aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3Qp
LCAiXSIpOwogICAgICAgICBpZiAoIW5ld1N0cmluZykKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKIAogICAgICAgICByZXN1
bHQgPSBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgbmV3U3RyaW5nLnJlbGVhc2UoKSk7Ci0gICAg
ICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMt
PnZtKCksIHRoaXNPYmplY3QsIHJlc3VsdCk7CisgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVy
ZShleGVjLT52bSgpKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLT52bSgpLCB0aGlzT2Jq
ZWN0LCByZXN1bHQpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDExICs2OCwxMSBAQCBKU1ZhbHVlIGpz
VHlwZVN0cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHCiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewog
ICAgICAgICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUg
dHJlYXRlZAogICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAg
ICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
Z2xvYmFsT2JqZWN0KSkKKyAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4g
dm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBp
ZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAh
PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0
Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAg
cmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZygpOwogICAgIH0KICAgICByZXR1
cm4gdm0uc21hbGxTdHJpbmdzLm9iamVjdFN0cmluZygpOwpAQCAtODgsMTUgKzg4LDE1IEBAIGJv
b2wganNJc09iamVjdFR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICBpZiAoIXYuaXNDZWxs
KCkpCiAgICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCi0gICAgSlNUeXBlIHR5cGUgPSB2LmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUg
PSB2LmFzQ2VsbCgpLT50eXBlKCk7CiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKLSAgICAgICAg
aWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxs
RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCisgICAgICAgIGlmIChhc09iamVjdCh2KS0+
c3RydWN0dXJlKGNhbGxGcmFtZS0+dm0oKSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZy
YW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0
YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3Qt
Pm1ldGhvZFRhYmxlKGNhbGxGcmFtZS0+dm0oKSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERh
dGEpICE9IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUganNBZGQoQ2FsbEZyYW1lKiBjCiAKIGlubGluZSBzaXplX3Qgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW5Gb3JDaGFpbkFjY2VzcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBiYXNlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxG
cmFtZS0+dm0oKTsKICAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgIHNpemVf
dCBjb3VudCA9IDA7CiAgICAgICAgIApAQCAtMjMwLDEwICsyMzEsMTAgQEAgaW5saW5lIHNpemVf
dCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvcgogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFj
Y2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAg
ICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAg
IGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKGNl
bGwtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBhc09iamVj
dChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT52bSgpKTsKICAgICAg
ICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQotICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQg
PSBjZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsg
CisgICAgICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChj
YWxsRnJhbWUtPnZtKCksIHByb3BlcnR5TmFtZSk7IAogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgKytjb3VudDsKQEAgLTI0NCwxMiArMjQ1LDEzIEBAIGlubGluZSBzaXplX3Qgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW5Gb3IKIAogaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBiYXNlKQogeworICAgIFZNJiB2
bSA9IGNhbGxGcmFtZS0+dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgx
KSB7CiAgICAgICAgIGlmIChiYXNlLT5pc1Byb3h5KCkpCiAgICAgICAgICAgICByZXR1cm4gSW52
YWxpZFByb3RvdHlwZUNoYWluOwogICAgICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgdiA9IGJh
c2UtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKKyAgICAgICAg
SlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxG
cmFtZSk7CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvdW50
OwogCkBAIC0yNTcsNyArMjU5LDcgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihDYQogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBp
biBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUo
KS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUodm0pLT5pc0Rp
Y3Rpb25hcnkoKSkKICAgICAgICAgICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVuRGljdGlvbmFy
eU9iamVjdChjYWxsRnJhbWUtPnZtKCkpOwogCiAgICAgICAgICsrY291bnQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxl
LmgJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8o
KSk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKQEAgLTIwMiw2ICsyMDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNp
c3RlbmN5KCk7CiAjZW5kaWYKIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0lt
bW9ydGFsOworCiBwcml2YXRlOgogICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkpOwogICAgIFByb3BlcnR5VGFibGUoVk0mLCBKU0NlbGwqLCBjb25zdCBQcm9w
ZXJ0eVRhYmxlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAko
cmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKExlYWZUeXBlLCAwKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExl
YWZUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIERFQ0xBUkVfSU5GTzsKQEAgLTg1LDYgKzg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0
ZXJuU3RyaW5nKTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCShyZXZp
c2lvbiAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJh
eVZhbHVlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDZWxsOjpT
dHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6
U3RydWN0dXJlRmxhZ3M7CiAKIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lv
biAxNjQ2NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMTMgKzE1NywxMyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVt
cFN0YXRpc3RpY3MoKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlw
ZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdU
eXBlLCB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0
dXJlU3RydWN0dXJlLmdldCgpKQorICAgICwgbV9ibG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJs
ZSgpLmFsbG9jYXRlSUQodGhpcyksIGluZGV4aW5nVHlwZSwgdHlwZUluZm8pCisgICAgLCBtX291
dE9mTGluZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKSkKICAgICAsIG1f
Z2xvYmFsT2JqZWN0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QsIFdyaXRlQmFycmllcjxKU0dsb2Jh
bE9iamVjdD46Ok1heUJlTnVsbCkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcm90b3R5
cGUpCiAgICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRj
aHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAg
LCBtX3R5cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9pbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBl
KQogICAgICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fZGljdGlv
bmFyeUtpbmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUoZmFsc2UpCkBAIC0xOTEsOCArMTkxLDYgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZt
KQogICAgICwgbV9jbGFzc0luZm8oaW5mbygpKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2lu
dFNldChJc1dhdGNoZWQpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90
eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAgLCBtX2lu
ZGV4aW5nVHlwZSgwKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9u
YXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJs
ZShmYWxzZSkKQEAgLTIwNSw2ICsyMDMsMTAgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZt
KQogICAgICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJl
aWZpZWQoZmFsc2UpCiB7CisgICAgVHlwZUluZm8gdHlwZUluZm8gPSBUeXBlSW5mbyhDb21wb3Vu
ZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsKTsKKyAg
ICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxs
b2NhdGVJRCh0aGlzKSwgMCwgdHlwZUluZm8pOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0g
dHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CisKICAgICBBU1NFUlQoaGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8ICFtX2NsYXNzSW5mby0+
aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKTsKICAgICBBU1NFUlQoaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHx8ICFtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0dGVy
T3JSZWFkb25seVByb3BlcnRpZXModm0pKTsKIH0KQEAgLTIxNSw4ICsyMTcsNiBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2
aW91cy0+bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0
Y2hlZCkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHBy
ZXZpb3VzLT50eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAm
IH5TdHJ1Y3R1cmVIYXNSYXJlRGF0YSkKLSAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5p
bmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KHBy
ZXZpb3VzLT5tX2lubGluZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91
cy0+bV9kaWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNl
KQpAQCAtMjI5LDYgKzIyOSwxMSBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0
IFN0cnVjCiAgICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1ZSkKICAgICAsIG1fc3RhdGljRnVuY3Rp
b25SZWlmaWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0aW9uUmVpZmllZCkKIHsKKyAgICBUeXBl
SW5mbyB0eXBlSW5mbyA9IFR5cGVJbmZvKHByZXZpb3VzLT50eXBlSW5mbygpLnR5cGUoKSwgcHJl
dmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7CisgICAg
bV9ibG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9j
YXRlSUQodGhpcyksIHByZXZpb3VzLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCksIHR5
cGVJbmZvKTsKKyAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLm91dE9mTGluZVR5
cGVGbGFncygpOworCisgICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJ
c0ltbW9ydGFsKCkpOwogICAgIGlmIChwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVIYXNS
YXJlRGF0YSgpICYmIHByZXZpb3VzLT5yYXJlRGF0YSgpLT5uZWVkc0Nsb25pbmcoKSkKICAgICAg
ICAgY2xvbmVSYXJlRGF0YUZyb20odm0sIHByZXZpb3VzKTsKICAgICBlbHNlIGlmIChwcmV2aW91
cy0+cHJldmlvdXNJRCgpKQpAQCAtMjQxLDYgKzI0NiwxMyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVy
ZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgQVNTRVJUKGhhc0dldHRlclNldHRlclByb3BlcnRp
ZXMoKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVz
KHZtKSk7CiB9CiAKK1N0cnVjdHVyZTo6flN0cnVjdHVyZSgpCit7CisgICAgaWYgKHR5cGVJbmZv
KCkuc3RydWN0dXJlSXNJbW1vcnRhbCgpKQorICAgICAgICByZXR1cm47CisgICAgSGVhcDo6aGVh
cCh0aGlzKS0+c3RydWN0dXJlSURUYWJsZSgpLmRlYWxsb2NhdGVJRCh0aGlzLCBtX2Jsb2Iuc3Ry
dWN0dXJlSUQoKSk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
IHsKICAgICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0
dXJlKCk7CkBAIC02MzgsNyArNjUwLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0
dXJlKTsKICAgICB0cmFuc2l0aW9uLT5zZXRQcmV2aW91c0lEKHZtLCB0cmFuc2l0aW9uLCBzdHJ1
Y3R1cmUpOwogICAgIHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1
dGVzOwotICAgIHRyYW5zaXRpb24tPm1faW5kZXhpbmdUeXBlID0gaW5kZXhpbmdUeXBlOworICAg
IHRyYW5zaXRpb24tPm1fYmxvYi5zZXRJbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKTsKICAgICB0
cmFuc2l0aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUt
PnRha2VQcm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtLCB0cmFuc2l0aW9uKSk7CiAgICAg
dHJhbnNpdGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwogICAgIGNoZWNrT2Zm
c2V0KHRyYW5zaXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsK
QEAgLTc2OSwxNiArNzgxLDIyIEBAIHZvaWQgU3RydWN0dXJlOjphbGxvY2F0ZVJhcmVEYXRhKFZN
JiB2bSkKIHsKICAgICBBU1NFUlQoIXR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSk7
CiAgICAgU3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gU3RydWN0dXJlUmFyZURhdGE6OmNy
ZWF0ZSh2bSwgcHJldmlvdXMoKSk7Ci0gICAgbV90eXBlSW5mbyA9IFR5cGVJbmZvKHR5cGVJbmZv
KCkudHlwZSgpLCB0eXBlSW5mbygpLmZsYWdzKCkgfCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7Cisg
ICAgVHlwZUluZm8gb2xkVHlwZUluZm8gPSB0eXBlSW5mbygpOworICAgIFR5cGVJbmZvIG5ld1R5
cGVJbmZvID0gVHlwZUluZm8ob2xkVHlwZUluZm8udHlwZSgpLCBvbGRUeXBlSW5mby5mbGFncygp
IHwgU3RydWN0dXJlSGFzUmFyZURhdGEpOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gbmV3
VHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAgICAgbV9wcmV2aW91c09yUmFyZURhdGEu
c2V0KHZtLCB0aGlzLCByYXJlRGF0YSk7CisgICAgQVNTRVJUKHR5cGVJbmZvKCkuc3RydWN0dXJl
SGFzUmFyZURhdGEoKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpjbG9uZVJhcmVEYXRhRnJvbShW
TSYgdm0sIGNvbnN0IFN0cnVjdHVyZSogb3RoZXIpCiB7CiAgICAgQVNTRVJUKG90aGVyLT50eXBl
SW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkpOwogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBu
ZXdSYXJlRGF0YSA9IFN0cnVjdHVyZVJhcmVEYXRhOjpjbG9uZSh2bSwgb3RoZXItPnJhcmVEYXRh
KCkpOwotICAgIG1fdHlwZUluZm8gPSBUeXBlSW5mbyh0eXBlSW5mbygpLnR5cGUoKSwgdHlwZUlu
Zm8oKS5mbGFncygpIHwgU3RydWN0dXJlSGFzUmFyZURhdGEpOworICAgIFR5cGVJbmZvIG9sZFR5
cGVJbmZvID0gdHlwZUluZm8oKTsKKyAgICBUeXBlSW5mbyBuZXdUeXBlSW5mbyA9IFR5cGVJbmZv
KG9sZFR5cGVJbmZvLnR5cGUoKSwgb2xkVHlwZUluZm8uZmxhZ3MoKSB8IFN0cnVjdHVyZUhhc1Jh
cmVEYXRhKTsKKyAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IG5ld1R5cGVJbmZvLm91dE9mTGlu
ZVR5cGVGbGFncygpOwogICAgIG1fcHJldmlvdXNPclJhcmVEYXRhLnNldCh2bSwgdGhpcywgbmV3
UmFyZURhdGEpOworICAgIEFTU0VSVCh0eXBlSW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkp
OwogfQogCiAjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwpAQCAtMTAxOSw3ICsxMDM3LDcgQEAg
Ym9vbCBTdHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZQogICAgICAgICBpZiAocHJv
dG90eXBlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAg
ICAgICAgY3VycmVudCA9IHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAg
IGN1cnJlbnQgPSBwcm90b3R5cGUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAog
ICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU9m
ZnNldC5oIgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3Qu
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJREJsb2IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJl
RGF0YS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgogI2luY2x1ZGUg
IkpTVHlwZUluZm8uaCIKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9u
QXJyYXksIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7
CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBA
IC05Niw2ICs5OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwdWJsaWM6CisgICAgU3RydWN0
dXJlSUQgaWQoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQorICAgIGlu
dDMyX3Qgb2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJs
b2JFeGNsdWRpbmdTdHJ1Y3R1cmVJRCgpOyB9CisgICAgaW50NjRfdCBpZEJsb2IoKSBjb25zdCB7
IHJldHVybiBtX2Jsb2IuYmxvYigpOyB9CisKICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGlj
cygpOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVy
dHlUcmFuc2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVy
dHlTbG90OjpDb250ZXh0ID0gUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCk7CkBAIC0x
NDQsMTEgKzE1MSwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVHlwZSBhY2Nlc3NvcnMu
Ci0gICAgY29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJl
KCktPmNsYXNzSW5mbygpID09IGluZm8oKSk7IHJldHVybiBtX3R5cGVJbmZvOyB9CisgICAgVHlw
ZUluZm8gdHlwZUluZm8oKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkg
PT0gaW5mbygpKTsgcmV0dXJuIG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFncyk7
IH0KICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm8oKS5pc09iamVj
dCgpOyB9CiAKLSAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleGluZ1R5cGUgJiBBbGxBcnJheVR5cGVzOyB9Ci0gICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4aW5nVHlwZTsg
fQorICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Iu
aW5kZXhpbmdUeXBlKCkgJiBBbGxBcnJheVR5cGVzOyB9CisgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Jsb2IuaW5kZXhpbmdU
eXBlKCk7IH0KICAgICAgICAgCiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMo
KSBjb25zdAogICAgIHsKQEAgLTMxMCw2ICszMTcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxv
Yjo6c3RydWN0dXJlSURPZmZzZXQoKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IHBy
b3RvdHlwZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0
cnVjdHVyZSwgbV9wcm90b3R5cGUpOwpAQCAtMzIwLDE2ICszMzIsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2dsb2JhbE9iamVjdCk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSAr
IFR5cGVJbmZvOjpmbGFnc09mZnNldCgpOwotICAgIH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3Qg
dHlwZUluZm9UeXBlT2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSArIFR5cGVJbmZvOjp0eXBlT2Zmc2V0KCk7Ci0gICAg
fQotICAgICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9jbGFzc0luZm8p
OwpAQCAtMzM3LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihTdHJ1Y3R1cmUsIG1faW5kZXhpbmdUeXBlKTsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fYmxvYikgKyBTdHJ1Y3R1cmVJREJsb2I6OmluZGV4aW5n
VHlwZU9mZnNldCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYpOwpAQCAtNDc4LDcgKzQ4MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCBpbnQgc19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZhbFB1dEJ5SWQgPSA1MTI7CiAKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0g
MzsKLSAgICAgICAgCisgICAgCisgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBwcm9wZXJseSBhbGln
bmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlICdTdHJ1Y3R1cmUnCisgICAgLy8gcGFydCBvZiB0
aGUgb2JqZWN0LgorICAgIFN0cnVjdHVyZUlEQmxvYiBtX2Jsb2I7CisgICAgVHlwZUluZm86Ok91
dE9mTGluZVR5cGVGbGFncyBtX291dE9mTGluZVR5cGVGbGFnczsKKwogICAgIFdyaXRlQmFycmll
cjxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+IG1fcHJvdG90eXBlOwogICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWlu
PiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwpAQCAtNTAyLDggKzUwOSw2IEBAIHByaXZhdGU6CiAg
ICAgLy8gbV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCiAgICAg
UHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAKLSAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwotICAg
IEluZGV4aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgICB1aW50OF90IG1faW5saW5lQ2FwYWNp
dHk7CiAgICAgCiAgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxNjQ2
NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsg
fQogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
Q29tcG91bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsgfQorICAgICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNjQsNiArNjcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAog
ICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAg
ICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkKICAgICAg
ICAgewogICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJ1
Y3R1cmVJREJsb2JfaAorI2RlZmluZSBTdHJ1Y3R1cmVJREJsb2JfaAorCisjaW5jbHVkZSAiSW5k
ZXhpbmdUeXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlEVGFibGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZUlEQmxvYiB7
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBT
dHJ1Y3R1cmVJREJsb2IoKQorICAgIHsKKyAgICAgICAgdS5kb3VibGVXb3JkID0gMHhiYmFkYmVl
ZjsKKyAgICB9CisKKyAgICBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQs
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKKyAg
ICB7CisgICAgICAgIHUuZmllbGRzLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7CisgICAgICAg
IHUuZmllbGRzLmluZGV4aW5nVHlwZSA9IGluZGV4aW5nVHlwZTsKKyAgICAgICAgdS5maWVsZHMu
dHlwZSA9IHR5cGVJbmZvLnR5cGUoKTsKKyAgICAgICAgdS5maWVsZHMuaW5saW5lVHlwZUZsYWdz
ID0gdHlwZUluZm8uaW5saW5lVHlwZUZsYWdzKCk7CisgICAgICAgIHUuZmllbGRzLmRlZmF1bHRH
Q0RhdGEgPSAwOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZUlE
QmxvYiYgb3RoZXIpIHsgdS5kb3VibGVXb3JkID0gb3RoZXIudS5kb3VibGVXb3JkOyB9CisgICAg
CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5z
dHJ1Y3R1cmVJRDsgfQorICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdCB7IHJl
dHVybiB1LmZpZWxkcy5pbmRleGluZ1R5cGU7IH0KKyAgICB2b2lkIHNldEluZGV4aW5nVHlwZShJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKSB7IHUuZmllbGRzLmluZGV4aW5nVHlwZSA9IGluZGV4
aW5nVHlwZTsgfQorICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gdS5maWVsZHMudHlw
ZTsgfQorICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkgY29u
c3QgeyByZXR1cm4gdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzOyB9CisgICAgCisgICAgVHlwZUlu
Zm8gdHlwZUluZm8oVHlwZUluZm86Ok91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxh
Z3MpIGNvbnN0IHsgcmV0dXJuIFR5cGVJbmZvKHR5cGUoKSwgaW5saW5lVHlwZUZsYWdzKCksIG91
dE9mTGluZVR5cGVGbGFncyk7IH0KKyAgICAKKyAgICBpbnQzMl90IGJsb2JFeGNsdWRpbmdTdHJ1
Y3R1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIHUud29yZHMud29yZDI7IH0KKyAgICBpbnQ2NF90IGJs
b2IoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVdvcmQ7IH0KKyAgICAKKyAgICBzdGF0aWMgcHRy
ZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoU3RydWN0dXJlSURCbG9iLCB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCk7CisgICAgfQor
CisgICAgc3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVJREJsb2IsIHUuZmllbGRzLmluZGV4
aW5nVHlwZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOworICAgICAgICAgICAgSW5k
ZXhpbmdUeXBlIGluZGV4aW5nVHlwZTsKKyAgICAgICAgICAgIEpTVHlwZSB0eXBlOworICAgICAg
ICAgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3M7CisgICAgICAg
ICAgICB1aW50OF90IGRlZmF1bHRHQ0RhdGE7CisgICAgICAgIH0gZmllbGRzOworICAgICAgICBz
dHJ1Y3QgeworICAgICAgICAgICAgaW50MzJfdCB3b3JkMTsKKyAgICAgICAgICAgIGludDMyX3Qg
d29yZDI7CisgICAgICAgIH0gd29yZHM7CisgICAgICAgIGludDY0X3QgZG91YmxlV29yZDsKKyAg
ICB9IHU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN0cnVjdHVyZUlE
QmxvYl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJRFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlEVGFibGUuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNz
Lmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1N0cnVj
dHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFibGUoKQorICAgIDogbV9maXJzdEZyZWVPZmZzZXQo
MCkKKyAgICAsIG1fdGFibGUobmV3IFN0cnVjdHVyZU9yT2Zmc2V0W3NfaW5pdGlhbFNpemVdKQor
ICAgICwgbV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNpemUpCit7CisgICAg
Ly8gV2UgcHJlLWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0aGUgbnVsbCBTdHJ1
Y3R1cmUKKyAgICAvLyBjYW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFN0cnVjdHVyZUlE
ICcwJy4KKyAgICBhbGxvY2F0ZUlEKDApOworfQorCitTdHJ1Y3R1cmVJRFRhYmxlOjp+U3RydWN0
dXJlSURUYWJsZSgpCit7CisgICAgZGVsZXRlIFtdIG1fdGFibGU7Cit9CisKK3ZvaWQgU3RydWN0
dXJlSURUYWJsZTo6cmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSkKK3sKKyAgICAvLyBDcmVhdGUg
dGhlIG5ldyB0YWJsZS4KKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogbmV3VGFibGUgPSBuZXcgU3Ry
dWN0dXJlT3JPZmZzZXRbbmV3Q2FwYWNpdHldOworCisgICAgLy8gQ29weSB0aGUgY29udGVudHMg
b2YgdGhlIG9sZCB0YWJsZSB0byB0aGUgbmV3IHRhYmxlLgorICAgIG1lbWNweShuZXdUYWJsZSwg
bV90YWJsZSwgbV9jYXBhY2l0eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNldCkpOworCisgICAg
Ly8gU3RvcmUgZmVuY2UgdG8gbWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVyeXRoaW5nIGJlZm9y
ZSBkb2luZyB0aGUgc3dhcC4KKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgLy8g
U3dhcCB0aGUgb2xkIGFuZCBuZXcgdGFibGVzLgorICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBvbGRU
YWJsZSA9IG1fdGFibGU7CisgICAgbV90YWJsZSA9IG5ld1RhYmxlOworCisgICAgLy8gUHV0IHRo
ZSBvbGQgdGFibGUgKG5vdyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBvbGQgdGFi
bGVzLgorICAgIG1fb2xkVGFibGVzLmFwcGVuZChvbGRUYWJsZSk7CisKKyAgICAvLyBVcGRhdGUg
dGhlIGNhcGFjaXR5LgorICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKK30KKwordm9pZCBT
dHJ1Y3R1cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcygpCit7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fb2xkVGFibGVzLnNpemUoKTsgKytpKQorICAgICAgICBkZWxldGUgW10gbV9v
bGRUYWJsZXNbaV07CisgICAgbV9vbGRUYWJsZXMuY2xlYXIoKTsKK30KKworU3RydWN0dXJlSUQg
U3RydWN0dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmICghbV9maXJzdEZyZWVPZmZzZXQpIHsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9jYXBhY2l0eSA8PSBVSU5UX01BWCk7CisgICAgICAgIGlmIChtX3Np
emUgPT0gbV9jYXBhY2l0eSkKKyAgICAgICAgICAgIHJlc2l6ZShtX2NhcGFjaXR5ICogMik7Cisg
ICAgICAgIEFTU0VSVChtX3NpemUgPCBtX2NhcGFjaXR5KTsKKworICAgICAgICBTdHJ1Y3R1cmVP
ck9mZnNldCBuZXdFbnRyeTsKKyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3RydWN0dXJl
OworCisgICAgICAgIGlmIChtX3NpemUgPT0gc191bnVzZWRJRCkgeworICAgICAgICAgICAgbV9z
aXplKys7CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVJRChzdHJ1Y3R1cmUpOworICAgICAg
ICB9CisKKyAgICAgICAgU3RydWN0dXJlSUQgcmVzdWx0ID0gbV9zaXplOworICAgICAgICBtX3Rh
YmxlW3Jlc3VsdF0gPSBuZXdFbnRyeTsKKyAgICAgICAgbV9zaXplKys7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgQVNTRVJUKG1fZmlyc3RGcmVlT2Zmc2V0ICE9IHNfdW51
c2VkSUQpOworCisgICAgU3RydWN0dXJlSUQgcmVzdWx0ID0gbV9maXJzdEZyZWVPZmZzZXQ7Cisg
ICAgbV9maXJzdEZyZWVPZmZzZXQgPSBtX3RhYmxlW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7
CisgICAgbV90YWJsZVtyZXN1bHRdLnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICByZXR1cm4g
cmVzdWx0OworI2Vsc2UKKyAgICByZXR1cm4gc3RydWN0dXJlOworI2VuZGlmCit9CisKK3ZvaWQg
U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1
Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFTU0VSVChz
dHJ1Y3R1cmVJRCAhPSBzX3VudXNlZElEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3RhYmxlW3N0
cnVjdHVyZUlEXS5zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxlW3N0cnVjdHVy
ZUlEXS5vZmZzZXQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9
IHN0cnVjdHVyZUlEOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RydWN0dXJlSUQpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTdHJ1Y3R1cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0dXJlSURUYWJs
ZV9oCisKKyNpbmNsdWRlICJVbnVzZWRQb2ludGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOworCisjaWYgVVNFKEpTVkFM
VUU2NCkKK3R5cGVkZWYgdWludDMyX3QgU3RydWN0dXJlSUQ7CisjZWxzZQordHlwZWRlZiBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZUlEOworI2VuZGlmCisKK2NsYXNzIFN0cnVjdHVyZUlEVGFibGUgewor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgU3Ry
dWN0dXJlSURUYWJsZSgpOworICAgIH5TdHJ1Y3R1cmVJRFRhYmxlKCk7CisKKyAgICB2b2lkKiog
YmFzZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KKwor
ICAgIFN0cnVjdHVyZSogZ2V0KFN0cnVjdHVyZUlEKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVJRChT
dHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1
Y3R1cmUqKTsKKworICAgIHZvaWQgZmx1c2hPbGRUYWJsZXMoKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIHJlc2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpOworICAgIAorICAgIHVuaW9uIFN0cnVjdHVy
ZU9yT2Zmc2V0IHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVj
dHVyZUlEIG9mZnNldDsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRp
YWxTaXplID0gMjU2OworCisgICAgVmVjdG9yPFN0cnVjdHVyZU9yT2Zmc2V0Kj4gbV9vbGRUYWJs
ZXM7CisKKyAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBTdHJ1Y3R1cmVPck9m
ZnNldCogbV90YWJsZTsKKworICAgIHNpemVfdCBtX3NpemU7CisgICAgc2l6ZV90IG1fY2FwYWNp
dHk7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHN0YXRpYyBjb25zdCBTdHJ1Y3R1cmVJRCBz
X3VudXNlZElEID0gdW51c2VkUG9pbnRlcjsKKyNlbmRpZgorfTsKKworaW5saW5lIFN0cnVjdHVy
ZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lm
IFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVy
ZTsKKyNlbHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZUlEOworI2VuZGlmCit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3RydWN0dXJlSURUYWJsZV9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE2NDY1NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3Niw2ICs0NzYsOSBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2
YXRlOgogICAgIGNsYXNzIFdhdGNocG9pbnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5jcHAJKHJldmlzaW9uIDE2NDY1NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsMzQgKzMyLDM3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pTVHlwZSB0eXBlRm9y
VHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWRU
eXBlOwogICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKU0ludDhBcnJheTo6aW5m
bygpOworICAgICAgICByZXR1cm4gSW50OEFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50ODoK
LSAgICAgICAgcmV0dXJuIEpTVWludDhBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWlu
dDhBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgotICAgICAgICByZXR1cm4g
SlNVaW50OENsYW1wZWRBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWludDhDbGFtcGVk
QXJyYXlUeXBlOwogICAgIGNhc2UgVHlwZUludDE2OgotICAgICAgICByZXR1cm4gSlNJbnQxNkFy
cmF5OjppbmZvKCk7CisgICAgICAgIHJldHVybiBJbnQxNkFycmF5VHlwZTsKICAgICBjYXNlIFR5
cGVVaW50MTY6Ci0gICAgICAgIHJldHVybiBKU1VpbnQxNkFycmF5OjppbmZvKCk7CisgICAgICAg
IHJldHVybiBVaW50MTZBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJl
dHVybiBKU0ludDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIEludDMyQXJyYXlUeXBl
OwogICAgIGNhc2UgVHlwZVVpbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTVWludDMyQXJyYXk6Omlu
Zm8oKTsKKyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVGbG9h
dDMyOgotICAgICAgICByZXR1cm4gSlNGbG9hdDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0
dXJuIEZsb2F0MzJBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlRmxvYXQ2NDoKLSAgICAgICAgcmV0
dXJuIEpTRmxvYXQ2NEFycmF5OjppbmZvKCk7CisgICAgICAgIHJldHVybiBGbG9hdDY0QXJyYXlU
eXBlOwogICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICByZXR1cm4gSlNEYXRhVmlldzo6
aW5mbygpOworICAgICAgICByZXR1cm4gRGF0YVZpZXdUeXBlOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFVuc3Bl
Y2lmaWVkVHlwZTsKICAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKIH0KIAogY29uc3QgQ2xhc3NJbmZvKiBjb25zdHJ1Y3RvckNsYXNzSW5mb0Zv
clR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVkQXJyYXlUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBUeXBlZEFycmF5VHlwZV9oCiAjZGVmaW5lIFR5cGVk
QXJyYXlUeXBlX2gKIAorI2luY2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMCw4ICsxMDEsOCBAQCBpbmxpbmUgc2l6
ZV90IGVsZW1lbnRTaXplKFR5cGVkQXJyYXlUeXBlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oMSkgPDwgbG9nRWxlbWVudFNpemUodHlwZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7CiBjb25zdCBDbGFzc0luZm8qIGNvbnN0
cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7CitKU1R5cGUgdHlwZUZvclR5
cGVkQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAogaW5saW5lIGJvb2wgaXNJbnQoVHlwZWRB
cnJheVR5cGUgdHlwZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha01hcERhdGEuaAkocmV2aXNpb24gMTY0NjU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2Vha01hcERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIAogcHJpdmF0ZToKICAgICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225275</attachid>
            <date>2014-02-26 12:06:33 -0800</date>
            <delta_ts>2014-02-26 13:26:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20140226120630.patch</filename>
            <type>text/plain</type>
            <size>466438</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2MCBA
QAorMjAxNC0wMi0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBKU0NlbGxzIHN1Y2ggdGhhdCB0aGV5IG5vIGxvbmdlciBoYXZlIGEgZnVsbCA2NC1i
aXQgU3RydWN0dXJlCisgICAgICAgIHBvaW50ZXIgaW4gdGhlaXIgaGVhZGVyLiBJbnN0ZWFkIHRo
ZXkgbm93IGhhdmUgYSAzMi1iaXQgaW5kZXggaW50bworICAgICAgICBhIHBlci1WTSB0YWJsZSBv
ZiBTdHJ1Y3R1cmUgcG9pbnRlcnMuIDMyLWJpdCBwbGF0Zm9ybXMgc3RpbGwgdXNlIG5vcm1hbCBT
dHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZnJlZXMg
dXAgYW4gYWRkaXRpb25hbCAzMiBiaXRzIG9mIGluZm9ybWF0aW9uIGluIG91ciBvYmplY3QgaGVh
ZGVycy4KKyAgICAgICAgV2UgdGhlbiB1c2UgdGhpcyBleHRyYSBzcGFjZSB0byBzdG9yZSB0aGUg
aW5kZXhpbmcgdHlwZSBvZiB0aGUgb2JqZWN0LCB0aGUgSlNUeXBlCisgICAgICAgIG9mIHRoZSBv
YmplY3QsIHNvbWUgdmFyaW91cyB0eXBlIGZsYWdzLCBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRh
dGEgKGUuZy4gbWFyayBiaXQpLgorICAgICAgICBCZWNhdXNlIHRoaXMgaW5saW5lIHR5cGUgaW5m
b3JtYXRpb24gaXMgbm93IGZhc3RlciB0byByZWFkLCBpdCBwYXlzIGZvciB0aGUgc2xvd2Rvd24g
CisgICAgICAgIGluY3VycmVkIGJ5IGhhdmluZyB0byBwZXJmb3JtIGFuIGV4dHJhIGluZGlyZWN0
aW9uIHRocm91Z2ggdGhlIFN0cnVjdHVyZUlEVGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHRocmVhZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgVk0gdGhyb3VnaCBtb3JlIG9m
IHRoZSBDKysgcnVudGltZQorICAgICAgICB0byBvZmZzZXQgdGhlIGNvc3Qgb2YgaGF2aW5nIHRv
IGxvb2sgdXAgdGhlIFZNIHRvIGdldCB0aGUgYWN0dWFsIFN0cnVjdHVyZSBwb2ludGVyLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldEV4Y2Vw
dGlvbjpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHdyYXBwZXJGb3JPYmpDT2JqZWN0Ol0pOgor
ICAgICAgICAoLVtKU0NvbnRleHQgd3JhcHBlckZvckpTT2JqZWN0Ol0pOgorICAgICAgICAqIEFQ
SS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZWxlYXNlKToKKyAg
ICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChj
b250YWluZXJWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5j
aDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hTdHJ1Y3R1cmVQdHIpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9TdHJpbmdPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0NlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25Q
ZWVwaG9sZUNvbXBhcmVOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RU
b09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3Qu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVUcnV0aHlPYmplY3QpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjppc0FycmF5VHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omhhc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzVHlw
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9iamVjdCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRNYXJrQnl0ZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU4KToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVCYXJyaWVy
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0dXJl
SURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6aW50ZXJuYWxBcHBlbmQpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRf
b2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNo
ZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YnJhbmNoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6YnJhbmNo
U3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
c3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
bmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
cV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdH
ZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja01hcmtXb3JkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nl
c3MpOgorICAgICAgICAoSlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OndyaXRlQmFycmllcik6
CisgICAgICAgIChKU0M6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkUHV0QnlJZExpc3QpOgor
ICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNh
bGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1
dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChK
U0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3Mp
OgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0
dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aXNGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6
CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKToKKyAgICAgICAg
KiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
VGhpcyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmNsZWFyU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptYXJr
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnY0RhdGFPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGUpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjppc1Byb3h5KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OndyaXRlQmFycmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGFibGVPYmplY3RTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dmlzaXRCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5k
ZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVhZHlFeGlzdHMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpZGVkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxDb250aWd1
b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29u
dGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdl
U2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNB
bmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNl
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcmlt
aXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2VhbCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291
bnRFbGVtZW50cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0
aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnB1dERlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldElu
ZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldERpcmVjdEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3pl
bik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5
U3RvcmFnZU9yTnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmN1cnJlbnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0ds
b2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmFzdEdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0
U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6
CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9y
dGFsKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Onplcm9lZEdDRGF0YU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmlu
Z0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpub3JtYWxpemVQcm90b3R5cGVDaGFp
bkZvckNoYWluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjppZEJsb2IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om9iamVjdEluaXRp
YWxpemF0aW9uRmllbGRzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6On5T
dHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRUYWJsZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmJh
c2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZUZvclR5cGVkQXJyYXlUeXBlKToKKyAgICAgICAgKiBydW50
aW1lL1R5cGVkQXJyYXlUeXBlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgor
CiAyMDE0LTAyLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBB
U1NFUlRJT04gRkFJTEVEOiBtX2hlYXAtPnZtKCktPmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElM
b2NrKCkgaW4gaW5zcGVjdG9yLXByb3RvY29sLyouCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw2ICs0NzIsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5j
cHAKICAgICBydW50aW1lL1N0cnVjdHVyZS5jcHAKICAgICBydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmNwcAorICAgIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAKICAgICBydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwCiAgICAgcnVudGlt
ZS9UZXN0UnVubmVyVXRpbHMuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMjgsNiArMTIyOCw5IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmggXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0JKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNiAr
MTAzLDcgQEAgLSAoSlNWYWx1ZSAqKWV2YWx1YXRlU2NyaXB0OihOU1N0cmluZyAqKQogCiAtICh2
b2lkKXNldEV4Y2VwdGlvbjooSlNWYWx1ZSAqKXZhbHVlCiB7CisgICAgSlNDOjpBUElFbnRyeVNo
aW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAgaWYgKHZhbHVlKQogICAgICAgICBt
X2V4Y2VwdGlvbi5zZXQodG9KUyhtX2NvbnRleHQpLT52bSgpLCB0b0pTKEpTVmFsdWVUb09iamVj
dChtX2NvbnRleHQsIHZhbHVlSW50ZXJuYWxWYWx1ZSh2YWx1ZSksIDApKSk7CiAgICAgZWxzZQpA
QCAtMjcwLDE0ICsyNzEsMTMgQEAgLSAodm9pZCllbmRDYWxsYmFja1dpdGhEYXRhOihDYWxsYmFj
a0RhdAogCiAtIChKU1ZhbHVlICopd3JhcHBlckZvck9iakNPYmplY3Q6KGlkKW9iamVjdAogewot
ICAgIC8vIExvY2sgYWNjZXNzIHRvIG1fd3JhcHBlck1hcAotICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2sodG9KUyhtX2NvbnRleHQpKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
dG9KUyhtX2NvbnRleHQpKTsKICAgICByZXR1cm4gW21fd3JhcHBlck1hcCBqc1dyYXBwZXJGb3JP
YmplY3Q6b2JqZWN0XTsKIH0KIAogLSAoSlNWYWx1ZSAqKXdyYXBwZXJGb3JKU09iamVjdDooSlNW
YWx1ZVJlZil2YWx1ZQogewotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodG9KUyhtX2NvbnRl
eHQpKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhtX2NvbnRleHQpKTsK
ICAgICByZXR1cm4gW21fd3JhcHBlck1hcCBvYmpjV3JhcHBlckZvckpTVmFsdWVSZWY6dmFsdWVd
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3Bw
CShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE2ICs2NywxMCBAQCBKU0NvbnRleHRHcm91
cFJlZiBKU0NvbnRleHRHcm91cFJldGFpbihKCiAKIHZvaWQgSlNDb250ZXh0R3JvdXBSZWxlYXNl
KEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwKQogewotICAgIElkZW50aWZpZXJUYWJsZSogc2F2ZWRJ
ZGVudGlmaWVyVGFibGU7CiAgICAgVk0mIHZtID0gKnRvSlMoZ3JvdXApOwogCi0gICAgewotICAg
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgICAgIHNhdmVkSWRlbnRpZmllclRhYmxl
ID0gd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUodm0uaWRlbnRpZmll
clRhYmxlKTsKLSAgICAgICAgdm0uZGVyZWYoKTsKLSAgICB9Ci0KLSAgICB3dGZUaHJlYWREYXRh
KCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShzYXZlZElkZW50aWZpZXJUYWJsZSk7CisgICAg
QVBJRW50cnlTaGltIGVudHJ5U2hpbSgmdm0pOworICAgIHZtLmRlcmVmKCk7CiB9CiAKIHN0YXRp
YyBib29sIGludGVybmFsU2NyaXB0VGltZW91dENhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgdm9p
ZCogY2FsbGJhY2tQdHIsIHZvaWQqIGNhbGxiYWNrRGF0YSkKQEAgLTE2NCw3ICsxNTgsNyBAQCB2
b2lkIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAgICAgSWRlbnRpZmllclRh
YmxlKiBzYXZlZElkZW50aWZpZXJUYWJsZTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CiAgICAgewotICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICAgICAgQVBJ
RW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKIAogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgICAgICBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJy
ZW50SWRlbnRpZmllclRhYmxlKHZtLmlkZW50aWZpZXJUYWJsZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwNywxMCArNTA3LDExIEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlND
b24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29u
dGV4dFJlZiwgSlNPYmplY3RSZWYgb2JqZWN0KQorYm9vbCBKU09iamVjdElzRnVuY3Rpb24oSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIGlmICghb2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKGN0
eCkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIEpTQ2VsbCogY2VsbCA9IHRvSlMob2Jq
ZWN0KTsKICAgICByZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2VsbCwg
Y2FsbERhdGEpICE9IENhbGxUeXBlTm9uZTsKQEAgLTYwNiwxMiArNjA3LDEyIEBAIEpTUHJvcGVy
dHlOYW1lQXJyYXlSZWYgSlNPYmplY3RDb3B5UHJvcGUKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBKU09iamVjdCoganNPYmplY3Qg
PSB0b0pTKG9iamVjdCk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIEFQ
SUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CiAKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsK
IAorICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKICAgICBKU1Byb3BlcnR5
TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZXMgPSBuZXcgT3BhcXVlSlNQcm9wZXJ0eU5hbWVBcnJh
eSh2bSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgYXJyYXkodm0pOwogICAgIGpzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKGpzT2JqZWN0LCBleGVjLCBhcnJheSwgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5OCw2ICs2OTgsOCBAQCBzdGF0aWMgaWQgY29u
dGFpbmVyVmFsdWVUb09iamVjdChKU0dsb2JhCiAgICAgICAgICAgICBBU1NFUlQoW2N1cnJlbnQu
b2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFibGVEaWN0aW9uYXJ5IGNsYXNzXV0pOwogICAgICAg
ICAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IChOU011dGFibGVEaWN0aW9u
YXJ5ICopY3VycmVudC5vYmpjOwogCisgICAgICAgICAgICBKU0M6OkFQSUVudHJ5U2hpbSBlbnRy
eVNoaW0odG9KUyhjb250ZXh0KSk7CisKICAgICAgICAgICAgIEpTUHJvcGVydHlOYW1lQXJyYXlS
ZWYgcHJvcGVydHlOYW1lQXJyYXkgPSBKU09iamVjdENvcHlQcm9wZXJ0eU5hbWVzKGNvbnRleHQs
IGpzKTsKICAgICAgICAgICAgIHNpemVfdCBsZW5ndGggPSBKU1Byb3BlcnR5TmFtZUFycmF5R2V0
Q291bnQocHJvcGVydHlOYW1lQXJyYXkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTV3JhcHBlck1hcC5tbQkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyNSw2ICs2MjUs
NyBAQCBpZCB0cnlVbndyYXBPYmpjT2JqZWN0KEpTR2xvYmFsQ29udGV4dFJlCiAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSAwOwogICAgIEpTT2JqZWN0UmVmIG9iamVjdCA9IEpTVmFsdWVUb09i
amVjdChjb250ZXh0LCB2YWx1ZSwgJmV4Y2VwdGlvbik7CiAgICAgQVNTRVJUKCFleGNlcHRpb24p
OworICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKGNvbnRleHQpKTsKICAgICBp
ZiAodG9KUyhvYmplY3QpLT5pbmhlcml0cyhKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8SlNDOjpKU0FQ
SVdyYXBwZXJPYmplY3Q+OjppbmZvKCkpKQogICAgICAgICByZXR1cm4gKGlkKUpTQzo6anNDYXN0
PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKS0+d3JhcHBlZE9iamVjdCgp
OwogICAgIGlmIChpZCB0YXJnZXQgPSB0cnlVbndyYXBDb25zdHJ1Y3RvcihvYmplY3QpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjQ3MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTgsNiArNzE4LDcgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZS5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURUYWJsZS5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVJhcmVE
YXRhLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFi
bGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxUZXN0UnVubmVy
VXRpbHMuY3BwIiAvPgpAQCAtMTQwNiw2ICsxNDA3LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlQ2hhaW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURCbG9iLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGEuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oIiAvPgpAQCAtMTQ2OCw0ICsxNDcxLDQgQEAKICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRl
bnNpb25UYXJnZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcQnVp
bGRDdXN0b21pemF0aW9uc1xtYXNtLnRhcmdldHMiIC8+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNp
b24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC03OTUs
NiArNzk1LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJl
Q2hhaW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJRFRhYmxl
LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3ltYm9sVGFibGUuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtMjQyOSw5
ICsyNDMyLDE4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVy
ZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgor
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJREJsb2JoIj4KKyAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVJREJsb2IuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcU3RydWN0dXJlSURUYWJsZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTMzNDAsNCArMzM1Miw0IEBACiAgIDxJdGVtR3Jv
dXA+CiAgICAgPE1BU00gSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXExvd0xldmVs
SW50ZXJwcmV0ZXJXaW4uYXNtIiAvPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc3MywxMiArNzczLDE1IEBACiAJCTJBNjgyOTVCMTg3NUY4MDUwMEI2QzNFMiAvKiBDb3B5V3Jp
dGVCYXJyaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBNkY0NjI2MTdFOTU5
Q0UwMEM0NUM5OCAvKiBIZWFwT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJBN0E1OEVGMTgwOEE0QzQwMDIwQkRGNyAvKiBEZWZlckdDLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAv
KiBEZWZlckdDLmNwcCAqLzsgfTsKKwkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVj
dHVyZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBQUQ5NjRBMTg1Njk0
MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAv
KiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkFDOTIyQkIxOEExNjE4MjAw
M0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUM5MjJCOTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRM
RFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcCAqLzsgfTsKIAkJMkFDOTIyQkMxOEExNjE4MjAwM0NFMEZC
IC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkFDOTIyQkExOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVi
dWdMaW5lSW5mby5oICovOyB9OwogCQkyQUNDRjNERTE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3Rv
cmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJBQ0NGM0RDMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9yZUJhcnJp
ZXJFbGlzaW9uUGhhc2UuY3BwICovOyB9OwogCQkyQUNDRjNERjE4NUZFMjZCMDA4M0UyQUQgLyog
REZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyQUNDRjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVC
YXJyaWVyRWxpc2lvblBoYXNlLmggKi87IH07CiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAv
KiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2Nv
cGUuaCAqLzsgfTsKKwkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFG
NzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuY3BwICovOyB9OworCQky
QUY3MzgyRDE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFGNzM4MkIxOEJCQkY5MjAwOEE1
QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzNzFEODQyRDE3Qzk4QjZFMDBFQ0Y5OTQgLyogbGliei5keWxp
YiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3MUQ4
NDJDMTdDOThCNkUwMEVDRjk5NCAvKiBsaWJ6LmR5bGliICovOyB9OwogCQk0MTM1OUNGMzBGREQ4
OUFEMDAyMDYxODAgLyogRGF0ZUNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQyMTIwMjI5MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29u
dmVyc2lvbi5oICovOyB9OwogCQk0NDQzQUUzMzE2RTE4OEQ5MDA3NkYxMTAgLyogRm91bmRhdGlv
bi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUYwRUI2MTA1Qzg2QzZCMDBFNkRGMUIgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87
IH07CkBAIC0yMjE0LDEyICsyMjE3LDE1IEBACiAJCTJBNjgyOTVBMTg3NUY4MDUwMEI2QzNFMiAv
KiBDb3B5V3JpdGVCYXJyaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cHlXcml0ZUJhcnJpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE2RjQ2MjUx
N0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcE9wZXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlckdDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJ1Y3R1cmVJREJsb2IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFBRDk2NDkxODU2OTQxNzAwMUY5M0JFIC8qIFJlY3Vy
c2l2ZUFsbG9jYXRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExEV0FSRkRlYnVnTGluZUluZm8u
Y3BwOyBwYXRoID0gZnRsL0ZUTERXQVJGRGVidWdMaW5lSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJBQzkyMkJBMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVn
TGluZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMRFdBUkZEZWJ1
Z0xpbmVJbmZvLmg7IHBhdGggPSBmdGwvRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQ0NGM0RDMTg1RkUyNkIwMDgzRTJBRCAvKiBERkdTdG9y
ZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdG9y
ZUJhcnJpZXJFbGlzaW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
QUNDRjNERDE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0b3JlQmFycmllckVsaXNpb25Q
aGFzZS5oOyBwYXRoID0gZGZnL0RGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyQUQ4OTMyOTE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0
ZXJhdGlvblNjb3BlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBJdGVy
YXRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQUY3MzgyQTE4QkJC
RjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJ1Y3R1cmVJRFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkFGNzM4MkIxOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RydWN0dXJlSURUYWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyog
bGliei5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliei5keWxpYjsgcGF0aCA9IHVz
ci9saWIvbGliei5keWxpYjsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCTQ0OTA5N0VFMEY4
RjgxQjUwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDUxNTM5QjgxMkRDOTk0NTAwRUY3QUM0IC8qIFlhcnIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyci5oOyBwYXRoID0geWFyci9ZYXJyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzU3LDYgKzM3NjMsOCBAQAogCQk3RUY2RTBC
QjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovLAorCQkJCTJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
Y3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCiAJ
CQkJQkMyNTdERTUwRTFGNTFDNTAwMTZCNkM5IC8qIEFyZ3VtZW50cy5jcHAgKi8sCkBAIC00MTQw
LDYgKzQxNDgsNyBAQAogCQkJCTE0MjBCRTdBMTBBQTZEREIwMEY0NTVEMiAvKiBXZWFrUmFuZG9t
LmggKi8sCiAJCQkJQTdEQ0I3NzkxMkUzRDkwNTAwOTExOTQwIC8qIFdyaXRlQmFycmllci5oICov
LAogCQkJCUMyQjZENzUyMThBMzM3OTMwMDRBOTMwMSAvKiBXcml0ZUJhcnJpZXJJbmxpbmVzLmgg
Ki8sCisJCQkJMkFBQUEzMTAxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVyZUlEQmxvYi5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBydW50aW1lOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTQ4MzAsNiArNDgzOSw3IEBACiAJCQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFy
aXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3
MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJBQUFBMzEy
MThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVDMDI4NUQxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY4MzM1QjgxNjM5QzFFQTAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDg0Myw2ICs0ODUzLDcgQEAKIAkJCQkwRjYz
OTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTJBRjczODJEMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1
cmVJRFRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI3RjM5NjE1RUQ4RTQ2MDBGMTY3QjIg
LyogQXJyYXlTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Njg4Q0IxNTBFRDEyQjRFMDAx
RDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNTEw
MTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oIGluIEhl
YWRlcnMgKi8sCkBAIC02MjgyLDYgKzYyOTMsNyBAQAogCQkJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1
NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTkzQ0Y4NjE4
NDAzOENBMDBCRkNFMjcgLyogSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNTkzQ0Y3QzE4NDAzNjAzMDBCRkNFMjcgLyogSW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMkFGNzM4MkMxOEJCQkY5MjAwOEE1QTM3IC8q
IFN0cnVjdHVyZUlEVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwODExODlCMTkx
QTAwNjMzMjMxIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBNTdEMjNFNTE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNTMyNDM4NzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9y
SlNCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNCw3ICs0MzQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBEYXRhTGFiZWwzMjoKICAgICAvLwotICAgIC8vIEEgRGF0
YUxhYmVsUHRyIGlzIHVzZWQgdG8gcmVmZXIgdG8gYSBsb2NhdGlvbiBpbiB0aGUgY29kZSBjb250
YWluaW5nIGEgcG9pbnRlciB0byBiZQorICAgIC8vIEEgRGF0YUxhYmVsMzIgaXMgdXNlZCB0byBy
ZWZlciB0byBhIGxvY2F0aW9uIGluIHRoZSBjb2RlIGNvbnRhaW5pbmcgYSAzMi1iaXQgY29uc3Rh
bnQgdG8gYmUKICAgICAvLyBwYXRjaGVkIGFmdGVyIHRoZSBjb2RlIGhhcyBiZWVuIGdlbmVyYXRl
ZC4KICAgICBjbGFzcyBEYXRhTGFiZWwzMiB7CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFRlbXBs
YXRlQXNzZW1ibGVyVHlwZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzY2LDYgKzM2NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJy
YW5jaFB0cldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVl
KSk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRj
aChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRh
dGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDAp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoMzJXaXRoUGF0Y2go
Y29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSkpOworICAgIH0KKwogI2lm
ICFDUFUoQVJNX1RSQURJVElPTkFMKQogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgp
CiAgICAgewpAQCAtMzgxLDYgKzM4NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihjb25kLCByZWcsIGltbSkpOwogICAgIH0KKworICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBpbW0pCisgICAgeworICAgICAgICByZXR1
cm4gUGF0Y2hhYmxlSnVtcChicmFuY2gzMihjb25kLCBhZGRyZXNzLCBpbW0pKTsKKyAgICB9CiAj
ZW5kaWYKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyMjAsNiArMjIyMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICBBTFdB
WVNfSU5MSU5FIEp1bXAgYnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0
aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAgIGRhdGFMYWJl
bCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdo
dFZhbHVlLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
fQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2hQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQgPSBUcnVzdGVkSW1t
UHRyKDApKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0y
MjUyLDYgKzIyNTksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChy
ZXN1bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMy
JiBkYXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0z
MigwKSkKKyAgICB7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAg
ICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwg
aW5pdGlhbFJpZ2h0VmFsdWUpOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7
CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0
Y2hhYmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRj
aGFibGUgPSB0cnVlOwpAQCAtMjMyMiw2ICsyMzM3LDcgQEAgcHVibGljOgogICAgIFJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBnZXRDYWNoZWREYXRhVGVt
cFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7IH0KIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3Rh
cnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRy
IGxhYmVsKQogICAgIHsKQEAgLTIzMzQsNiArMjM1MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgQ29kZUxv
Y2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENv
ZGVMb2NhdGlvbkRhdGFMYWJlbDMyKQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BM
QVRGT1JNKCk7CisgICAgICAgIHJldHVybiBDb2RlTG9jYXRpb25MYWJlbCgpOworICAgIH0KKyAg
ICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQ
YXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lk
KiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICByZWVtaXRJbml0aWFsTW92ZVdpdGhQYXRj
aChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBpbml0aWFsVmFsdWUpOwpAQCAtMjM0
NCw2ICsyMzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JN
KCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCwgQWRkcmVzcywgaW50MzJf
dCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOworICAgIH0KKwog
cHJvdGVjdGVkOgogICAgIEFMV0FZU19JTkxJTkUgSnVtcCBtYWtlQnJhbmNoKEFSTTY0QXNzZW1i
bGVyOjpDb25kaXRpb24gY29uZCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTY0
NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1Myw2ICs3NTMsMTEgQEAgcHVibGljOgogICAgICAg
ICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQg
c3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBz
dG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKyAgICAKICAgICB2
b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBzdG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOwpAQCAtNzcwLDYgKzc3
NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTgoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CisgICAgfQorICAgIAog
ICAgIHZvaWQgc3RvcmUxNihSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBzdG9yZTE2KHNyYywgc2V0dXBBcm1BZGRyZXNzKGFkZHJlc3MpKTsKQEAgLTE3
MjYsNiArMTczNywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBh
ZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCisgICAg
QUxXQVlTX0lOTElORSBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIg
aW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBsb2Fk
MzIobGVmdCwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGRhdGFMYWJlbCA9IG1vdmVX
aXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgfQorICAgIAogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoUHRyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tUHRyIHJpZ2h0
ID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUg
PSB0cnVlOwpAQCAtMTc1OCw2ICsxNzc2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAocmVzdWx0KTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUg
PSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0g
dHJ1ZTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMldpdGhQYXRjaChjb25kLCBsZWZ0
LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdodFZhbHVlKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNo
YWJsZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAg
IH0KKwogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlSnVtcCgpCiAgICAgewogICAgICAgICBw
YWRCZWZvcmVQYXRjaCgpOwpAQCAtMTc5Niw2ICsxODIyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQ
YXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQ
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAgICAg
c3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lz
dGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC0xODE5LDExICsx
ODQ2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAg
ICAgfQogICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAg
eworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENv
ZGVMb2NhdGlvbkxhYmVsKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1
bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxh
YmVsLCBBZGRyZXNzLCB2b2lkKikKICAgICB7CiAgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRv
UGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIGlu
dDMyX3QpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICB9
CisKICNpZiBVU0UoTUFTTV9QUk9CRSkKICAgICBzdHJ1Y3QgQ1BVU3RhdGUgewogICAgICAgICAj
ZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oCShy
ZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsMTQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQp
KSk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZElt
bTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAg
cGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuY21wbF9pbV9mb3JjZTMyKGlu
aXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIGxlZnQub2Zmc2V0LCBsZWZ0LmJhc2UpOworICAgICAg
ICBkYXRhTGFiZWwgPSBEYXRhTGFiZWwzMih0aGlzKTsKKyAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOworICAgIH0KKwogICAgIERhdGFMYWJl
bFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVkSW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGlj
aXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOwpAQCAt
Mjc3LDYgKzI4NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBjYW5KdW1w
UmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFy
dE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIg
bGFiZWwpCiAgICAgewpAQCAtMjk5LDYgKzMwOCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3Rh
dGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9u
QWRkcmVzcyhDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGludCBvcGNvZGVCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBtb2RSTUJ5dGVzID0g
MTsKKyAgICAgICAgY29uc3QgaW50IG9mZnNldEJ5dGVzID0gMDsKKyAgICAgICAgY29uc3QgaW50
IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29uc3QgaW50IHRvdGFsQnl0ZXMgPSBvcGNv
ZGVCeXRlcyArIG1vZFJNQnl0ZXMgKyBvZmZzZXRCeXRlcyArIGltbWVkaWF0ZUJ5dGVzOworICAg
ICAgICBBU1NFUlQodG90YWxCeXRlcyA+PSBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpOworICAg
ICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CisgICAgfQorICAg
IAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBh
dGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcmVnLCB2
b2lkKiBpbml0aWFsVmFsdWUpCiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1
bXBUb19jbXBsX2lyX2ZvcmNlMzIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygp
LCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihpbml0aWFsVmFsdWUpLCByZWcpOwpAQCAtMzEw
LDYgKzMzMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIDAsIGFkZHJlc3MuYmFzZSk7
CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFi
bGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBB
ZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFhZGRyZXNzLm9mZnNldCk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRv
X2NtcGxfaW1fZm9yY2UzMihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGlu
aXRpYWxWYWx1ZSwgMCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisKICNpZiBVU0UoTUFTTV9QUk9C
RSkKICAgICAvLyBGb3IgZGV0YWlscyBhYm91dCBwcm9iZSgpLCBzZWUgY29tbWVudCBpbiBNYWNy
b0Fzc2VtYmxlclg4Nl82NC5oLgogICAgIHZvaWQgcHJvYmUoUHJvYmVGdW5jdGlvbiwgdm9pZCog
YXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDE2
NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICAg
ICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQorCisgICAgdm9pZCBzdG9y
ZTMyKFJlZ2lzdGVySUQgc291cmNlLCB2b2lkKiBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYg
KHNvdXJjZSA9PSBYODZSZWdpc3RlcnM6OmVheCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxfRUFYbShhZGRyZXNzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgICAgICBzdG9yZTMy
KHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICB2
b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1tLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKQEAgLTYy
Nyw2ICs2MzcsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRGF0YUxhYmVsUHRyKHRoaXMp
OwogICAgIH0KIAorICAgIERhdGFMYWJlbFB0ciBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW0zMiBp
bml0aWFsVmFsdWUsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHBhZEJlZm9yZVBh
dGNoKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfaTY0cihpbml0aWFsVmFsdWUubV92YWx1
ZSwgZGVzdCk7CisgICAgICAgIHJldHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CisgICAgfQorCiAg
ICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRp
YWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7CiAgICAgICAgIGRhdGFMYWJl
bCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBA
IC02MzksNiArNjU2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQs
IGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2gzMldpdGhQ
YXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzIm
IGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMy
KDApKQorICAgIHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubW92bF9pMzJyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7
CisgICAgICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOworICAgICAgICByZXR1cm4g
YnJhbmNoMzIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICBEYXRh
TGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIElt
cGxpY2l0QWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVs
ID0gbW92ZVdpdGhQYXRjaChpbml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CkBAIC02ODcs
NiArNzEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3Rl
ckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJlZ2lzdGVyOyB9CiAKICAgICBzdGF0aWMg
Ym9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIHN0YXRpYyBDb2RlTG9jYXRp
b25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihDb2RlTG9jYXRpb25E
YXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtNjk4LDE2ICs3MjQsMzYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgtdG90YWxCeXRlcyk7CiAgICAgfQog
ICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoMzJXaXRoUGF0
Y2hPblJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgY29uc3QgaW50IHJleEJ5dGVzID0gMTsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVz
ID0gMTsKKyAgICAgICAgY29uc3QgaW50IGltbWVkaWF0ZUJ5dGVzID0gNDsKKyAgICAgICAgY29u
c3QgaW50IHRvdGFsQnl0ZXMgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzICsgaW1tZWRpYXRlQnl0
ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10b3RhbEJ5dGVzKTsKKyAg
ICB9CisgICAgCiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lz
dGVyKGxhYmVsKTsKICAgICB9CisKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRP
ZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJl
bDMyIGxhYmVsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRj
aE9uUmVnaXN0ZXIobGFiZWwpOworICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRpb25M
YWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRyZXNzLCB2b2lkKiBpbml0aWFsVmFsdWUpCiAgICAg
ewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5zdHJ1Y3Rp
b25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0cl90Pihp
bml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lk
IHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcywgaW50MzJfdCBpbml0aWFsVmFs
dWUpCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZsX2kzMnIo
aW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBpbml0aWFsVmFsdWUsIHNjcmF0
Y2hSZWdpc3Rlcik7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2Vt
ZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFy
dCwgUmVnaXN0ZXJJRCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgWDg2QXNz
ZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDYg
KzE1NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MobGFiZWwpOwogICAg
IH0KKworICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAg
eworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gz
MldpdGhQYXRjaE9uQWRkcmVzcyhsYWJlbCk7CisgICAgfQogICAgIAogICAgIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKQEAgLTE3Niw2ICsxODEsMTEgQEAgcHVibGljOgog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2hQdHJXaXRoUGF0Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOwogICAg
IH0KIAorICAgIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyBhZGRyZXNzLCBpbnQzMl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0
Y2goaW5zdHJ1Y3Rpb25TdGFydCwgYWRkcmVzcywgdmFsdWUpOworICAgIH0KKwogcHJpdmF0ZToK
ICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogI2lmIEVOQUJMRShBU1NFTUJMRVJfV1hfRVhD
TFVTSVZFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFz
c2VtYmxlci5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMwLDcgKzEzMzAsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A4KE9QX01PVl9F
YkdiLCBzcmMsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9Ci0gICAgCisKICAg
ICB2b2lkIG1vdndfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9PUEVSQU5EX1NJWkUpOwpAQCAtMjA1NCw5ICsyMDU0LDkgQEAgcHVibGlj
OgogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdnFfaTY0
cih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBpbnQ2NF90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUgPSAxMDsgLy8gUkVY
LlcgTU9WIElNTTY0CiAgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7CiAgICAgICAgIGNv
bnN0IGludCBvcGNvZGVCeXRlcyA9IDE7Ci0gICAgICAgIEFTU0VSVChyZXhCeXRlcyArIG9wY29k
ZUJ5dGVzIDw9IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7CiAgICAgICAgIHVpbnQ4X3QqIHB0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOwogICAgICAg
ICBwdHJbMF0gPSBQUkVfUkVYIHwgKDEgPDwgMykgfCAoZHN0ID4+IDMpOwogICAgICAgICBwdHJb
MV0gPSBPUF9NT1ZfRUFYSXYgfCAoZHN0ICYgNyk7CkBAIC0yMDY2LDExICsyMDY2LDMzIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHVpbnQ4X3QgYXNCeXRlc1s4XTsKICAgICAgICAgfSB1OwogICAg
ICAgICB1LmFzV29yZCA9IGltbTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMg
KyBvcGNvZGVCeXRlczsgaSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkpOyArK2kpCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJleEJ5dGVzICsgb3Bj
b2RlQnl0ZXM7IGkgPCBpbnN0cnVjdGlvblNpemU7ICsraSkKKyAgICAgICAgICAgIHB0cltpXSA9
IHUuYXNCeXRlc1tpIC0gcmV4Qnl0ZXMgLSBvcGNvZGVCeXRlc107CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgcmV2ZXJ0SnVtcFRvX21vdmxfaTMycih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBp
bnQzMl90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICAvLyBXZSBvbmx5IHJl
dmVydCBqdW1wcyBvbiBpbmxpbmUgY2FjaGVzLCBhbmQgaW5saW5lIGNhY2hlcyBhbHdheXMgdXNl
IHRoZSBzY3JhdGNoIHJlZ2lzdGVyIChyMTEpLgorICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGFi
b3ZlIGlzIGV2ZXIgZmFsc2UgdGhlbiB3ZSBuZWVkIHRvIG1ha2UgdGhpcyBzbWFydGVyIHdpdGgg
cmVzcGVjdCB0byBlbWl0dGluZyAKKyAgICAgICAgLy8gdGhlIFJFWCBieXRlLgorICAgICAgICBB
U1NFUlQoZHN0ID09IFg4NlJlZ2lzdGVyczo6cjExKTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25TaXplID0gNjsgLy8gUkVYIE1PViBJTU0zMgorICAgICAgICBjb25zdCBpbnQg
cmV4Qnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOworICAgICAg
ICB1aW50OF90KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnN0cnVjdGlvblN0
YXJ0KTsKKyAgICAgICAgcHRyWzBdID0gUFJFX1JFWCB8IChkc3QgPj4gMyk7CisgICAgICAgIHB0
clsxXSA9IE9QX01PVl9FQVhJdiB8IChkc3QgJiA3KTsKKyAgICAgICAgCisgICAgICAgIHVuaW9u
IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGFzV29yZDsKKyAgICAgICAgICAgIHVpbnQ4X3QgYXNC
eXRlc1s0XTsKKyAgICAgICAgfSB1OworICAgICAgICB1LmFzV29yZCA9IGltbTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IGluc3RydWN0aW9u
U2l6ZTsgKytpKQogICAgICAgICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRlcyAt
IG9wY29kZUJ5dGVzXTsKICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIHN0YXRpYyB2b2lkIHJl
dmVydEp1bXBUb19jbXBsX2lyX2ZvcmNlMzIodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgaW50MzJf
dCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5
dGVzID0gMTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2Zp
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsMjQgKzc3LDI1
IEBAIHZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mIG91dCwgQXIKIAogdm9pZCBBcnJh
eVByb2ZpbGU6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9j
a2VyJiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0
dXJlKQorICAgIGlmICghbV9sYXN0U2VlblN0cnVjdHVyZUlEKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgfD0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZSht
X2xhc3RTZWVuU3RydWN0dXJlKTsKKyAgICBTdHJ1Y3R1cmUqIGxhc3RTZWVuU3RydWN0dXJlID0g
Y29kZUJsb2NrLT5oZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9sYXN0U2VlblN0cnVj
dHVyZUlEKTsKKyAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBhcnJheU1vZGVGcm9tU3RydWN0
dXJlKGxhc3RTZWVuU3RydWN0dXJlKTsKICAgICAKICAgICBpZiAoIW1fZGlkUGVyZm9ybUZpcnN0
UnVuUHJ1bmluZwogICAgICAgICAmJiBoYXNUd29Pck1vcmVCaXRzU2V0KG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzKSkgewotICAgICAgICBtX29ic2VydmVkQXJyYXlNb2RlcyA9IGFycmF5TW9kZUZyb21T
dHJ1Y3R1cmUobV9sYXN0U2VlblN0cnVjdHVyZSk7CisgICAgICAgIG1fb2JzZXJ2ZWRBcnJheU1v
ZGVzID0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShsYXN0U2VlblN0cnVjdHVyZSk7CiAgICAgICAg
IG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA9IHRydWU7CiAgICAgfQogICAgIAogICAgIG1f
bWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIHw9Ci0gICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hl
bkxlbmd0aElzTm90WmVybygpOworICAgICAgICBsYXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8o
KS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7Ci0gICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVj
dHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKQotICAgICAgICAmJiAhZ2xvYmFsT2JqZWN0LT5pc09y
aWdpbmFsVHlwZWRBcnJheVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKSkKKyAgICBpZiAo
IWdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJl
KQorICAgICAgICAmJiAhZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsVHlwZWRBcnJheVN0cnVjdHVy
ZShsYXN0U2VlblN0cnVjdHVyZSkpCiAgICAgICAgIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVzID0gZmFsc2U7Ci0gICAgbV9sYXN0U2VlblN0cnVjdHVyZSA9IDA7CisgICAgbV9sYXN0U2Vl
blN0cnVjdHVyZUlEID0gMDsKIH0KIAogQ1N0cmluZyBBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3Jp
cHRpb24oY29uc3QgQ29uY3VycmVudEpJVExvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9m
aWxlLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9BcnJheVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNz
IEFycmF5UHJvZmlsZSB7CiBwdWJsaWM6CiAgICAgQXJyYXlQcm9maWxlKCkKICAgICAgICAgOiBt
X2J5dGVjb2RlT2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAg
ICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAgICAgICwgbV9sYXN0U2VlblN0cnVj
dHVyZUlEKDApCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9sZShmYWxzZSkKICAgICAgICAgLCBt
X291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKGZhbHNlKQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBcnJheVBy
b2ZpbGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCkKLSAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlKDApCisgICAg
ICAgICwgbV9sYXN0U2VlblN0cnVjdHVyZUlEKDApCiAgICAgICAgICwgbV9tYXlTdG9yZVRvSG9s
ZShmYWxzZSkKICAgICAgICAgLCBtX291dE9mQm91bmRzKGZhbHNlKQogICAgICAgICAsIG1fbWF5
SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKGZhbHNlKQpAQCAtMTU5LDE0ICsxNTksMTQgQEAgcHVi
bGljOgogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZU9mZnNldDsgfQogICAgIAotICAgIFN0cnVjdHVyZSoqIGFkZHJlc3NPZkxhc3RT
ZWVuU3RydWN0dXJlKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmU7IH0KKyAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQogICAgIGJvb2wqIGFk
ZHJlc3NPZk91dE9mQm91bmRzKCkgeyByZXR1cm4gJm1fb3V0T2ZCb3VuZHM7IH0KICAgICAKICAg
ICB2b2lkIG9ic2VydmVTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAg
ICAgICBtX2xhc3RTZWVuU3RydWN0dXJlID0gc3RydWN0dXJlOworICAgICAgICBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxv
Y2sqKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3RydWN0dXJlKj4o
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCiAgICAgdW5zaWduZWQgbV9ieXRl
Y29kZU9mZnNldDsKLSAgICBTdHJ1Y3R1cmUqIG1fbGFzdFNlZW5TdHJ1Y3R1cmU7CisgICAgU3Ry
dWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEOwogICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9s
ZTsgLy8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBz
cGVjaWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBh
cyBpdCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJh
c2ljYWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9y
YWdlKSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUg
aW1wbGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHM7CiAgICAgYm9vbCBtX21heUludGVyY2Vw
dEluZGV4ZWRBY2Nlc3NlcyA6IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2ICs2NjksNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjb25zdGFudEJ1ZmZlckFzVmVjdG9yKGluZGV4KS5k
YXRhKCk7CiAgICAgfQogCisgICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcDsg
fQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9i
amVjdC5nZXQoKTsgfQogCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2Rl
T3JpZ2luKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlND
ZWxsOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpT
Q2VsbDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogfTsKQEAg
LTU3OSw3ICs1NzksNyBAQCBwcml2YXRlOgogCiBwcm90ZWN0ZWQ6CiAKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lvbiwKICAgICAgICAg
R2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZwogICAgIH07Ci0gICAgdmlydHVhbCB2b2lkIGRldGFj
aChKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvckRldGFjaCk7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvckRldGFjaCk7
CiAKICAgICBCcmVha3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50LCB1bnNpZ25lZCYg
YWN0dWFsTGluZSwgdW5zaWduZWQmIGFjdHVhbENvbHVtbik7CiAgICAgdm9pZCByZW1vdmVCcmVh
a3BvaW50KEJyZWFrcG9pbnRJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RIZWFwLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDEw
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19tb2RlKSBcCiAg
ICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKSBcCi0gICAgbWFjcm8oSlNDZWxsX3N0
cnVjdHVyZSkgXAorICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmVJRCkgXAorICAgIG1hY3JvKEpT
Q2VsbF9pbmRleGluZ1R5cGUpIFwKKyAgICBtYWNybyhKU0NlbGxfdHlwZUluZm9GbGFncykgXAor
ICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb1R5cGUpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX2V4
ZWN1dGFibGUpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlQ2hhaW4pIFwKICAgICBtYWNy
byhKU09iamVjdF9idXR0ZXJmbHkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAx
NjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDIzICsxMjAsMTQgQEAgcHJvdGVjdGVk
OgogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbV9iYWRJbmRleGluZ1R5cGVKdW1w
LmZpbGwoCi0gICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJyYW5jaFdlYWtQdHIoCi0g
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUpKTsKKyAgICAg
ICAgICAgICAgICBqaXQsIGppdC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIEFsYXMsIHdlIG5lZWQgdG8gcmVsb2FkIHRoZSBzdHJ1Y3R1cmUgYmVj
YXVzZSBzaWxlbnQgc3BpbGxpbmcgZG9lcyBub3Qgc2F2ZQotICAgICAgICAgICAgLy8gdGVtcG9y
YXJpZXMuIE5vciB3b3VsZCBpdCBiZSB1c2VmdWwgZm9yIGl0IHRvIGRvIHNvLiBFaXRoZXIgd2F5
IHdlJ3JlIHRhbGtpbmcKLSAgICAgICAgICAgIC8vIGFib3V0IGEgbG9hZC4KLSAgICAgICAgICAg
IGppdC0+bV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQ
Uik7Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoYXQgd2Ug
aGF2ZSB0aGUga2luZCBvZiBhcnJheSBzdG9yYWdlIHRoYXQgd2Ugd2FudGVkIHRvIGdldC4KICAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIGEgYmFja3dhcmRzIHNwZWN1bGF0aW9uIGNo
ZWNrLCB3aGljaCB3aWxsIHJlc3VsdCBpbiB0aGUgCiAgICAgICAgICAgICAvLyBieXRlY29kZSBv
cGVyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIGFycmF5aWZpY2F0aW9uIGJlaW5nIHJlZXhl
Y3V0ZWQuCiAgICAgICAgICAgICAvLyBUaGF0J3MgZmluZSwgc2luY2UgYXJyYXlpZmljYXRpb24g
aXMgbm90IHVzZXItdmlzaWJsZS4KICAgICAgICAgICAgIGppdC0+bV9qaXQubG9hZDgoCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9zdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBtX3N0cnVjdHVyZUdQUik7CisgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwogICAgICAgICAgICAgbV9iYWRJbmRleGlu
Z1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPmp1bXBTbG93Rm9yVW53
YW50ZWRBcnJheU1vZGUobV9zdHJ1Y3R1cmVHUFIsIG1fYXJyYXlNb2RlKSk7CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICB2ZXJzaW9ucyBvZiB0aG9zZSBub2RlcyB0aGF0IGJh
Y2t3YXJkLWV4aXQgaW5zdGVhZCwgYnV0IEknbSBub3QgY29udmluY2VkCiAgICAgLy8gICBvZiB0
aGUgc291bmRuZXNzLgogICAgIC8vCi0gICAgLy8gLSBTb21lIG5vZGVzIGxpZSwgYW5kIGNsYWlt
IHRoYXQgdGhleSBkbyBub3QgcmVhZCB0aGUgSlNDZWxsX3N0cnVjdHVyZS4KKyAgICAvLyAtIFNv
bWUgbm9kZXMgbGllLCBhbmQgY2xhaW0gdGhhdCB0aGV5IGRvIG5vdCByZWFkIHRoZSBKU0NlbGxf
c3RydWN0dXJlSUQsIEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBldGMuCiAgICAgLy8gICBUaGVzZSBh
cmUgbm9kZXMgdGhhdCB1c2UgdGhlIHN0cnVjdHVyZSBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGRl
cGVuZCBvbgogICAgIC8vICAgdGhpbmdzIHRoYXQgY2hhbmdlIHVuZGVyIHN0cnVjdHVyZSB0cmFu
c2l0aW9ucy4KICAgICAvLwpAQCAtNzksNyArNzksNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgLy8gICBzbWFsbCBoYWNraW5nLgogICAgIAogICAgIGlm
IChlZGdlc1VzZVN0cnVjdHVyZShncmFwaCwgbm9kZSkpCi0gICAgICAgIHJlYWQoSlNDZWxsX3N0
cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAKICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CkBAIC00MTIsMTkgKzQx
MiwzMCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAg
IAogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9u
V2F0Y2hwb2ludDoKKyAgICBjYXNlIEluc3RhbmNlT2Y6CisgICAgICAgIHJlYWQoSlNDZWxsX3N0
cnVjdHVyZUlEKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBDaGVja0FycmF5OgorICAg
ICAgICByZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICByZWFkKEpTQ2VsbF90eXBl
SW5mb1R5cGUpOworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJl
dHVybjsKKwogICAgIGNhc2UgQ2hlY2tIYXNJbnN0YW5jZToKLSAgICBjYXNlIEluc3RhbmNlT2Y6
Ci0gICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5
cGVJbmZvRmxhZ3MpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgY2FzZSBDaGVj
a0V4ZWN1dGFibGU6CiAgICAgICAgIHJlYWQoSlNGdW5jdGlvbl9leGVjdXRhYmxlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICBjYXNlIFBo
YW50b21QdXRTdHJ1Y3R1cmU6Ci0gICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAg
ICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICB3cml0ZShKU0NlbGxfdHlw
ZUluZm9UeXBlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworICAgICAg
ICB3cml0ZShKU0NlbGxfaW5kZXhpbmdUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgpAQCAtNDQ0LDkgKzQ1NSwxMSBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIAogICAgIGNh
c2UgQXJyYXlpZnk6CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgotICAgICAgICByZWFk
KEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Cisg
ICAgICAgIHJlYWQoSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAgIHJlYWQoSlNPYmplY3Rf
YnV0dGVyZmx5KTsKLSAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHdy
aXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF9pbmRleGluZ1R5
cGUpOwogICAgICAgICB3cml0ZShKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAgICBjbG9iYmVy
aXplRm9yQWxsb2NhdGlvbihyZWFkLCB3cml0ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ2OSwx
NyArNDgyLDE3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6Ci0gICAg
ICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKICAgICAgICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAgICByZWFkKEFi
c3RyYWN0SGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCku
aWRlbnRpZmllck51bWJlcikpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2Ug
TXVsdGlQdXRCeU9mZnNldDoKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAg
ICAgcmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRl
cmZseSk7CiAgICAgICAgIHdyaXRlKEFic3RyYWN0SGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUt
Pm11bHRpUHV0QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcikpOwogICAgICAgICBpZiAo
bm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS53cml0ZXNTdHJ1Y3R1cmVzKCkpCi0gICAgICAg
ICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHdyaXRlKEpTQ2VsbF9z
dHJ1Y3R1cmVJRCk7CiAgICAgICAgIGlmIChub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnJl
YWxsb2NhdGVzU3RvcmFnZSgpKSB7CiAgICAgICAgICAgICB3cml0ZShKU09iamVjdF9idXR0ZXJm
bHkpOwogICAgICAgICAgICAgY2xvYmJlcml6ZUZvckFsbG9jYXRpb24ocmVhZCwgd3JpdGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDI5IEBAIHB1YmxpYzoKICAgICAgICAgYWRk
V2Vha1JlZmVyZW5jZSh3ZWFrUHRyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgCisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVj
dHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3Ry
dWN0dXJlKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBKdW1wIHJlc3VsdCA9
IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMih3ZWFrU3RydWN0dXJlLT5pZCgpKSk7
CisgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0cnVjdHVyZSk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0
LCB3ZWFrU3RydWN0dXJlKTsKKyNlbmRpZgorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgSnVtcCBicmFuY2hTdHJ1Y3R1cmVQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBUIGxlZnQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHN0cnVj
dHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCBu
b3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwg
YmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIHsKICAgICAgICAgLy8gT1NS
IGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBj
b250cm9sIGZsb3cgYW5hbHlzaXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTY0NzI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMSw4ICsxMjEsOCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEpOwot
ICAgICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzY3JhdGNoMSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRj
aDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEs
IFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoMSk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRj
aDIpOwogICAgICAgICAgICAgICAgIG1faml0LmxzaGlmdDMyKHNjcmF0Y2gxLCBzY3JhdGNoMik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw5ICsxMTYs
OSBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pzVmFsdWVT
b3VyY2UuZ3ByKCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzY3JhdGNoMSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRj
aDEsIGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBT
dHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAgICAg
ICAgIG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3ModmFsdWUsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5z
dG9yZTMyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJl
SUQoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRy
ZXNzKHZhbHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaDEpOwogICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMSks
IHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sc2hpZnQzMihzY3JhdGNoMSwgc2Ny
YXRjaDIpOwogICAgICAgICAgICAgICAgIG1faml0Lm9yMzIoc2NyYXRjaDIsIEFzc2VtYmx5SGVs
cGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09mQXJyYXlNb2Rlcygp
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFtZXMoQ0NhbGxIZWxw
ZXJzCiB9CiAKICNpZiBFTkFCTEUoR0dDKQotc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNj
cmF0Y2gyKQorc3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBH
UFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoKQogewotICAgIEFzc2VtYmx5SGVscGVyczo6SnVt
cCBkZWZpbml0ZWx5Tm90TWFya2VkID0gaml0LmdlbmVyaWNXcml0ZUJhcnJpZXIob3duZXIsIHNj
cmF0Y2gxLCBzY3JhdGNoMik7CisgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBqaXQuZ2VuZXJpY1dyaXRlQmFycmllcihvd25lcik7CiAKICAgICAvLyBXZSBu
ZWVkIHRoZXNlIGV4dHJhIHNsb3RzIGJlY2F1c2Ugc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
IHdpbGwgdXNlIHBva2Ugb24geDg2LgogI2lmIENQVShYODYpCkBAIC0xNzIsOCArMTcyLDggQEAg
c3RhdGljIHZvaWQgb3NyV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycwogI2VuZGlmCiAKICAgICBq
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG93bmVyKTsKLSAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihvcGVyYXRp
b25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaDEpOwotICAgIGppdC5jYWxsKHNjcmF0Y2gxKTsK
KyAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihvcGVyYXRpb25PU1JXcml0ZUJhcnJpZXIpKSwgc2NyYXRjaCk7CisgICAgaml0
LmNhbGwoc2NyYXRjaCk7CiAKICNpZiBDUFUoWDg2KQogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihzaXplb2Yodm9pZCopICogMyksIE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBhZGp1c3RBbmRK
dW1wVG9UYXJnZXQoQ0NhbGxIZWxwZXJzJgogICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gZXhpdC5tX2NvZGVPcmlnaW47IDsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXIpIHsKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9
IGppdC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKTsKICAgICAgICAgaml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSksIEdQUkluZm86Om5vbkFyZ0dQUjApOyAKLSAgICAgICAgb3NyV3JpdGVCYXJy
aWVyKGppdCwgR1BSSW5mbzo6bm9uQXJnR1BSMCwgR1BSSW5mbzo6bm9uQXJnR1BSMSwgR1BSSW5m
bzo6bm9uQXJnR1BSMik7CisgICAgICAgIG9zcldyaXRlQmFycmllcihqaXQsIEdQUkluZm86Om5v
bkFyZ0dQUjAsIEdQUkluZm86Om5vbkFyZ0dQUjEpOwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjQ3MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRCeVZhbChFeGVj
U3RhdGUqIGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG9iamVj
dC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGluZGV4LCB2YWx1ZSwg
c3RyaWN0KTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgob2Jq
ZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTIyMiwxMiArMjIyLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVG8KIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IsIGludDMyX3QgaW5saW5lQ2FwYWNp
dHkpCiB7Ci0gICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwotICAgIEFTU0VSVChqc0Nhc3Q8
SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29u
c3RydWN0VHlwZUpTKTsKKyAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciktPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q29uc3RydWN0RGF0YShqc0Nhc3Q8SlNGdW5jdGlvbio+
KGNvbnN0cnVjdG9yKSwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKICNlbmRp
ZgogICAgIAogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBqc0Nhc3Q8SlNG
dW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+YWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2Fw
YWNpdHkpLT5zdHJ1Y3R1cmUoKSk7CkBAIC0zOTIsOCArMzkyLDggQEAgdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbAogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBhcnJheSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIAogICAgIGlmIChpbmRleCA+PSAwKSB7
CiAgICAgICAgIGFycmF5LT5wdXRCeUluZGV4SW5saW5lKGV4ZWMsIGluZGV4LCBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE2NDcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw4ICsyNDcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQu
bm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQu
YnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdFBheWxvYWRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRl
c3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIAorICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBU
cnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAg
ICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMzEyLDEy
ICszMTQsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAg
ICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENl
bGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGFyZ1RhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVy
bywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCksIGludmVydCA/IHRha2VuIDogbm90VGFrZW4pOworICAgICAgICBicmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQ
YXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgCisgICAg
ICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKICAgIAogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAg
ICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICB9CkBA
IC0xMTM2LDM5ICsxMTQxLDM0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RF
cXVhbGkKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1
cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7
Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdf
VFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1
cmVHUFIsIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAg
ICAgIHN0cnVjdHVyZUdQUiwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTEyMTMsMTkgKzEyMTMsMTgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgICAgICBERkdf
VFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiks
IGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3Ax
R1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAg
ICB9CiAgICAgCkBAIC0xMjQxLDIwICsxMjQwLDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RUb09iamUKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3Ay
UGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZ
UEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAot
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGls
ZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAg
ICAKQEAgLTEzMjAsMTkgKzEzMTgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlT2JqZQogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xMzQ3LDIwICsxMzQ0LDE5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgICAgIEpT
VmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0
dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMlBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJUYWdHUFIs
IG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNDQzLDEwICsxNDM5LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIp
OwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwKQEAgLTE0NTgsNyArMTQ1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RPck90aGUKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsK
IAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAKQEAgLTE1NzMsMTAgKzE1NjksMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNo
R1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsCkBAIC0xNTg1LDcgKzE1ODEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgICAgIHNjcmF0Y2hHUFIsCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0
LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNlLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMzA3Nyw3ICszMDc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFQYXls
b2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2
ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIp
OwpAQCAtMzExMCw3ICszMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIG9wMVRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3Mob3AxUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubW92ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAg
ICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0zNDc2LDExICszNDc1LDkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaDMyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0aGlzVmFsdWVU
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgICAgICBtX2ppdC5s
b2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlUGF5
bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BS
LCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLAogICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsK
ICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVQYXlsb2FkR1BSLCB0ZW1wR1BSKTsKICAgICAg
ICAgbV9qaXQubW92ZSh0aGlzVmFsdWVUYWdHUFIsIHRlbXBUYWdHUFIpOwpAQCAtMzc4NywxMiAr
Mzc4NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgQmFkQ2FjaGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UuZ3By
KCkpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIoCiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnN0
cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIApAQCAtMzgyMyw3ICszODIwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3By
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVj
dHVyZSgpKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hQ
dHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJl
KCkpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgICAgICBpc09LLmxpbmsoJm1f
aml0KTsKICNlbHNlCkBAIC0zODQ3LDcgKzM4NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
KTsKKyAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAg
ICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQwNTEs
OCArNDA0OCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAKICAgICAgICAgLy8gU3BlY3Vs
YXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCi0gICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUuZ3By
KCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hU
ZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCAKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDA4MCw4ICs0MDc5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMy
KDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENv
bXBpbGVyOjpOb25aZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1
ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAg
ICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAg
IApAQCAtNDEyNCw4ICs0MTI1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9
IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgdmFsdWUudGFnR1BSKCksIEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgICAgICAKLSAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BS
KCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBt
X2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdC5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihTdHJpbmdUeXBlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQuY29tcGFyZTgoSklU
Q29tcGlsZXI6OkVxdWFsLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVl
LnBheWxvYWRHUFIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7
CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAg
IAogICAgICAgICBpc05vdENlbGwubGluaygmbV9qaXQpOwpAQCAtNDE3OCw4ICs0MTgxLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERG
R19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKLSAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5jaDgoCisg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQogICAgICAg
ICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiks
IG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJp
bmcoKSksIHJlc3VsdEdQUik7CkBAIC00NzA4LDcgKzQ3MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5u
b2RlKCkpKQogICAgICAgICBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQg
PSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gy
KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dy
aXRlQmFycmllcihtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZm
ZXIob3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CiAgICAgZGVmaW5pdGVseU5vdE1hcmtl
ZC5saW5rKCZtX2ppdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ3LDEyICsyNDcsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVj
dCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tu
b3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBhcmdHUFIsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3Rlcik7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhhcmdHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwotICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFu
Y2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwog
CiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZElt
bTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtMjYxLDYgKzI2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0g
bG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIG1faml0Lm1vdmUoSklU
Q29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9j
dXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2gu
Z3ByKCkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVj
dEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Ok5v
dEVxdWFsIDogSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwogICAgIH0KQEAgLTMxMSwxNiArMzE1LDIwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICB9IGVsc2Ugewog
ICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2Rl
KCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29t
cGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpLCBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKKyAgICAgICAgYnJh
bmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgCisg
ICAgICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKIAogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0R1BS
LCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBs
b2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBpbnZlcnQgPyBub3RU
YWtlbiA6IHRha2VuKTsKICAgICB9CkBAIC0xNTE5LDQxICsxNTI3LDM2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9k
ZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIo
KSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1
Y3R1cmUodGhpcyk7Ci0gICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3By
KCk7Ci0KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
b3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsK
IAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BS
KSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQ
UiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAg
fQogICAgIApAQCAtMTU3NiwzNyArMTU3OSwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0VG9PYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICBHUFJS
ZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNo
cG9pbnRWYWxpZCA9CiAgICAgICAgIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNT
dGlsbFZhbGlkKCk7CiAKLSAgICBpZiAoIW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
VmFsaWQpIHsKLSAgICAgICAgLy8gVGhlIG1hc3F1ZXJhZGVzIGFzIHVuZGVmaW5lZCBjYXNlIHdp
bGwgdXNlIHRoZSBzdHJ1Y3R1cmUgcmVnaXN0ZXIsIHNvIGFsbG9jYXRlIGl0IGhlcmUuCi0gICAg
ICAgIC8vIERvIHRoaXMgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24gdG8gYXZvaWQgYnJhbmNo
aW5nIGFyb3VuZCBhIHJlZ2lzdGVyIGFsbG9jYXRpb24uCi0gICAgICAgIEdQUlRlbXBvcmFyeSBy
ZWFsU3RydWN0dXJlKHRoaXMpOwotICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVy
ZSk7Ci0gICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKLSAgICB9Ci0KICAg
ICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9w
MUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAg
ICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xNjE4LDIxICsxNjEwLDIwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAvLyBXZSBrbm93IHRo
YXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
SlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAg
ICAgICAgc3RydWN0dXJlR1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KG9wMkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7
CiAgICAgfQogICAgIApAQCAtMTY3OSwzNyArMTY3MCwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAg
ICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKLSAgICBHUFJSZWcgc3RydWN0
dXJlR1BSID0gSW52YWxpZEdQUlJlZzsKICAgICAKLSAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50VmFsaWQgPQorICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnRWYWxpZCA9IAogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpOwogCi0gICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludFZhbGlkKSB7Ci0gICAgICAgIC8vIFRoZSBtYXNxdWVyYWRlcyBhcyB1bmRlZmluZWQgY2Fz
ZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgot
ICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJy
YW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgotICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1
Y3R1cmUpOwotICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQot
CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hT
dHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAg
ICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAKQEAgLTE3MjEsMjEgKzE3MDEsMjAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIC8vIFdlIGtub3cg
dGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAg
IGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiks
IHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KSk7CiAgICAgfQogICAgIApAQCAtMTgzMyw2ICsxODEyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgc3RydWN0dXJlR1BS
ID0gSW52YWxpZEdQUlJlZzsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDsKKyAgICBHUFJSZWcg
c2NyYXRjaEdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludElzU3RpbGxWYWxpZCgpOwpAQCAtMTg0MSwzMiArMTgyMiwzNCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIC8vIFRoZSBtYXNxdWVyYWRl
cyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVyLCBzbyBh
bGxvY2F0ZSBpdCBoZXJlLgogICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2YgdGhlIGZ1
bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0aW9uLgog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlYWxTY3JhdGNoKHRoaXMpOwogICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0
cnVjdHVyZSk7CisgICAgICAgIHNjcmF0Y2guYWRvcHQocmVhbFNjcmF0Y2gpOwogICAgICAgICBz
dHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CisgICAgICAgIHNjcmF0Y2hHUFIgPSBzY3Jh
dGNoLmdwcigpOwogICAgIH0KIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2
YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0KICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiks
IG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAg
ICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
WmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0
dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKQEAgLTE5ODUsMzEgKzE5NjgsNDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE9iamVjdE9yT3RoZXJCcgogewogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGVV
c2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZTsKICAgICBHUFJSZWcgdmFsdWVHUFIg
PSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7Ci0g
ICAgCisgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CisKKyAgICBpZiAo
IW1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIHN0cnVjdHVyZS5h
ZG9wdChyZWFsU3RydWN0dXJlKTsKKyAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdw
cigpOworICAgIH0KKwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9k
ZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOyAg
ICAgICAgICAgICAgICAKICAgICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c2NyYXRjaEdQUik7Ci0KICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNl
LCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHNj
cmF0Y2hHUFIsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisg
ICAgICAgICAgICBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogCisgICAg
ICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIsIHNjcmF0
Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CkBAIC0zNDE3LDcgKzM0MTAsMTAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBvcDEudXNl
KCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUg
PSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICBhbHJlYWR5UHJpbWl0aXZl
LmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CkBA
IC0zNDQzLDEwICszNDM5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3Bl
Y1N0cmluZykgewogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9
IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
blplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hQdHIoCisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0gICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAg
ICAgICBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRoMS5saW5r
KCZtX2ppdCk7CkBAIC0zNjY1LDcgKzM2NjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgZW1pdEFsbG9jYXRlQmFzaWNTdG9yYWdl
KHJlc3VsdEdQUiwgc3RvcmFnZUdQUikpOwogICAgICAgICAgICAgbV9qaXQuc3ViUHRyKHNjcmF0
Y2hHUFIsIHN0b3JhZ2VHUFIpOwogICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihub2RlLT5pbmRleGluZ1R5cGUoKSk7Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVj
dDxKU0FycmF5PihyZXN1bHRHUFIsIEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3Jh
dGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBz
dG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdG9yYWdlR1BSLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsK
ICAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CkBAIC0z
ODAzLDExICszNzk5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCB0aGlzVmFsdWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcikp
OwotICAgICAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7
CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOCgKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUp
KSk7CiAgICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlR1BSLCB0ZW1wR1BSKTsKICAgICAgICAg
Sl9KSVRPcGVyYXRpb25fRUogZnVuY3Rpb247CkBAIC00MDk4LDI0ICs0MDkyLDIwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKG5vZGUtPnN0
cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlLmdwcigpKSwgMCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrUHRyKAorICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVy
ZVNldCgpWzBdKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
c3RydWN0dXJlKHRoaXMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzdHJ1Y3R1cmUuZ3ByKCkpOwotICAgICAgICAgICAgCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgLSAxOyArK2kpCi0gICAg
ICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6
RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKTsKKyAgICAg
ICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKEpJVENvbXBp
bGVyOjpFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBleGl0
S2luZCwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAsCi0gICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxh
c3QoKSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCisgICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbm9kZS0+c3Ry
dWN0dXJlU2V0KCkubGFzdCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwogICAgICAgICB9CkBAIC00MTMxLDEyICs0MTIxLDE1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gd2Ugc2hvdWxkbid0IHJl
YWxseSBsb2FkIGl0IHNpbmNlIHRoYXQgY291bGQgYmUgYSB3YXN0ZS4gRm9yIG5vdyB0aG91Z2gs
CiAgICAgICAgIC8vIHdlJ2xsIGp1c3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHdoZW4gYSB3YXRj
aHBvaW50IGZpcmVzIHRoZW4gdGhhdCdzCiAgICAgICAgIC8vIHF1aXRlIGEgaGludCBhbHJlYWR5
LgotICAgICAgICAKKwogICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNlKG5vZGUtPnN0cnVj
dHVyZSgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNPSyA9IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKG9wMS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNP
SyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpF
cXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlKCkp
OwogICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgICAgIGlzT0subGluaygmbV9qaXQp
OwogI2Vsc2UKQEAgLTQxNTUsMTQgKzQxNDgsMTggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6
IHsKKyAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJlOwor
CiAgICAgICAgIG1faml0LmppdENvZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVy
ZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2Rl
KTsKIAogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwotICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkubmV3U3RydWN0dXJl
KSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSkpOworICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xkU3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAg
ICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gbmV3U3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLmlubGlu
ZVR5cGVGbGFncygpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKG5ld1N0cnVjdHVyZS0+aWQoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAg
bm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM0Miw4ICs0MzM5LDEwIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHN0cnVjdHVyZSh0aGlzKTsKIAogICAgICAgICAvLyBTcGVjdWxhdGUgdGhhdCBiYXNlICdJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlLmdwcigpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3Q4KAorICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC00MzcxLDggKzQzNzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdC5ncHIo
KSk7CiAgICAgICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgp
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3Vs
dC5ncHIoKSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFu
Y2hUZXN0OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDAp
LCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9
IG1faml0Lmp1bXAoKTsKIApAQCAtNDQxOSw4ICs0NDIwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6Tm9uWmVybywg
dmFsdWUuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgICAgIAotICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgbV9qaXQuY29tcGFy
ZTgoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCks
IFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlw
ZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpF
cXVhbCwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0
cmluZ1R5cGUpLCAKKyAgICAgICAgICAgIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0Lm9y
MzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKQEAgLTQ0NTksOCAr
NDQ2Miw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIFR5cGVPZjogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgR1BSUmVnIHZhbHVl
R1BSID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwotICAg
ICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lSnVtcHM7CkBAIC00NDc0LDggKzQ0NzUsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNoaWxkMSgpLT5zaG91
bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZh
bHVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KAorICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOwogICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAgICAg
REZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVNvdXJjZSh2YWx1ZUdQUiksIG5vZGUtPmNoaWxkMSgpLCBT
cGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJpbmdTdHJpbmcoKSksIHJlc3VsdEdQUik7
CkBAIC01MDI1LDcgKzUwMjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIo
R1BSUmVnCiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQogICAgICAgICBp
c05vdENlbGwgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHZhbHVl
R1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAg
ZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BS
LCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlO
b3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CiAgICAgc3Rv
cmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAg
ICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0KTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2NDcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OTgsOSArNjk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcnJheShOb2RlKiBubwogICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6IHsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BS
ID0gdGVtcC5ncHIoKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0
ZW1wR1BSKTsKLSAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cEdQUiwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIpOworICAgICAg
ICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6Omlu
ZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
CiAgICAgICAgICAgICBCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCAwLAogICAgICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZSh0
ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwpAQCAtNzA5LDE4ICs3MDcsMjkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlKiBubwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKLSAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8g
PSBBcmd1bWVudHM6OmluZm8oKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUs
CisgICAgICAgICAgICBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50c1R5cGUpKSk7CisKKyAgICAgICAg
bm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CisgICAgICAgIHJldHVybjsKICAgICBkZWZhdWx0Ogot
ICAgICAgICBleHBlY3RlZENsYXNzSW5mbyA9IGNsYXNzSW5mb0ZvclR5cGUobm9kZS0+YXJyYXlN
b2RlKCkudHlwZWRBcnJheVR5cGUoKSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBu
b2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUobm9k
ZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKSkpKSk7CisgICAgICAgIG5vUmVzdWx0KG1f
Y3VycmVudE5vZGUpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGV4cGVjdGVkQ2xhc3NJbmZvKTsKICAgICAKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKLSAgICBtX2ppdC5sb2FkUHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcC5ncHIoKSk7CisgICAg
R1BSVGVtcG9yYXJ5IHRlbXAyKHRoaXMpOworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGJh
c2VSZWcsIHRlbXAuZ3ByKCksIHRlbXAyLmdwcigpKTsKICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9k
ZSwKICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtNzUwLDE2ICs3NTksMTMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSogbm9kZQogICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKICAgICAKICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRv
U3RydWN0dXJlKSB7Ci0gICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hXZWFrUHRy
KAorICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwKICAgICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotICAg
ICAgICAKICAgICAgICAgbV9qaXQubG9hZDgoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0
ZW1wR1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpT
Q2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgCiAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChqdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKHRlbXBHUFIsIG5v
ZGUtPmFycmF5TW9kZSgpKSk7CiAgICAgfQpAQCAtMTEzMSwyNCArMTEzNywyNSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlmIChtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCAKLSAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JO
b2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKLSAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlT2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwogCi0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQuZW1pdExv
YWRTdHJ1Y3R1cmUob3AxR1BSLCBzdHJ1Y3R1cmVHUFIsIHRlbXAuZ3ByKCkpOwogICAgICAgICBp
ZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkg
ewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKQEAg
LTExNjAsMTAgKzExNjcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xl
T2JqZQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0
dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSkpOwogCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUob3AyR1BSLCBzdHJ1Y3R1cmVHUFIsIHRl
bXAuZ3ByKCkpOwogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5t
X3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIp
LCBub2RlLT5jaGlsZDIoKSwKQEAgLTExNzUsNyArMTE4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAKQEAgLTI1MjQsMTggKzI1
MzEsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRgogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VP
ZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBH
UFJSZWcgc2NyYXRjaFJlZykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
Rm9yT2JqZWN0KE5vZGUqLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQ
UlJlZyBzY3JhdGNoUmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhh
dCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2Ny
YXRjaFJlZyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAw
LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChzY3JhdGNoUmVnKSk7CisgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZkNlbGxOb3RPYmpl
Y3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVnIHdp
dGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2YWx1ZVJlZywgc2Ny
YXRjaFJlZyk7CiAgICAgCiAgICAgLy8gV2FsayB1cCB0aGUgcHJvdG90eXBlIGNoYWluIG9mIHRo
ZSB2YWx1ZSAoaW4gc2NyYXRjaFJlZyksIGNvbXBhcmluZyB0byBwcm90b3R5cGVSZWcuCiAgICAg
TWFjcm9Bc3NlbWJsZXI6OkxhYmVsIGxvb3AoJm1faml0KTsKLSAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShzY3JhdGNoUmVn
LCBzY3JhdGNoUmVnLCBzY3JhdGNoMlJlZyk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBtX2pp
dC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjpw
cm90b3R5cGVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGlzSW5zdGFuY2UgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHNjcmF0
Y2hSZWcsIHByb3RvdHlwZVJlZyk7CkBAIC0yNTc0LDkgKzI1ODAsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHBy
b3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CiAgICAgICAg
IAogICAgICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigpOwogICAgICAg
ICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CisgICAgICAgIEdQUlJlZyBzY3Jh
dGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKQEAgLTI1OTMsNyArMjYwMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAgCiAg
ICAgICAgIGlzQ2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIAotICAgICAgICBjb21waWxlSW5z
dGFuY2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVn
KTsKKyAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVSZWcsIHBy
b3RvdHlwZVJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwogICAgICAgICAKICAgICAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTI2MDksMTIgKzI2MTcsMTQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHBy
b3RvdHlwZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgIAogICAg
IEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyBwcm90b3R5cGVSZWcg
PSBwcm90b3R5cGUuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigp
OworICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0Y2gyLmdwcigpOwogICAgIAotICAgIGNv
bXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNj
cmF0Y2hSZWcpOworICAgIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVn
LCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0Y2gyUmVnKTsKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAganNWYWx1ZVJlc3VsdChzY3JhdGNoUmVnLCBub2RlLCBEYXRhRm9ybWF0SlNC
b29sZWFuKTsKQEAgLTQzNjIsMTAgKzQzNzIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT25DZQogICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6IHsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQ
dHIoCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKworICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmlu
ZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpF
cXVhbCwgCisgICAgICAgICAgICByZXN1bHRHUFIsCisgICAgICAgICAgICBtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlU3RyaW5n
T2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOwogICAgICAgICAK
QEAgLTQzOTIsMTAgKzQ0MDQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3Ry
aW5nT25DZQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBkb25lOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNw
ZWNTdHJpbmcpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5lZWRDYWxsID0gbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENhbGwgPSBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5lZWRDYWxsLmxpbmsoJm1faml0KTsKQEAgLTQ1
OTYsMTAgKzQ2MDgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVk
ZwogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgR1BS
UmVnIGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJy
YW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjdChF
ZGdlIGVkZ2UpCkBAIC00NjA4LDE0ICs0NjIwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZUZpbmFsT2JqZWMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVy
ZSh0aGlzKTsKICAgICBHUFJSZWcgZ3ByID0gb3BlcmFuZC5ncHIoKTsKLSAgICBHUFJSZWcgc3Ry
dWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJl
R1BSKTsKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoZ3ByKSwgZWRnZSwgU3BlY0ZpbmFsT2JqZWN0LCBtX2ppdC5icmFuY2g4KAogICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RU
eXBlKSkpOwogfQogCkBAIC00NjMyLDEwICs0NjQxLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3By
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
Z3ByLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7
CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJl
LmdldCgpKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
ICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNUeXBlQ2hlY2soZWRnZSwg
U3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CkBAIC00NjU1LDEwICs0NjY0LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3RDZWxsID0KICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgREZHX1RZ
UEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIGVkZ2Us
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICBKU1Zh
bHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKGVk
Z2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAtNDY3OCwxMCArNDY4NywxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQ
RV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2Us
IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVn
IHN0cmluZywgR1BSUmVnIHN0b3JhZ2UpCkBAIC00NzM0LDcgKzQ3NDMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZVN0cmluZ09iamVjdChFZGdlIGVkZ2UsIEdQUlJlZyBncHIpCiB7Ci0gICAgc3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdw
ciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShlZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDc2MCwxNiArNDc2OSwxNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPclN0CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQu
Z3ByKCk7CiAgICAgaWYgKCFuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjU3RyaW5nIHwgU3BlY1N0
cmluZ09iamVjdCkpCiAgICAgICAgIHJldHVybjsKKworICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1
cmVJRCh0aGlzKTsKKyAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5ncHIo
KTsKKworICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCisgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCisgICAgICAgIEpJVENv
bXBpbGVyOjpFcXVhbCwKKyAgICAgICAgc3RydWN0dXJlSURHUFIsIAorICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAotICAgIEdQUlRlbXBvcmFyeSBzdHJ1
Y3R1cmUodGhpcyk7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsK
LSAgICAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7Ci0gICAgCi0gICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hQdHIoCi0gICAgICAgIEpJVENvbXBpbGVy
OjpFcXVhbCwgc3RydWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpOwotICAgIAotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVj
dHVyZShlZGdlLCBzdHJ1Y3R1cmVHUFIpOworICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0
cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmVJREdQUik7CiAgICAgCiAgICAgaXNTdHJpbmcubGluaygm
bV9qaXQpOwogICAgIApAQCAtNTAzNCwxMCArNTA0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoQ2hhcihOb2RlCiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5j
aCgKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1faml0LmJyYW5j
aFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
Ci0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5
bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAgICBkYXRhLT5m
YWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNoQ2hhclN0cmlu
Z0p1bXAoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBHUFIpOwpAQCAtNTMzNCwxMCAr
NTM0NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5vCiAjZW5k
aWYKICAgICAgICAgCiAgICAgICAgIGFkZEJyYW5jaCgKLSAgICAgICAgICAgIG1faml0LmJyYW5j
aFB0cigKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AxUmVncy5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLAorICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVy
ZS5nZXQoKSksCiAgICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAg
IAogICAgICAgICBlbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVncy5wYXlsb2Fk
R1BSKCkpOwpAQCAtNTQyNiwzMCArNTQzNiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RvcmVCYXJyaWVyCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLUpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0
LCBHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKQorSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBvd25lcikKIHsKLSAgICBqaXQubW92ZShvd25lciwgc2NyYXRjaDEp
OwotICAgIGppdC5tb3ZlKG93bmVyLCBzY3JhdGNoMik7Ci0KLSAgICBqaXQuYW5kUHRyKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNo
MSk7Ci0gICAgaml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih+TWFya2Vk
QmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gyKTsKLQotICAgIC8vIFNoaWZ0IGluZGV4Ci0jaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICBqaXQucnNoaWZ0NjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihNYXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRl
U2hpZnRBbW91bnQpLCBzY3JhdGNoMik7Ci0jZWxzZQotICAgIGppdC5yc2hpZnQzMihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91bnQgKyBNYXJr
ZWRCbG9jazo6bWFya0J5dGVTaGlmdEFtb3VudCksIHNjcmF0Y2gyKTsKLSNlbmRpZgotCi0gICAg
Ly8gRW1pdCBsb2FkIGFuZCBicmFuY2gKLSAgICByZXR1cm4gaml0LmJyYW5jaFRlc3Q4KE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2gxLCBzY3Jh
dGNoMiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJr
cygpKSk7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkpKTsK
IH0KIAogSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJp
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpCiB7Ci0gICAgTWFya2VkQmxvY2sq
IGJsb2NrID0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKG93bmVyKTsKLSAgICBzaXplX3QgbWFya0lu
ZGV4ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90Pihvd25lcikgJiB+TWFya2VkQmxvY2s6OmJs
b2NrTWFzaykgPj4gKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91bnQgKyBNYXJrZWRCbG9jazo6
bWFya0J5dGVTaGlmdEFtb3VudCk7Ci0gICAgdWludDhfdCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDhfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSArIE1hcmtlZEJs
b2NrOjpvZmZzZXRPZk1hcmtzKCkpICsgbWFya0luZGV4OworICAgIHVpbnQ4X3QqIGFkZHJlc3Mg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihvd25lcikgKyBKU0NlbGw6OmdjRGF0YU9mZnNl
dCgpOwogICAgIHJldHVybiBqaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1h
Y3JvQXNzZW1ibGVyOjpBYnNvbHV0ZUFkZHJlc3MoYWRkcmVzcykpOwogfQogCkBAIC01NTA5LDE0
ICs1NTAzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAg
ICBpZiAoSGVhcDo6aXNNYXJrZWQodmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKSVRD
b21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRlQmFycmllciht
X2ppdCwgb3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29tcGlsZXI6Okp1
bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVy
R1BSKTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwg
c2NyYXRjaDIpOwogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOwogfQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyR1BSLCBHUFJSZWcg
c2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMikKIHsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBkZWZp
bml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRlQmFycmllcihtX2ppdCwgb3duZXJHUFIsIHNj
cmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1h
cmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BSKTsKICAgICBzdG9yZVRv
V3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOwogICAgIGRl
ZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY0NzI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVUb1dyaXRlQmFy
cmllckJ1ZmZlcihHUFJSZWcgY2VsbCwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIp
OwogICAgIHZvaWQgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihKU0NlbGwqLCBHUFJSZWcgc2Ny
YXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CiAKLSAgICBzdGF0aWMgSklUQ29tcGlsZXI6Okp1bXAg
Z2VuZXJpY1dyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJS
ZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMik7CisgICAgc3RhdGljIEpJVENvbXBpbGVyOjpK
dW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBvd25lcik7
CiAgICAgc3RhdGljIEpJVENvbXBpbGVyOjpKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxI
ZWxwZXJzJiBqaXQsIEpTQ2VsbCogb3duZXIpOwogICAgIHZvaWQgd3JpdGVCYXJyaWVyKEdQUlJl
ZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpOwogICAgIHZvaWQgd3Jp
dGVCYXJyaWVyKEdQUlJlZyBvd25lciwgSlNDZWxsKiB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gxLCBH
UFJSZWcgc2NyYXRjaDIpOwpAQCAtNzM5LDcgKzczOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5v
blNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxz
ZSk7CiAgICAgYm9vbCBub25TcGVjdWxhdGl2ZVN0cmljdEVxKE5vZGUqLCBib29sIGludmVydCA9
IGZhbHNlKTsKICAgICAKLSAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUq
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5k
UmVzdWx0UmVnKTsKKyAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUqLCBH
UFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoQW5kUmVz
dWx0UmVnLCBHUFJSZWcgc2NyYXRjaDJSZWcpOwogICAgIHZvaWQgY29tcGlsZUluc3RhbmNlT2Yo
Tm9kZSopOwogICAgIAogICAgIHB0cmRpZmZfdCBjYWxsZWVGcmFtZU9mZnNldChpbnQgbnVtQXJn
cykKQEAgLTIxMDUsNyArMjEwNSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBzbG93UGF0aDsKICAgICB9Ci0gICAgCisKICAgICAvLyBBbGxvY2F0b3IgZm9yIGEgY2VsbCBv
ZiBhIHNwZWNpZmljIHNpemUuCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVyZVR5cGU+
IC8vIFN0cnVjdHVyZVR5cGUgY2FuIGJlIEdQUiBvciBJbW1QdHIuCiAgICAgdm9pZCBlbWl0QWxs
b2NhdGVKU0NlbGwoR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIGFsbG9jYXRvckdQUiwgU3RydWN0
dXJlVHlwZSBzdHJ1Y3R1cmUsCkBAIC0yMTIwLDcgKzIxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1faml0LnN0b3JlUHRyKHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFsbG9j
YXRvckdQUiwgTWFya2VkQWxsb2NhdG9yOjpvZmZzZXRPZkZyZWVMaXN0SGVhZCgpKSk7CiAKICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgU3RydWN0dXJlLgotICAgICAgICBtX2pp
dC5zdG9yZVB0cihzdHJ1Y3R1cmUsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5lbWl0U3RvcmVTdHJ1
Y3R1cmVXaXRoVHlwZUluZm8oc3RydWN0dXJlLCByZXN1bHRHUFIsIHNjcmF0Y2hHUFIpOwogICAg
IH0KIAogICAgIC8vIEFsbG9jYXRvciBmb3IgYW4gb2JqZWN0IG9mIGEgc3BlY2lmaWMgc2l6ZS4K
QEAgLTMwNDUsOCArMzA0NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z09iamUKICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX2N1cnJlbnRLbm93blN0cnVj
dHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkgewog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgTm90U3RyaW5nT2JqZWN0LCBK
U1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIFRydXN0ZWRJ
bW1QdHIoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3Ry
dWN0dXJlTG9jYXRpb24sIHN0cmluZ09iamVjdFN0cnVjdHVyZSkpOwogICAgIH0KIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDE2
NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2lu
Y2x1ZGUgIkFQSVNoaW1zLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRGVm
ZXJHQy5oIgogI2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAg
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6QWJzdHJhY3RIZWFwUmVwbwogICAgIEZPUl9FQUNIX0FC
U1RSQUNUX0ZJRUxEKEFCU1RSQUNUX0ZJRUxEX0lOSVRJQUxJWkFUSU9OKQogI3VuZGVmIEFCU1RS
QUNUX0ZJRUxEX0lOSVRJQUxJWkFUSU9OCiAgICAgCi0gICAgLCBKU0NlbGxfZnJlZUxpc3ROZXh0
KEpTQ2VsbF9zdHJ1Y3R1cmUpCisgICAgLCBKU0NlbGxfZnJlZUxpc3ROZXh0KEpTQ2VsbF9zdHJ1
Y3R1cmVJRCkKICAgICAKICNkZWZpbmUgSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0lOSVRJQUxJWkFU
SU9OKG5hbWUsIG9mZnNldCwgc2l6ZSkgLCBuYW1lKGNvbnRleHQsICZyb290LCAjbmFtZSwgb2Zm
c2V0LCBzaXplKQogICAgIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChJTkRFWEVEX0FC
U1RSQUNUX0hFQVBfSU5JVElBTElaQVRJT04pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTY0
NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZl
clZpZXdfbW9kZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTW9kZSgpKSBcCiAgICAgbWFj
cm8oSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZW
ZWN0b3IoKSkgXAotICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmUsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfc3RydWN0dXJlSUQsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb0ZsYWdzLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF90eXBlSW5mb1R5cGUs
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhKU0NlbGxfaW5kZXhp
bmdUeXBlLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCisgICAgbWFjcm8oSlNDZWxs
X2djRGF0YSwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25f
ZXhlY3V0YWJsZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpIFwKICAgICBtYWNy
byhKU0Z1bmN0aW9uX3Njb3BlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSkgXAog
ICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRlcmZseSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgp
KSBcCkBAIC02MiwxMSArNjYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAg
ICAgbWFjcm8oTWFya2VkQmxvY2tfbWFya0JpdHMsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtz
KCkpIFwKICAgICBtYWNybyhTdHJpbmdJbXBsX2RhdGEsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQo
KSkgXAogICAgIG1hY3JvKFN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzLCBTdHJpbmdJbXBsOjpmbGFn
c09mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBT
dHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0
cnVjdHVyZV9pbmRleGluZ1R5cGUsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpIFwK
LSAgICBtYWNybyhTdHJ1Y3R1cmVfdHlwZUluZm9GbGFncywgU3RydWN0dXJlOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfdHlwZUluZm9UeXBlLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKQogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJT
VFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9w
ZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4p
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDAsMTIgKzE1NDAsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXhpdEtpbmQgPSBCYWRDYWNo
ZTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNl
bGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJ
RCA9IG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAg
ICAgIAogICAgICAgICBpZiAobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSkgewog
ICAgICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBqc1ZhbHVl
VmFsdWUoY2VsbCksIDAsCi0gICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJl
LCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSkpOworICAgICAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlKG1fbm9kZS0+c3Ry
dWN0dXJlU2V0KClbMF0pKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC0xNTU1LDE0ICsxNTU1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX25vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7ICsraSkgewog
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbmV4dFN0cnVjdHVyZSA9IEZUTF9ORVdfQkxPQ0sobV9v
dXQsICgiQ2hlY2tTdHJ1Y3R1cmUgbmV4dFN0cnVjdHVyZSIpKTsKICAgICAgICAgICAgIG1fb3V0
LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2lu
dGVyKG1fbm9kZS0+c3RydWN0dXJlU2V0KClbaV0pKSwKKyAgICAgICAgICAgICAgICBtX291dC5l
cXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ld
KSksCiAgICAgICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShuZXh0U3Ry
dWN0dXJlKSk7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3RydWN0dXJlKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgZXhpdEtp
bmQsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0
cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7Cisg
ICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShtX25v
ZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CkBAIC0xNjAyLDEwICsxNjAyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNp
Y0Jsb2NrIHVuZXhwZWN0ZWRTdHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkFycmF5
aWZ5VG9TdHJ1Y3R1cmUgdW5leHBlY3RlZCBzdHJ1Y3R1cmUiKSk7CiAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQXJyYXlpZnlUb1N0cnVj
dHVyZSBjb250aW51YXRpb24iKSk7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgc3RydWN0dXJl
ID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAg
ICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVy
ZSgpKSksCisgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVj
dHVyZShtX25vZGUtPnN0cnVjdHVyZSgpKSksCiAgICAgICAgICAgICByYXJlbHkodW5leHBlY3Rl
ZFN0cnVjdHVyZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAgIAogICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKHVuZXhwZWN0ZWRTdHJ1Y3R1cmUs
IGNvbnRpbnVhdGlvbik7CkBAIC0xNjQ2LDEwICsxNjQ2LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBzdHJ1Y3R1cmUgPSBtX291
dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CiAgICAgICAgIHNwZWN1
bGF0ZSgKICAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAw
LAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25v
ZGUtPnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJl
SUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xNjU4LDEwICsxNjU3LDE3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlUHV0U3RydWN0dXJlKCkKICAgICB7CiAgICAgICAgIG1fZnRsU3RhdGUu
aml0Q29kZS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9ncmFw
aC5tX3BsYW4sIGNvZGVCbG9jaygpLCBtX25vZGUpOwotICAgICAgICAKLSAgICAgICAgbV9vdXQu
c3RvcmVQdHIoCi0gICAgICAgICAgICB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhKCkubmV3U3RydWN0dXJlKSwKLSAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7CisKKyAgICAgICAgU3RydWN0dXJl
KiBvbGRTdHJ1Y3R1cmUgPSBtX25vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRhKCkucHJldmlv
dXNTdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbV9ub2RlLT5z
dHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3U3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLmlu
bGluZVR5cGVGbGFncygpKTsKKyAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8o
KS50eXBlKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CisKKyAgICAgICAg
TFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOyAKKyAgICAgICAgbV9vdXQu
c3RvcmUzMigKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobmV3U3RydWN0dXJlKSwKKyAgICAg
ICAgICAgIGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlUGhhbnRvbVB1dFN0cnVjdHVyZSgpCkBAIC0yNDY3LDcgKzI0NzMsNyBA
QCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5l
d0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBWYWx1ZUZyb21CbG9j
ayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KAotICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJl
KSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpKTsKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50UHRyKGFsbG9jYXRvciksIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgp
KTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CkBAIC0yNjQ0LDcgKzI2NTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGJ1dHRl
cmZseSA9IG1fb3V0LnN1YihlbmRPZlN0b3JhZ2UsIHBheWxvYWRTaXplKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEpTQXJyYXk+KAot
ICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwg
ZmFpbENhc2UpOworICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBmYWlsQ2Fz
ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIocHVibGljTGVuZ3Ro
LCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCk7CiAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZs
eV92ZWN0b3JMZW5ndGgpOwpAQCAtMjc0MSwxOCArMjc0NywxOCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdPYmplY3RVc2U6IHsKICAgICAgICAg
ICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAg
IExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZSk7CisgICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIo
Y2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBub3RTdHJpbmcgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlRvU3Ry
aW5nIFN0cmluZ09yU3RyaW5nT2JqZWN0IG5vdCBzdHJpbmcgY2FzZSIpKTsKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiVG9TdHJp
bmcgU3RyaW5nT3JTdHJpbmdPYmplY3QgY29udGludWF0aW9uIikpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzaW1wbGVSZXN1bHQgPSBtX291dC5hbmNob3IoY2Vs
bCk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9vdXQuZXF1
YWwoc3RydWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpLAorICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlELCBtX291dC5jb25z
dEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSksCiAgICAgICAgICAgICAgICAgdW5z
dXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShub3RTdHJpbmcpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcs
IGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1
Y3R1cmUobV9ub2RlLT5jaGlsZDEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKG1fbm9kZS0+Y2hpbGQxKCksIHN0cnVjdHVyZUlE
KTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHVuYm94ZWRSZXN1bHQgPSBtX291dC5hbmNo
b3IoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTV3JhcHBl
ck9iamVjdF9pbnRlcm5hbFZhbHVlKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CkBAIC0yNzg4LDggKzI3OTQsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVl
IGlzU3RyaW5nUHJlZGljYXRlOwogICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCktPnBy
ZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKICAgICAgICAgICAgICAgICBpc1N0cmluZ1ByZWRp
Y2F0ZSA9IG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHZh
bHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwK
KyAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVy
ZS0+aWQoKSkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgaXNTdHJpbmdQ
cmVkaWNhdGUgPSBtX291dC5ib29sZWFuRmFsc2U7CiAgICAgICAgICAgICBtX291dC5icmFuY2go
aXNTdHJpbmdQcmVkaWNhdGUsIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90U3RyaW5n
KSk7CkBAIC0yODY0LDcgKzI4NzAsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IGFsbG9jYXRlQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KCZhbGxvY2F0b3IpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpLAorICAgICAgICAgICAgdm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCks
CiAgICAgICAgICAgICBzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0
cihtX291dC5pbnRQdHJaZXJvLCByZXN1bHQsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwpAQCAt
MzA4MSwxMSArMzA4NywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgR2V0QnlJZFZhcmlhbnQg
dmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSB2YXJpYW50LnN0cnVjdHVyZVNldCgpLnNpemUoKTsgai0tOykgewogICAgICAgICAgICAgICAg
IGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAotICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRl
cih2YXJpYW50LnN0cnVjdHVyZVNldCgpW2pdKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpW2pd
KSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbigKLSAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIo
YmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7
CisgICAgICAgICAgICBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpLCBjYXNlcywgZXhpdCwgV2VpZ2h0KDApKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQubV9uZXh0QmxvY2s7CiAgICAgICAgIApAQCAtMzE0NywxMCAr
MzE1MywxMCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlh
bnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQgdmFyaWFudCA9
IGRhdGEudmFyaWFudHNbaV07CiAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgU3dpdGNoQ2FzZSh3ZWFrUG9pbnRlcih2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSwgYmxv
Y2tzW2ldLCBXZWlnaHQoMSkpKTsKKyAgICAgICAgICAgICAgICBTd2l0Y2hDYXNlKHdlYWtTdHJ1
Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICBt
X291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksIGNhc2VzLCBleGl0
LCBXZWlnaHQoMCkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7CiAgICAgICAgIAogICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJsb2NrOwogICAgICAgICAK
QEAgLTMxNzIsOCArMzE3OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIHN0b3JhZ2UgPSBzdG9yYWdlRm9yVHJhbnNpdGlvbigKICAgICAgICAgICAgICAg
ICAgICAgYmFzZSwgdmFyaWFudC5vZmZzZXQoKSwgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSwgdmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgbV9vdXQuc3RvcmVQdHIoCi0g
ICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpLCBi
YXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworCisgICAgICAgICAgICAgICAgQVNTRVJU
KHZhcmlhbnQub2xkU3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IHZhcmlhbnQubmV3U3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSB2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUo
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlE
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgc3RvcmVQcm9wZXJ0
eSh2YWx1ZSwgc3RvcmFnZSwgZGF0YS5pZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50Lm9mZnNldCgp
KTsKQEAgLTM5NDIsMTQgKzM5NTIsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0Lmxv
YWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlE
KTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2Vs
bCksIGVkZ2UsIGZpbHRlciwKLSAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZSwgbV9v
dXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAg
ICBtX291dC5lcXVhbChzdHJ1Y3R1cmVJRCwgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0
cnVjdHVyZS0+aWQoKSkpKTsKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgQmFkVHlw
ZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLm5vZGUoKSwKICAgICAgICAgICAgIG1fb3V0LnRl
c3ROb25aZXJvOCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVh
cHMuU3RydWN0dXJlX3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4
KGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAg
LTM5ODEsOCArMzk5MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRCb29sZWFuKG1fb3V0LnBoaShtX291dC5i
b29sZWFuLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CiAgICAgfQotICAgIAotICAgIExWYWx1
ZSBhbGxvY2F0ZUNlbGwoTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwgTEJhc2lj
QmxvY2sgc2xvd1BhdGgpCisKKyAgICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1ZSBhbGxvY2F0
b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMQmFzaWNCbG9jayBzbG93UGF0aCkKICAgICB7CiAg
ICAgICAgIExCYXNpY0Jsb2NrIHN1Y2Nlc3MgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIm9iamVj
dCBhbGxvY2F0aW9uIHN1Y2Nlc3MiKSk7CiAgICAgICAgIApAQCAtMzk5NywxMyArNDAwNywxNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQubG9hZFB0cihyZXN1bHQsIG1faGVhcHMuSlND
ZWxsX2ZyZWVMaXN0TmV4dCksCiAgICAgICAgICAgICBhbGxvY2F0b3IsIG1faGVhcHMuTWFya2Vk
QWxsb2NhdG9yX2ZyZWVMaXN0SGVhZCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0
cihzdHJ1Y3R1cmUsIHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAg
bV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKSksIHJlc3VsdCwg
bV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICBtX291dC5zdG9yZTgobV9vdXQu
Y29uc3RJbnQ4KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCByZXN1bHQsIG1faGVhcHMuSlND
ZWxsX2luZGV4aW5nVHlwZSk7CisgICAgICAgIG1fb3V0LnN0b3JlOChtX291dC5jb25zdEludDgo
c3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSksIHJlc3VsdCwgbV9oZWFwcy5KU0NlbGxfdHlw
ZUluZm9UeXBlKTsKKyAgICAgICAgbV9vdXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpLCByZXN1bHQsIG1faGVhcHMuSlNDZWxs
X3R5cGVJbmZvRmxhZ3MpOworICAgICAgICBtX291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KDAp
LCByZXN1bHQsIG1faGVhcHMuSlNDZWxsX2djRGF0YSk7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdCgKLSAg
ICAgICAgTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZs
eSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkK
ICAgICB7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoYWxsb2NhdG9yLCBz
dHJ1Y3R1cmUsIHNsb3dQYXRoKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoYnV0dGVyZmx5LCBy
ZXN1bHQsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKQEAgLTQwMTEsNyArNDAyNSw3IEBA
IHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZT4K
LSAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoTFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRl
cmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFN0
cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0
aCkKICAgICB7CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yOwogICAgICAgICBz
aXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlvblNpemUoMCk7CkBAIC00MDgwLDcgKzQw
OTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZW5kT2ZTdG9yYWdlLCBtX291dC5jb25zdElu
dFB0cihzaXplb2YoSlNWYWx1ZSkgKiB2ZWN0b3JMZW5ndGgpKTsKICAgICAgICAgCiAgICAgICAg
IExWYWx1ZSBvYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PigKLSAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOworICAgICAg
ICAgICAgc3RydWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihudW1FbGVtZW50cyksIGJ1dHRlcmZseSwg
bV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKTsKICAgICAgICAgbV9vdXQuc3RvcmUzMiht
X291dC5jb25zdEludDMyKHZlY3Rvckxlbmd0aCksIGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJm
bHlfdmVjdG9yTGVuZ3RoKTsKQEAgLTQyMTksOCArNDIzMyw4IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBGVExfVFlQRV9DSEVDSygKICAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICAgICAgbV9vdXQu
ZXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIodmFsdWUsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgICAgICBtX291
dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+aWQoKSkpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDIzMSwxOCArNDI0
NSwxOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbWFzcXVlcmFkZXNDYXNl
ID0KICAgICAgICAgICAgICAgICBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkVxdWFsTnVsbE9yVW5k
ZWZpbmVkIG1hc3F1ZXJhZGVzIGNhc2UiKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxf
c3RydWN0dXJlKTsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9v
dXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgbV9vdXQudGVzdE5vblplcm84KAotICAg
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0dXJl
X3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkOCh2YWx1ZSwg
bV9oZWFwcy5KU0NlbGxfdHlwZUluZm9GbGFncyksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSksCiAgICAgICAgICAgICAgICAgcmFy
ZWx5KG1hc3F1ZXJhZGVzQ2FzZSksIHVzdWFsbHkoY29udGludWF0aW9uKSk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1hc3F1ZXJhZGVzQ2FzZSwgcHJpbWl0aXZl
Q2FzZSk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2Fk
U3RydWN0dXJlKHZhbHVlKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0cy5hcHBl
bmQobV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAogICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLApAQCAtNTAwMyw4ICs1MDE3LDggQEAgcHJpdmF0ZToKICAg
ICBMVmFsdWUgaXNPYmplY3QoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9v
dXQubm90RXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVh
cHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0o
KS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90
U3RyaW5nKExWYWx1ZSBjZWxsKQpAQCAtNTAxNSw4ICs1MDI5LDggQEAgcHJpdmF0ZToKICAgICBM
VmFsdWUgaXNTdHJpbmcoTFZhbHVlIGNlbGwpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQu
ZXF1YWwoCi0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlND
ZWxsX3N0cnVjdHVyZUlEKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90T2JqZWN0
KExWYWx1ZSBjZWxsKQpAQCAtNTAzMCw5ICs1MDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKICAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czogewotICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9
IG1fb3V0LmxvYWQ4KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlKSwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9p
bmRleGluZ1R5cGUpOworICAgICAgICAgICAgTFZhbHVlIGluZGV4aW5nVHlwZSA9IG1fb3V0Lmxv
YWQ4KGNlbGwsIG1faGVhcHMuSlNDZWxsX2luZGV4aW5nVHlwZSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHN3aXRjaCAoYXJyYXlNb2RlLmFycmF5Q2xhc3MoKSkgewogICAgICAgICAgICAg
Y2FzZSBBcnJheTo6T3JpZ2luYWxBcnJheToKQEAgLTUwNjAsNyArNTA3Miw5IEBAIHByaXZhdGU6
CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGhhc0NsYXNzSW5mbyhjZWxsLCBjbGFzc0luZm9Gb3JUeXBlKGFycmF5TW9kZS50eXBl
ZEFycmF5VHlwZSgpKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vdXQuZXF1YWwoCisgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9UeXBlKSwg
CisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KHR5cGVGb3JUeXBlZEFycmF5VHlwZShh
cnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSkpKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAg
LTUwNjgsNyArNTA4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQu
ZXF1YWwoCiAgICAgICAgICAgICBtX291dC5sb2FkUHRyKAotICAgICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAg
ICBsb2FkU3RydWN0dXJlKGNlbGwpLAogICAgICAgICAgICAgICAgIG1faGVhcHMuU3RydWN0dXJl
X2NsYXNzSW5mbyksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihjbGFzc0luZm8pKTsK
ICAgICB9CkBAIC01MDc2LDkgKzUwOTAsNyBAQCBwcml2YXRlOgogICAgIExWYWx1ZSBpc1R5cGUo
TFZhbHVlIGNlbGwsIEpTVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVx
dWFsKAotICAgICAgICAgICAgbV9vdXQubG9hZDgoCi0gICAgICAgICAgICAgICAgbV9vdXQubG9h
ZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgICAgIG1f
aGVhcHMuU3RydWN0dXJlX3R5cGVJbmZvVHlwZSksCisgICAgICAgICAgICBtX291dC5sb2FkOChj
ZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb1R5cGUpLAogICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnQ4KHR5cGUpKTsKICAgICB9CiAgICAgCkBAIC01MTY1LDEzICs1MTc3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIG5vdFN0cmluZyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiU3BlY3VsYXRlIFN0cmluZ09yU3RyaW5nT2JqZWN0IG5vdCBzdHJpbmcgY2FzZSIpKTsKICAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJT
cGVjdWxhdGUgU3RyaW5nT3JTdHJpbmdPYmplY3QgY29udGludWF0aW9uIikpOwogICAgICAgICAK
LSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIobG93Q2VsbChlZGdlKSwg
bV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0g
bV9vdXQubG9hZDMyKGxvd0NlbGwoZWRnZSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsK
ICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJl
LCBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLAorICAgICAg
ICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1fb3V0LmNvbnN0SW50MzIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUtPmlkKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1
bnN1cmUobm90U3RyaW5nKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKG5vdFN0cmluZywgY29udGludWF0aW9uKTsKLSAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIHN0cnVjdHVyZSk7CisgICAgICAg
IHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKGVkZ2UsIHN0cnVjdHVyZUlEKTsK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC01MTgxLDEwICs1MTkzLDEw
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JDZWxs
KEVkZ2UgZWRnZSwgTFZhbHVlIGNlbGwpCiAgICAgewotICAgICAgICBzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJl
SUQoZWRnZSwgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJl
KEVkZ2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZSkKKyAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09i
amVjdEZvclN0cnVjdHVyZUlEKEVkZ2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZUlEKQogICAgIHsK
ICAgICAgICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQogICAgICAgICAgICAg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdP
YmplY3RTdHJ1Y3R1cmUoKTsKQEAgLTUxOTQsMjIgKzUyMDYsMjMgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgbm9W
YWx1ZSgpLCAwLAotICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9p
bnRlcihzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBtX291dC5ub3RFcXVh
bChzdHJ1Y3R1cmVJRCwgd2Vha1N0cnVjdHVyZShzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9iamVjdChFZGdlIGVkZ2UsIExW
YWx1ZSBjZWxsKQogICAgIHsKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQ
dHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKICAgICAgICAgRlRMX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNwZWNPYmplY3QsIAot
ICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCBtX291dC5jb25zdEludFB0cih2bSgp
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIG1fb3V0LmVxdWFsKAorICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJ
RCksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVy
ZS0+aWQoKSkpKTsKICAgICAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
SXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBz
cGVjdWxhdGUoCiAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2Uu
bm9kZSgpLAogICAgICAgICAgICAgbV9vdXQudGVzdE5vblplcm84KAotICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWQ4KHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfdHlwZUluZm9GbGFncyks
CisgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUlu
Zm9GbGFncyksCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ4KE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtNTI2NCwxMCArNTI3Nyw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgTFZhbHVlIGxvYWRNYXJrQnl0ZShMVmFsdWUgYmFzZSkKICAgICB7Ci0gICAg
ICAgIExWYWx1ZSBtYXJrZWRCbG9jayA9IG1fb3V0LmJpdEFuZChiYXNlLCBtX291dC5jb25zdElu
dDY0KE1hcmtlZEJsb2NrOjpibG9ja01hc2spKTsKLSAgICAgICAgTFZhbHVlIGJhc2VPZmZzZXQg
PSBtX291dC5iaXRBbmQoYmFzZSwgbV9vdXQuY29uc3RJbnQ2NCh+TWFya2VkQmxvY2s6OmJsb2Nr
TWFzaykpOwotICAgICAgICBMVmFsdWUgbWFya0J5dGVJbmRleCA9IG1fb3V0LmxTaHIoYmFzZU9m
ZnNldCwgbV9vdXQuY29uc3RJbnQ2NChNYXJrZWRCbG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFy
a2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRBbW91bnQpKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0Lmxv
YWQ4KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLk1hcmtlZEJsb2NrX21hcmtCaXRzLCBtYXJrZWRC
bG9jaywgbWFya0J5dGVJbmRleCwgU2NhbGVPbmUsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtz
KCkpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmxvYWQ4KGJhc2UsIG1faGVhcHMuSlNDZWxsX2dj
RGF0YSk7CiAgICAgfQogCiAgICAgdm9pZCBlbWl0U3RvcmVCYXJyaWVyKExWYWx1ZSBiYXNlLCBM
VmFsdWUgdmFsdWUsIEVkZ2UgdmFsdWVFZGdlKQpAQCAtNTczMiwxMiArNTc0MiwyNSBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMuYWRkTGF6
aWx5KHRhcmdldCk7CiAgICAgfQotICAgIAorCisgICAgTFZhbHVlIGxvYWRTdHJ1Y3R1cmUoTFZh
bHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgTFZhbHVlIHRhYmxlSW5kZXggPSBtX291dC5sb2Fk
MzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgTFZhbHVlIHRh
YmxlQmFzZSA9IG1fb3V0LmdldChtX291dC5jb25zdEludFB0cih2bSgpLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmJhc2UoKSkpOworICAgICAgICByZXR1cm4gbV9vdXQuZ2V0KG1fb3V0LmJhc2VJ
bmRleCh0YWJsZUJhc2UsIHRhYmxlSW5kZXgsIFNjYWxlRWlnaHQpKTsKKyAgICB9CisKICAgICBM
VmFsdWUgd2Vha1BvaW50ZXIoSlNDZWxsKiBwb2ludGVyKQogICAgIHsKICAgICAgICAgYWRkV2Vh
a1JlZmVyZW5jZShwb2ludGVyKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50UHRyKHBv
aW50ZXIpOwogICAgIH0KKworICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShzdHJ1Y3R1cmUpOworICAg
ICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkpOworICAgIH0KICAg
ICAKICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihMVmFsdWUgYmFzZSwgaW50IG9wZXJhbmQs
IHB0cmRpZmZfdCBvZmZzZXQgPSAwKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDkgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAg
ICAgICBpZiAoZXhpdC5tX2tpbmQgPT0gQmFkQ2FjaGUgfHwgZXhpdC5tX2tpbmQgPT0gQmFkSW5k
ZXhpbmdUeXBlKSB7CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5nZXRB
cnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotICAgICAgICAgICAgICAg
IGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgICAg
IGppdC5zdG9yZVB0cihHUFJJbmZvOjpyZWdUMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0
U2VlblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBqaXQubG9hZDgoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0
KCkpLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgICAgICAgICAgaml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKEdQUklu
Zm86OnJlZ1QxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7
CisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEp
OwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
MSksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQubHNoaWZ0MzIoR1BSSW5m
bzo6cmVnVDEsIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgICAgICAgICBqaXQub3IzMihHUFJJ
bmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUt
PmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDcgQEAgcHVibGljOgog
ICAgIExWYWx1ZSBsb2FkNjQoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxk
KSB7IHJldHVybiBsb2FkNjQoYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAgTFZhbHVlIGxv
YWRQdHIoTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0RmllbGQmIGZpZWxkKSB7IHJldHVybiBs
b2FkUHRyKGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2FkRG91YmxlKExW
YWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1cm4gbG9hZERvdWJs
ZShhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KKyAgICB2b2lkIHN0b3JlOChMVmFsdWUgdmFsdWUs
IExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBzdG9yZTgodmFsdWUs
IGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIHZvaWQgc3RvcmUzMihMVmFsdWUgdmFsdWUs
IExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBzdG9yZTMyKHZhbHVl
LCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICB2b2lkIHN0b3JlNjQoTFZhbHVlIHZhbHVl
LCBMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQpIHsgc3RvcmU2NCh2YWx1
ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAgICAgdm9pZCBzdG9yZVB0cihMVmFsdWUgdmFs
dWUsIExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyBzdG9yZVB0cih2
YWx1ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0Fzc2VydGlvbnMuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVD
VF9MT09LU19WQUxJRChjZWxsKSBkbyB7IFwKICAgICBSRUxFQVNFX0FTU0VSVChjZWxsKTtcCi0g
ICAgUkVMRUFTRV9BU1NFUlQoY2VsbC0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0
ZWRTdHJ1Y3R1cmUoKSA9PSBjZWxsLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRl
ZFN0cnVjdHVyZSgpLT51bnZhbGlkYXRlZFN0cnVjdHVyZSgpKTsgXAorICAgIFJFTEVBU0VfQVNT
RVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSA9PSBjZWxsLT5zdHJ1Y3R1cmUoKS0+
c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpKTsgXAogfSB3aGlsZSAoMCkKIAogI2RlZmluZSBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKG9iamVjdCwgY2xhc3NJbmZvKSBkbyB7XApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzcsNiArNDM3
LDcgQEAgdm9pZCBIZWFwOjpnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKAogICAgIEpTQ2Vs
bCoqIHJlZ2lzdGVyUm9vdHMgPSBzdGFja1Jvb3RzLnJvb3RzKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdGFja1Jvb3RDb3VudDsgaSsrKSB7CiAgICAgICAgIHNldE1hcmtlZChyZWdp
c3RlclJvb3RzW2ldKTsKKyAgICAgICAgcmVnaXN0ZXJSb290c1tpXS0+bWFyaygpOwogICAgICAg
ICByb290cy5hZGQocmVnaXN0ZXJSb290c1tpXSk7CiAgICAgfQogfQpAQCAtODU3LDYgKzg1OCw3
IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAKICAgICB7CiAgICAgICAgIEdDUEhBU0UoU3RvcEFs
bG9jYXRpb24pOworICAgICAgICBtX3N0cnVjdHVyZUlEVGFibGUuZmx1c2hPbGRUYWJsZXMoKTsK
ICAgICAgICAgbV9vYmplY3RTcGFjZS5zdG9wQWxsb2NhdGluZygpOwogICAgICAgICBpZiAobV9v
cGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQogICAgICAgICAgICAgbV9zdG9y
YWdlU3BhY2UuZGlkU3RhcnRGdWxsQ29sbGVjdGlvbigpOwpAQCAtMTExMCw4ICsxMTEyLDExIEBA
IHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnIKIHsKICNpZiBFTkFCTEUo
R0dDKQogICAgIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY29uc3RfY2FzdDxKU0NlbGwq
Pihmcm9tKSk7Ci0gICAgaWYgKCFmcm9tIHx8ICFpc01hcmtlZChmcm9tKSkKKyAgICBpZiAoIWZy
b20gfHwgIWZyb20tPmlzTWFya2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFmcm9tIHx8ICFpc01h
cmtlZChmcm9tKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKGlzTWFya2Vk
KGZyb20pKTsKICAgICBhZGRUb1JlbWVtYmVyZWRTZXQoZnJvbSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShmcm9tKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9u
IDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAjaW5jbHVk
ZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgogI2luY2x1ZGUgIldy
aXRlQmFycmllckJ1ZmZlci5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllclN1cHBvcnQuaCIKQEAg
LTIwMSw2ICsyMDIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNEZWZlcnJlZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9kZWZlcnJhbERlcHRoIHx8IE9wdGlvbnM6
OmRpc2FibGVHQygpOyB9CiAKKyAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9y
KCk7CisgICAgICAgIFN0cnVjdHVyZUlEVGFibGUmIHN0cnVjdHVyZUlEVGFibGUoKSB7IHJldHVy
biBtX3N0cnVjdHVyZUlEVGFibGU7IH0KKwogI2lmIFVTRShDRikKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdm9pZCByZWxlYXNlU29vbihSZXRhaW5QdHI8VD4mJik7CiAjZW5kaWYKQEAg
LTI1OSw3ICsyNjMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IHNpemVBZnRl
ckNvbGxlY3QoKTsKIAogICAgICAgICBKU1N0YWNrJiBzdGFjaygpOwotICAgICAgICBCbG9ja0Fs
bG9jYXRvciYgYmxvY2tBbGxvY2F0b3IoKTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgaW5jcmVtZW50RGVmZXJyYWxEZXB0aCgpOwogICAgICAgICB2b2lkIGRlY3Jl
bWVudERlZmVycmFsRGVwdGgoKTsKQEAgLTI4MCw2ICsyODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIEhlYXBPcGVyYXRpb24gbV9vcGVyYXRpb25JblByb2dyZXNzOwog
ICAgICAgICBCbG9ja0FsbG9jYXRvciBtX2Jsb2NrQWxsb2NhdG9yOworICAgICAgICBTdHJ1Y3R1
cmVJRFRhYmxlIG1fc3RydWN0dXJlSURUYWJsZTsKICAgICAgICAgTWFya2VkU3BhY2UgbV9vYmpl
Y3RTcGFjZTsKICAgICAgICAgQ29waWVkU3BhY2UgbV9zdG9yYWdlU3BhY2U7CiAgICAgICAgIEdD
SW5jb21pbmdSZWZDb3VudGVkU2V0PEFycmF5QnVmZmVyPiBtX2FycmF5QnVmZmVyczsKQEAgLTM5
MywxOCArMzk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBpbmxp
bmUgdm9pZCBIZWFwOjp3cml0ZUJhcnJpZXIoY29uc3QgSlNDZWxsKiBmcm9tLCBKU0NlbGwqIHRv
KQotICAgIHsKLSNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCi0gICAgICAgIFdy
aXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdyaXRlQmFycmllcigpOwotI2VuZGlmCi0gICAgICAg
IGlmICghZnJvbSB8fCAhaXNNYXJrZWQoZnJvbSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmICghdG8gfHwgaXNNYXJrZWQodG8pKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBhZGRUb1JlbWVtYmVyZWRTZXQoZnJvbSk7Ci0gICAgfQotCiAgICAgaW5saW5lIHZvaWQgSGVh
cDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwgSlNWYWx1ZSB0bykKICAgICB7CiAj
aWYgRU5BQkxFKFdSSVRFX0JBUlJJRVJfUFJPRklMSU5HKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsMjAg
KzI0NCwyMiBAQCBpbmxpbmUgdm9pZCogTWFya2VkU3BhY2U6OmFsbG9jYXRlV2l0aE5vCiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJu
VHlwZSBNYXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJlY2lzZUNvdW50OyArK2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2Uu
cHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVu
Y3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UucHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0KLQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkgeworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKICAgICAgICAgbV9ub3JtYWxTcGFjZS5p
bXByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2so
ZnVuY3Rvcik7Ci0gICAgICAgIG1faW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1w
cmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQotCiAgICAg
bV9ub3JtYWxTcGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX25v
cm1hbERlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVu
Y3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXByZWNpc2VDb3VudDsgKytpKQor
ICAgICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5pbXByZWNpc2VBbGxvY2F0b3JzW2ldLmZv
ckVhY2hCbG9jayhmdW5jdG9yKTsKICAgICBtX25vcm1hbERlc3RydWN0b3JTcGFjZS5sYXJnZUFs
bG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHByZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1
Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhmdW5jdG9yKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyArK2kpCisgICAgICAgIG1f
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5m
b3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JT
cGFjZS5sYXJnZUFsbG9jYXRvci5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAKICAgICByZXR1cm4g
ZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
bG90VmlzaXRvci5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw4IEBAIHB1Ymxp
YzoKIAogICAgIE1hcmtTdGFja0FycmF5JiBtYXJrU3RhY2soKSB7IHJldHVybiBtX3N0YWNrOyB9
CiAKKyAgICBWTSYgdm0oKTsKKyAgICBjb25zdCBWTSYgdm0oKSBjb25zdDsKICAgICBIZWFwKiBo
ZWFwKCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJ
KHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOSArMTA4LDEyIEBAIEFMV0FZU19J
TkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6aW50ZXJuYWwKICNpZiBFTkFCTEUoR0NfVkFMSURBVElP
TikKICAgICB2YWxpZGF0ZShjZWxsKTsKICNlbmRpZgotICAgIGlmIChIZWFwOjp0ZXN0QW5kU2V0
TWFya2VkKGNlbGwpIHx8ICFjZWxsLT5zdHJ1Y3R1cmUoKSkKKyAgICBpZiAoSGVhcDo6dGVzdEFu
ZFNldE1hcmtlZChjZWxsKSB8fCAhY2VsbC0+c3RydWN0dXJlKCkpIHsKKyAgICAgICAgQVNTRVJU
KGNlbGwtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIGNlbGwt
Pm1hcmsoKTsKICAgICBtX2J5dGVzVmlzaXRlZCArPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IoY2Vs
bCktPmNlbGxTaXplKCk7CiAgICAgICAgIAogICAgIE1BUktfTE9HX0NISUxEKCp0aGlzLCBjZWxs
KTsKQEAgLTI3OSw2ICsyODIsMTYgQEAgaW5saW5lIEhlYXAqIFNsb3RWaXNpdG9yOjpoZWFwKCkg
Y29uc3QKICAgICByZXR1cm4gJnNoYXJlZERhdGEoKS5tX3ZtLT5oZWFwOwogfQogCitpbmxpbmUg
Vk0mIFNsb3RWaXNpdG9yOjp2bSgpCit7CisgICAgcmV0dXJuICpzaGFyZWREYXRhKCkubV92bTsK
K30KKworaW5saW5lIGNvbnN0IFZNJiBTbG90VmlzaXRvcjo6dm0oKSBjb25zdAoreworICAgIHJl
dHVybiAqc2hhcmVkRGF0YSgpLm1fdm07Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gU2xvdFZpc2l0b3JJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDkg
KzI4Niw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHBheWxvYWRGb3Ioc3RhdGljX2Nhc3Q8
VmlydHVhbFJlZ2lzdGVyPihvcGVyYW5kKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hJZk5v
dE9iamVjdChHUFJSZWcgc3RydWN0dXJlUmVnKQorICAgIEp1bXAgYnJhbmNoSWZDZWxsTm90T2Jq
ZWN0KEdQUlJlZyBjZWxsUmVnKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3cs
IEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3cs
IEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJ
bW0zMihPYmplY3RUeXBlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIEdQUlJlZyBzZWxlY3RTY3Jh
dGNoR1BSKEdQUlJlZyBwcmVzZXJ2ZTEgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUy
ID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMyA9IEludmFsaWRHUFJSZWcsIEdQUlJl
ZyBwcmVzZXJ2ZTQgPSBJbnZhbGlkR1BSUmVnKQpAQCAtMzg3LDIxICszODcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBqaXRBc3NlcnRBcmd1bWVudENvdW50U2FuZSgpIHsgfQogI2VuZGlmCiAKLSAg
ICBKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaDEs
IEdQUlJlZyBzY3JhdGNoMikKKyAgICBKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoR1BSUmVnIG93
bmVyKQogICAgIHsKLSAgICAgICAgbW92ZShvd25lciwgc2NyYXRjaDEpOwotICAgICAgICBtb3Zl
KG93bmVyLCBzY3JhdGNoMik7Ci0gICAgCi0gICAgICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKE1h
cmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNoMSk7Ci0gICAgICAgIGFuZFB0cihUcnVzdGVk
SW1tUHRyKH5NYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRjaDIpOwotICAgIAotI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgICAgIHJzaGlmdDY0KFRydXN0ZWRJbW0zMihNYXJrZWRCbG9jazo6
YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRBbW91bnQpLCBzY3Jh
dGNoMik7Ci0jZWxzZQotICAgICAgICByc2hpZnQzMihUcnVzdGVkSW1tMzIoTWFya2VkQmxvY2s6
OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNoaWZ0QW1vdW50KSwgc2Ny
YXRjaDIpOwotI2VuZGlmCi0gICAgCi0gICAgICAgIHJldHVybiBicmFuY2hUZXN0OChaZXJvLCBC
YXNlSW5kZXgoc2NyYXRjaDEsIHNjcmF0Y2gyLCBUaW1lc09uZSwgTWFya2VkQmxvY2s6Om9mZnNl
dE9mTWFya3MoKSkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhv
d25lciwgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKSkpOwogICAgIH0KIAogICAgIC8vIFRoZXNlIG1l
dGhvZHMgY29udmVydCBiZXR3ZWVuIGRvdWJsZXMsIGFuZCBkb3VibGVzIGJveGVkIGFuZCBKU1Zh
bHVlcy4KQEAgLTU1OSw2ICs1NDcsNzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb2Zmc2V0
T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKICAg
ICB9CiAKKyAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFJlZ2lzdGVySUQgc291cmNlLCBSZWdp
c3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2
NCkKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisgICAgICAgIGxvYWRQdHIodm0oKS0+aGVh
cC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBzY3JhdGNoKTsKKyAgICAgICAgbG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNjcmF0Y2gsIGRlc3QsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0VpZ2h0KSwgZGVzdCk7CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7
CisgICAgICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc291cmNlLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIHN0YXRp
YyB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKEFzc2VtYmx5SGVscGVycyYgaml0LCBSZWdpc3RlcklE
IGJhc2UsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQorICAgIHsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3QpOworICAgICAgICBqaXQu
bG9hZFB0cihqaXQudm0oKS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYmFzZSgpLCBzY3JhdGNo
KTsKKyAgICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3JhdGNo
LCBkZXN0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3QpOworI2Vsc2UKKyAgICAg
ICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBkZXN0KTsK
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZv
KFRydXN0ZWRJbW1QdHIgc3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQpCisg
ICAgeworICAgICAgICBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oKnRoaXMsIHN0cnVj
dHVyZSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCBlbWl0U3RvcmVTdHJ1Y3R1cmVXaXRoVHlw
ZUluZm8oUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoKQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBsb2FkNjQoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmU2NChzY3JhdGNoLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbHNlCisgICAg
ICAgIC8vIFN0b3JlIGFsbCB0aGUgaW5mbyBmbGFncyB1c2luZyBhIHNpbmdsZSAzMi1iaXQgd2lk
ZSBsb2FkIGFuZCBzdG9yZS4KKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOwor
ICAgICAgICBzdG9yZTMyKHNjcmF0Y2gsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpT
Q2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKworICAgICAgICAvLyBTdG9yZSB0aGUgU3Ry
dWN0dXJlSUQKKyAgICAgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0K
KworICAgIHN0YXRpYyB2b2lkIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhBc3NlbWJs
eUhlbHBlcnMmIGppdCwgVHJ1c3RlZEltbVB0ciBzdHJ1Y3R1cmUsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlUHRyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgU3RydWN0dXJlKj4oc3RydWN0dXJlLm1fdmFsdWUpOworI2lmIFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGppdC5zdG9yZTY0KFRydXN0ZWRJbW02NChzdHJ1Y3R1cmVQdHItPmlkQmxv
YigpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBKdW1wIGNvcnJlY3RTdHJ1Y3R1cmUg
PSBqaXQuYnJhbmNoMzIoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPmlkKCkp
KTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdFN0cnVjdHVyZS5s
aW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEluZGV4aW5nVHlwZSA9IGppdC5icmFu
Y2g4KEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5n
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgY29ycmVjdEluZGV4aW5nVHlw
ZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdFR5cGUgPSBqaXQuYnJhbmNoOChF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPnR5cGVJbmZvKCkudHlwZSgpKSk7
CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RUeXBlLmxpbmsoJmpp
dCk7CisKKyAgICAgICAgSnVtcCBjb3JyZWN0RmxhZ3MgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygp
KSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7CisgICAgICAgIGNvcnJlY3RGbGFncy5saW5r
KCZqaXQpOworI2VuZGlmCisjZWxzZQorICAgICAgICAvLyBEbyBhIDMyLWJpdCB3aWRlIHN0b3Jl
IHRvIGluaXRpYWxpemUgdGhlIGNlbGwncyBmaWVsZHMuCisgICAgICAgIGppdC5zdG9yZTMyKFRy
dXN0ZWRJbW0zMihzdHJ1Y3R1cmVQdHItPm9iamVjdEluaXRpYWxpemF0aW9uQmxvYigpKSwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSkp
OworICAgICAgICBqaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyNlbmRpZgorICAgIH0KKwog
ICAgIHZvaWQgd3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJS
ZWcgc2NyYXRjaDIsIFdyaXRlQmFycmllclVzZUtpbmQgdXNlS2luZCkKICAgICB7CiAgICAgICAg
IFVOVVNFRF9QQVJBTShvd25lcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlz
aW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwNSw3ICszMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgZW1pdExvYWREb3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwog
ICAgICAgICB2b2lkIGVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJ
RCB2YWx1ZSk7Ci0gICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0
cnVjdHVyZVJlZyk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVnaXN0
ZXJJRCBjZWxsUmVnKTsKIAogICAgICAgICBKdW1wIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
ayhKU0NlbGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQgc2Ny
YXRjaCk7CiAgICAgICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKEpTQ2VsbCos
IFN0cnVjdHVyZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywg
UmVnaXN0ZXJJRCBzY3JhdGNoKTsKQEAgLTMxNCw3ICszMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZW51bSBXcml0ZUJhcnJpZXJNb2RlIHsgVW5jb25kaXRpb25hbFdyaXRlQmFycmll
ciwgU2hvdWxkRmlsdGVyVmFsdWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB9OwogICAgICAg
ICAvLyB2YWx1ZSByZWdpc3RlciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQgYmVmb3JlIGFueSBz
Y3JhdGNoIHJlZ2lzdGVycwogICAgICAgICAvLyBzbyBtYXkgc2FmZWx5IGJlIHRoZSBzYW1lIGFz
IGVpdGhlciBvZiB0aGUgc2NyYXRjaCByZWdpc3RlcnMuCi0gICAgICAgIEp1bXAgY2hlY2tNYXJr
V29yZChSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gxLCBSZWdpc3RlcklEIHNj
cmF0Y2gyKTsKKyAgICAgICAgSnVtcCBjaGVja01hcmtXb3JkKFJlZ2lzdGVySUQgb3duZXIpOwog
ICAgICAgICBKdW1wIGNoZWNrTWFya1dvcmQoSlNDZWxsKiBvd25lcik7CiAgICAgICAgIHZvaWQg
ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFy
cmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwg
dW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUpOwpAQCAtMzI4LDggKzMyOCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoVmFsdWVQ
cm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CiAgICAgICAgIHZvaWQgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwot
ICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVB
bmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKik7Ci0gICAg
ICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0ZXJJ
RCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CisgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhD
ZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5UHJvZmls
ZSopOworICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4
V2l0aENlbGwoUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJvZmlsZVN0b3JlVG9I
b2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIHZvaWQgZW1pdEFycmF5UHJv
ZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKik7CiAgICAgICAgIApAQCAt
MzY5LDYgKzM2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgZW51bSBG
aW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFsLCBLbm93bk5vdEZpbmFsIH07CiAKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IEp1bXAgYnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25k
aXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqKTsKKwogI2lmIFVTRShKU1ZBTFVFMzJf
NjQpCiAgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBvcDEs
IGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MCw4ICs3MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJ
bnMKIAogICAgIGVtaXRMb2FkKHJlc3VsdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIG5vdEpT
Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVtcElmTm90T2JqZWN0
KHJlZ1QyKTsKKyAgICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJl
Z1QwKTsKIAogICAgIGNoZWNrU3RhY2tQb2ludGVyQWxpZ25tZW50KCk7CiAgICAgZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKQEAgLTI2Niw4ICsyNjUsOCBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2Fs
bChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsICYmIHNo
b3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZz
ZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJl
Z1QxKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAg
ICAgIHN0b3JlUHRyKHJlZ1QxLCBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0g
Ml0udS5hcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCByZWdUMSk7CisgICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rpb25bT1BDT0RF
X0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0
cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgICAgICB9CiAg
ICAgCkBAIC0zNDIsNyArMzQxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNh
bGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRTdHJ1
Y3R1cmUpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoZXhw
ZWN0ZWRTdHJ1Y3R1cmUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZSgpKSwgVHJ1
c3RlZEltbVB0cihleHBlY3RlZEV4ZWN1dGFibGUpKSk7CiAgICAgCiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4oKSksIHJlZ1QxKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTY0NzI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg4LDggKzE4OCw4IEBAIHZvaWQgSklUOjpjb21waWxlT3BDYWxsKE9wY29kZUlEIG9wY29k
ZUkKICAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX2NhbGwgJiYgc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0
ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKICAg
ICAgICAgICAgIEp1bXAgZG9uZSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwotICAgICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDApOwotICAgICAgICAgICAgc3RvcmVQdHIocmVnVDAsIGluc3RydWN0aW9uW09QQ09ERV9M
RU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOworICAgICAgICAgICAgc3RvcmUzMihyZWdUMCwgaW5z
dHJ1Y3Rpb25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICAgICAgZG9uZS5saW5rKHRoaXMp
OwogICAgICAgICB9CiAgICAgCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlQ2xvc3VyZUNhbGwoQ2FsbAogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKIAogICAgIHNs
b3dDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lz
dGVyKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVk
U3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBleHBlY3Rl
ZFN0cnVjdHVyZSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBB
ZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJ
bW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxlKSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMCArMTAx
LDEwIEBAIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6ZmluYWxpemUoTGlua0J1ZmYKIAogdm9pZCBK
SVRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoQ2hlY2tzKE1hY3JvQXNzZW1ibGVyJiBq
aXQsIEdQUlJlZyBidXR0ZXJmbHkpCiB7Ci0gICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRj
aGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCisgICAgbV9zdHJ1Y3R1cmVDaGVjayA9IGppdC5wYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCgKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgbV9zdHJ1Y3R1cmVJbW0sIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBv
aW50ZXIpKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZS5wYXlsb2Fk
R1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIG1fc3RydWN0dXJl
SW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDApKTsKICAgICAKICAgICBtX3Byb3Bl
cnR5U3RvcmFnZUxvYWQgPSBqaXQuY29udmVydGlibGVMb2FkUHRyKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU09iamVjdDo6YnV0dGVyZmx5
T2Zmc2V0KCkpLCBidXR0ZXJmbHkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTY0NzI1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBKU1ZhbHVlUmVncyBt
X2Jhc2U7CiAgICAgSlNWYWx1ZVJlZ3MgbV92YWx1ZTsKICAgICAKLSAgICBNYWNyb0Fzc2VtYmxl
cjo6RGF0YUxhYmVsUHRyIG1fc3RydWN0dXJlSW1tOworICAgIE1hY3JvQXNzZW1ibGVyOjpEYXRh
TGFiZWwzMiBtX3N0cnVjdHVyZUltbTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVt
cCBtX3N0cnVjdHVyZUNoZWNrOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDb252ZXJ0aWJsZUxvYWRM
YWJlbCBtX3Byb3BlcnR5U3RvcmFnZUxvYWQ7CiAgICAgQXNzZW1ibGVyTGFiZWwgbV9sb2FkT3JT
dG9yZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lv
biAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0
R2V0RnJvbUNhbGxGCiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRMb2FkQ2hhcmFjdGVy
U3RyaW5nKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCwgSnVtcExpc3QmIGZhaWx1cmVz
KQogewotICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc3Jj
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShO
b3RFcXVhbCwgQWRkcmVzcyhzcmMsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3JjLCBUaHVua0hlbHBlcnM6OmpzU3Ry
aW5nTGVuZ3RoT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICBsb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ1ZhbHVlT2Zmc2V0
KCkpLCBkc3QpOwogICAgIGZhaWx1cmVzLmFwcGVuZChicmFuY2hUZXN0MzIoWmVybywgZHN0KSk7
CkBAIC01NTcsNyArNTU3LDcgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBK
SVQ6OgogCiBBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmNoZWNrU3RydWN0dXJlKFJlZ2lz
dGVySUQgcmVnLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gYnJhbmNoUHRy
KE5vdEVxdWFsLCBBZGRyZXNzKHJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0cnVjdHVyZShOb3RFcXVh
bCwgQWRkcmVzcyhyZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7
CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIGludCB2UmVnKQpAQCAtNjA1LDkg
KzYwNSw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd1RvSG8KICAgICBq
dW1wLmxpbmtUbyhtX2xhYmVsc1ttX2J5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXRdLCB0
aGlzKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90T2Jq
ZWN0KFJlZ2lzdGVySUQgc3RydWN0dXJlUmVnKQorQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklU
OjplbWl0SnVtcElmQ2VsbE5vdE9iamVjdChSZWdpc3RlcklEIGNlbGxSZWcpCiB7Ci0gICAgcmV0
dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICByZXR1cm4g
YnJhbmNoOChCZWxvdywgQWRkcmVzcyhjZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKIH0KIAogI2lmIEVOQUJMRShTQU1QTElO
R19GTEFHUykKQEAgLTY3OCwxMSArNjc4LDExIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9j
YXRlSlNPYmplY3QoUmUKICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0KSwgc2NyYXRjaCk7CiAg
ICAgc3RvcmVQdHIoc2NyYXRjaCwgQWRkcmVzcyhhbGxvY2F0b3IsIE1hcmtlZEFsbG9jYXRvcjo6
b2Zmc2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCi0gICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3Mgc3RydWN0dXJlCi0gICAgc3RvcmVQdHIoc3RydWN0dXJlLCBBZGRyZXNzKHJlc3VsdCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOwotCiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0
J3MgcHJvcGVydHkgc3RvcmFnZSBwb2ludGVyCiAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigw
KSwgQWRkcmVzcyhyZXN1bHQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkpOworCisgICAg
Ly8gaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlCisgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoKTsKIH0KIAogaW5saW5l
IHZvaWQgSklUOjplbWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSogdmFsdWVQcm9m
aWxlKQpAQCAtNzE4LDIyICs3MTgsMTkgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKAogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUobV9ieXRlY29kZU9mZnNldCk7
CiB9CiAKLWlubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZShSZWdpc3RlcklE
IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBBcnJheVByb2Zp
bGUqIGFycmF5UHJvZmlsZSkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZVdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUsIEFycmF5
UHJvZmlsZSogYXJyYXlQcm9maWxlKQogewotICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsgLy8g
V2UgaGFkIGZvdW5kIHRoaXMgc2NyYXRjaCByZWdpc3RlciB1c2VmdWwgaGVyZSBiZWZvcmUsIHNv
IEkgd2lsbCBrZWVwIGl0IGZvciBub3cuCi0gICAgCi0gICAgUmVnaXN0ZXJJRCBzdHJ1Y3R1cmUg
PSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7Ci0gICAgUmVnaXN0ZXJJRCBpbmRleGluZ1R5cGUg
PSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGU7Ci0gICAgCi0gICAgaWYgKHNob3VsZEVtaXRQcm9m
aWxpbmcoKSkKLSAgICAgICAgc3RvcmVQdHIoc3RydWN0dXJlLCBhcnJheVByb2ZpbGUtPmFkZHJl
c3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKKyAgICAgICAgbG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6
c3RydWN0dXJlSURPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CisgICAgICAgIHN0b3JlMzIoaW5k
ZXhpbmdUeXBlLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7
CisgICAgfQogCi0gICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBpbmRleGluZ1R5cGUpOworICAgIGxvYWQ4KEFkZHJlc3MoY2VsbCwg
SlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIGluZGV4aW5nVHlwZSk7CiB9CiAKLWlubGlu
ZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgoUmVnaXN0
ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJlZ2lzdGVySUQgc2NyYXRjaCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKK2lubGluZSB2b2lkIEpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgaW5k
ZXhpbmdUeXBlLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGUoc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBzY3JhdGNoLCBtX2NvZGVCbG9jay0+
Z2V0T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkpOworICAgIGVtaXRBcnJheVByb2Zp
bGluZ1NpdGVXaXRoQ2VsbChjZWxsLCBpbmRleGluZ1R5cGUsIG1fY29kZUJsb2NrLT5nZXRPckFk
ZEFycmF5UHJvZmlsZShieXRlY29kZUluZGV4KSk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1p
dEFycmF5UHJvZmlsZVN0b3JlVG9Ib2xlU3BlY2lhbENhc2UoQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUpCkBAIC0xMDgyLDYgKzEwNzksMjYgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1p
dFRhZ0FzQm9vbEltbQogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitKSVQ6Okp1bXAgSklUOjpicmFuY2hTdHJ1Y3R1cmUoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBicmFuY2gzMihjb25kaXRpb24sIGxl
ZnRIYW5kU2lkZSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOworI2Vsc2UKKyAgICBy
ZXR1cm4gYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOworI2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgYnJhbmNoU3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIE1hY3JvQXNz
ZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiwgVCBsZWZ0SGFuZFNpZGUsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgcmV0dXJuIGpp
dC5icmFuY2gzMihjb25kaXRpb24sIGxlZnRIYW5kU2lkZSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGppdC5icmFuY2hQ
dHIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSkpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDggKzIxMCw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5jZShJbnMKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZVZhbCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgdGhhdCBi
YXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwor
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTIzMCw4ICsyMjksNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlND
ZWxsKHByb3RvKTsKICAgICAKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmpl
Y3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMykpOwor
ICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QxKSk7CiAKICAgICAv
LyBPcHRpbWlzdGljYWxseSBsb2FkIHRoZSByZXN1bHQgdHJ1ZSwgYW5kIHN0YXJ0IGxvb3Bpbmcu
CiAgICAgLy8gSW5pdGlhbGx5LCByZWdUMSBzdGlsbCBjb250YWlucyBwcm90byBhbmQgcmVnVDIg
c3RpbGwgY29udGFpbnMgdmFsdWUuCkBAIC0yNDEsNyArMjM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgogCiAgICAgLy8gTG9hZCB0aGUgcHJvdG90eXBlIG9m
IHRoZSBjZWxsIGluIHJlZ1QyLiAgSWYgdGhpcyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAg
ICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdlJ3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVu
IGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBub3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwog
ICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDIpOwogICAg
IEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDIsIHJlZ1QxKTsKICAgICBi
cmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDIpLmxpbmtUbyhsb29wLCB0aGlzKTsKQEAgLTI5Nywx
MiArMjk1LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKICAg
ICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNDZWxsLmxpbmsodGhpcyk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEp
OwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVy
bywgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMCk7CiAgICAgSnVtcCBub3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogICAgIAogICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0ciht
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QxLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNv
bXBhcmUzMihFcXVhbCwgcmVnVDAsIHJlZ1QxLCByZWdUMCk7CkBAIC0zNDEsOCArMzM5LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKHZh
bHVlLCByZWdUMSwgcmVnVDApOwogICAgIEp1bXAgaXNOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIAotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsK
LSAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOworICAgIGNvbXBh
cmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgp
OwogICAgIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwpAQCAtMzgxLDcgKzM3OCw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAgICBlbWl0TG9hZChzcmMs
IHJlZ1QxLCByZWdUMCk7CiAKICAgICBKdW1wIGlzSW1tID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3JjKQpAQCAt
NTAxLDkgKzQ5OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0aW9uKiAK
IAogICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2Vs
bCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1
cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOwotICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNo
VGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1
YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdU
MCksIHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElzRm9yZWlnbiA9
IGp1bXAoKTsKQEAgLTUyNyw5ICs1MjMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwo
SW5zdHJ1Y3Rpb24qCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogCi0gICAgLy8gRmlyc3Qs
IGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBv
biB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5j
aFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgp
KSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Qy
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1
bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNTgzLDggKzU3OCw4IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKICAgICBnZW5lcmljQ2FzZS5hcHBlbmQo
Z2V0U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBlcXVhbAogCiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwKLSAgICBnZW5lcmljQ2FzZS5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAg
Z2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFwcGVu
ZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwog
CiAgICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJl
U3RyaW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02MjcsOCArNjIyLDggQEAgdm9pZCBKSVQ6OmVt
aXRTbG93X29wX25lcShJbnN0cnVjdGlvbiogYwogICAgIGdlbmVyaWNDYXNlLmFwcGVuZChnZXRT
bG93Q2FzZShpdGVyKSk7IC8vIHRhZ3Mgbm90IGVxdWFsCiAKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7IC8vIHRhZ3MgZXF1YWwgYW5kIEpTQ2VsbAotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKLSAgICBnZW5l
cmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0ciht
X3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAKICAg
ICAvLyBTdHJpbmcgY2FzZS4KICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
bmdFcSwgcmVnVDAsIHJlZ1QyKTsKQEAgLTY1OCw4ICs2NTMsOCBAQCB2b2lkIEpJVDo6Y29tcGls
ZU9wU3RyaWN0RXEoSW5zdHJ1Y3Rpb24qCiAKICAgICAvLyBKdW1wIHRvIGEgc2xvdyBjYXNlIGlm
IGJvdGggYXJlIHN0cmluZ3MuCiAgICAgSnVtcCBub3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWws
IHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIEp1bXAgZmlyc3RO
b3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOworICAgIEp1bXAgZmlyc3ROb3RTdHJpbmcgPSBicmFuY2hQdHIoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICBub3RD
ZWxsLmxpbmsodGhpcyk7CiAgICAgZmlyc3ROb3RTdHJpbmcubGluayh0aGlzKTsKIApAQCAtNzEw
LDEyICs3MDUsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiogYwog
ICAgIGVtaXRMb2FkKHNyYywgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW1tZWRpYXRlID0g
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVz
dDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCByZWdUMSk7CiAgICAg
SnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwogCiAgICAgaXNNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMCwgcmVnVDIsIHJlZ1QxKTsKQEAgLTc0MSwxMiAr
NzM2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKICAgICBl
bWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QyKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVnVDEpOwogICAgIEp1bXAg
d2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAg
IGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMSk7CkBAIC03ODUsMTAgKzc4
MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9wbmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0
TG9hZChiYXNlLCByZWdUMSwgcmVnVDApOwogICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25O
b3RJbW1lZGlhdGUoYmFzZSkpCiAgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGlm
IChWaXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8
IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGlzTm90
T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKSk7Ci0gICAgfQorICAgIGlm
IChWaXJ0dWFsUmVnaXN0ZXIoYmFzZSkgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpIHx8
IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5k
KGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAvLyBXZSBjb3VsZCBpbmxp
bmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0CiAgICAgLy8gdGhp
cyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC04NDEsNyArODM0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGxvYWRQdHIocGF5bG9hZEZv
cihiYXNlKSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
cmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBy
ZWdUMiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdz
IHByb3RvdHlwZSBjaGFpbgpAQCAtODUyLDcgKzg0NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX25l
eHRfcG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAg
ICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnRhZykpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVn
VDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhyZWdUMykpKTsKICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihTdHJ1
Y3R1cmUqKSksIHJlZ1QzKTsKICAgICBicmFuY2hUZXN0UHRyKE5vblplcm8sIEFkZHJlc3MocmVn
VDMpKS5saW5rVG8oY2hlY2tQcm90b3R5cGUsIHRoaXMpOwpAQCAtMTA5MSw4ICsxMDg0LDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiogYwogICAgIGVtaXRMb2FkKHRo
aXNSZWdpc3RlciwgcmVnVDMsIHJlZ1QyKTsKIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgbG9h
ZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwot
ICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0cnVjdHVy
ZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkp
OworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgcmVnVDApOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTY0NzI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTE4LDggKzExOCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NoZWNrX2hhc19pbnN0YW5j
ZShJbnMKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWYWwpOwog
CiAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlVmFsICdJbXBsZW1lbnRzSGFzSW5zdGFuY2UnLgotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qw
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1
Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3Q4KFplcm8sIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTEzOCw4ICsx
MzcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxLCBwcm90byk7CiAKICAgICAvLyBDaGVjayB0
aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1
bXBJZk5vdE9iamVjdChyZWdUMykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZDZWxsTm90
T2JqZWN0KHJlZ1QxKSk7CiAgICAgCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVz
dWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3Rp
bGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMTQ5
LDcgKzE0Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAog
ICAgIC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0IGluIHJlZ1QyLiAgSWYgdGhp
cyBpcyBlcXVhbCB0byByZWdUMSAtIFdJTiEKICAgICAvLyBPdGhlcndpc2UsIGNoZWNrIGlmIHdl
J3ZlIGhpdCBudWxsIC0gaWYgd2UgaGF2ZSB0aGVuIGRyb3Agb3V0IG9mIHRoZSBsb29wLCBpZiBu
b3QgZ28gYWdhaW4uCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QyLCByZWdUMiwg
cmVnVDMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9m
ZnNldCgpKSwgcmVnVDIpOwogICAgIEp1bXAgaXNJbnN0YW5jZSA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDIsIHJlZ1QxKTsKICAgICBlbWl0SnVtcElmSlNDZWxsKHJlZ1QyKS5saW5rVG8obG9vcCwg
dGhpcyk7CkBAIC0xNzQsMTIgKzE3MiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQoSW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5s
aW5rKHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJy
YW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBK
dW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDAp
OwogICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAoKTsKIAogICAgIGlz
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDEpOwogICAgIGNvbXBhcmVQdHIo
RXF1YWwsIHJlZ1QwLCByZWdUMSwgcmVnVDApOwpAQCAtMjIxLDggKzIxOSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX3N0cmluZyhJbnN0cnVjdGlvbioKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHZhbHVlLCByZWdUMCk7CiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVn
VDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5n
VHlwZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDAp
OwogICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOwogICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKICAgICAKQEAgLTI3Nyw4ICsyNzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXRfb2Jq
ZWN0X29yX3RoaXMoSW5zCiAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHQgaW4gJWVheC4KICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJl
dHVyblZhbHVlR1BSKTsKICAgICBKdW1wIG5vdEpTQ2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwo
cmV0dXJuVmFsdWVHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXR1cm5WYWx1ZUdQUiwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIG5vdE9iamVjdCA9IGVt
aXRKdW1wSWZOb3RPYmplY3QocmVnVDIpOworICAgIEp1bXAgbm90T2JqZWN0ID0gZW1pdEp1bXBJ
ZkNlbGxOb3RPYmplY3QocmV0dXJuVmFsdWVHUFIpOwogCiAgICAgLy8gUmV0dXJuLgogICAgIGVt
aXRGdW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC0zMDIsNyArMjk4LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fcHJpbWl0aXZlKEluc3RydWN0aQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
LCByZWdUMCk7CiAgICAgCiAgICAgSnVtcCBpc0ltbSA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVh
bCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBpc0ltbS5saW5r
KHRoaXMpOwogCiAgICAgaWYgKGRzdCAhPSBzcmMpCkBAIC0zNTMsOCArMzUxLDggQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfamVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIEp1bXAgaXNJbW1lZGlhdGUg
PSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKIAogICAgIC8vIEZpcnN0LCBoYW5kbGUgSlND
ZWxsIGNhc2VzIC0gY2hlY2sgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVj
dHVyZS4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFu
Y2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBp
c05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSk7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCBy
ZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSksIHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBK
dW1wIG1hc3F1ZXJhZGVzR2xvYmFsT2JqZWN0SXNGb3JlaWduID0ganVtcCgpOwpAQCAtMzc2LDgg
KzM3NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfbnVsbChJbnN0cnVjdGlvbioKICAgICBK
dW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKICAgICAvLyBG
aXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
Yml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGFkZEp1bXAoYnJhbmNoVGVzdDgoWmVy
bywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOworICAgIGFkZEp1bXAo
YnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpLCB0YXJnZXQpOwor
ICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRk
SnVtcChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFs
T2JqZWN0T2Zmc2V0KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCB3YXNOb3RJbW1lZGlh
dGUgPSBqdW1wKCk7CkBAIC00NzIsMTAgKzQ3MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9w
bmFtZXMoSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJhc2UsIHJlZ1Qw
KTsKICAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQogICAg
ICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwotICAg
IGlmIChiYXNlICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKS5vZmZzZXQoKSB8fCBtX2Nv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVj
dC5hcHBlbmQoZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoYmFz
ZSAhPSBtX2NvZGVCbG9jay0+dGhpc1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZkNl
bGxOb3RPYmplY3QocmVnVDApKTsKIAogICAgIC8vIFdlIGNvdWxkIGlubGluZSB0aGUgY2FzZSB3
aGVyZSB5b3UgaGF2ZSBhIHZhbGlkIGNhY2hlLCBidXQKICAgICAvLyB0aGlzIGNhbGwgZG9lc24n
dCBzZWVtIHRvIGJlIGhvdC4KQEAgLTUyOSw3ICs1MjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXh0X3BuYW1lKEluc3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCBy
ZWdUMCk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7CisgICAgZW1pdExv
YWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFw
cGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkp
KSkpOwogCiAgICAgLy8gVGVzdCBiYXNlJ3MgcHJvdG90eXBlIGNoYWluCkBAIC01NDAsNyArNTM2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIExhYmVs
IGNoZWNrUHJvdG90eXBlKHRoaXMpOwogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBl
bmQoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMikpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0TG9hZFN0cnVj
dHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QxKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRkUHRyKFRy
dXN0ZWRJbW0zMihzaXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNoVGVzdFB0
cihOb25aZXJvLCBBZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0aGlzKTsK
QEAgLTcxMCwxMiArNzA2LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rp
b24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsKICAgICBKdW1w
IGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAg
SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7
CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIHdhc05vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1Qx
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwgcmVnVDIs
IHJlZ1QwKTsKQEAgLTc0MiwxMiArNzM4LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9udWxs
KEluc3RydWN0aW9uKiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYzEsIHJlZ1QwKTsK
ICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAKLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25a
ZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKICAgICBKdW1wIHdh
c05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVn
VDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlUHRyKE5vdEVxdWFsLCBy
ZWdUMCwgcmVnVDIsIHJlZ1QwKTsKQEAgLTgxNSwxMSArODExLDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QxKTsKIAogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDApOwogCi0gICAgYWRkU2xvd0Nhc2UoYnJhbmNo
OChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJh
bmNoOChOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIFRydXN0ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgbG9hZFB0cihjYWNoZWRT
dHJ1Y3R1cmUsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJl
Z1QwLCByZWdUMikpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIp
KTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgcmVnVDIpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfY2FsbGVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC04OTMsNiArODkwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMoSW5zdHJ1
Y3RpbwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfdG9fdGhpcyk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTY0NzI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFs
bG9jYXRlU3QKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPiBiYXNlLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSA+IGJhc2UtPnN0cnVjdHVy
ZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCkpOwogICAgIEFTU0VSVCghdm0uaGVhcC5zdG9yYWdl
QWxsb2NhdG9yKCkuZmFzdFBhdGhTaG91bGRTdWNjZWVkKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2Fw
YWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKSkpOwogICAgIGJhc2UtPnNldFN0cnVjdHVyZUFuZFJl
YWxsb2NhdGVTdG9yYWdlSWZOZWNlc3Nhcnkodm0sIHN0cnVjdHVyZSk7CiAgICAgYmFzZS0+cHV0
RGlyZWN0KHZtLCBvZmZzZXQsIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSkpOwpAQCAtNDQ2LDYgKzQ0
Niw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZWFsbG9jYXRlU3QKIAogc3RhdGlj
IHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBK
U1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBWTSYgdm0gPSBjYWxsRnJh
bWUtPnZtKCk7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAg
ICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwogICAgICAgICBpZiAoYmFzZVZh
bHVlLmlzT2JqZWN0KCkpIHsKQEAgLTQ1Myw3ICs0NTQsNyBAQCBzdGF0aWMgdm9pZCBwdXRCeVZh
bChDYWxsRnJhbWUqIGNhbGxGcmFtCiAgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5TZXRJbmRl
eFF1aWNrbHkoaSkpCiAgICAgICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkoY2Fs
bEZyYW1lLT52bSgpLCBpLCB2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KG9iamVjdCwgY2FsbEZyYW1lLCBp
LCB2YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgICAg
ICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgY2Fs
bEZyYW1lLCBpLCB2YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJhc2VWYWx1ZS5wdXRCeUluZGV4KGNhbGxG
cmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsK
ICAgICB9IGVsc2UgaWYgKGlzTmFtZShzdWJzY3JpcHQpKSB7CkBAIC01MDMsOSArNTA0LDkgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsKEV4ZQogICAgICAgICBCeVZhbElu
Zm8mIGJ5VmFsSW5mbyA9IGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRCeVZhbEluZm8oYnl0ZWNvZGVP
ZmZzZXQgLSAxKTsKICAgICAgICAgQVNTRVJUKCFieVZhbEluZm8uc3R1YlJvdXRpbmUpOwogCi0g
ICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKCkpKSB7
CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKHZt
KSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBK
SVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+
c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFy
cmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAg
aWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAgICAgICAg
SklUOjpjb21waWxlUHV0QnlWYWwoJnZtLCBleGVjLT5jb2RlQmxvY2soKSwgJmJ5VmFsSW5mbywg
UmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBhcnJheU1vZGUpOwogICAgICAg
ICAgICAgICAgIGRpZE9wdGltaXplID0gdHJ1ZTsKQEAgLTUxOSw3ICs1MjAsNyBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWwoRXhlCiAgICAgICAgICAgICAvLyB3aGVyZSB3
ZSBzZWUgbm9uLWluZGV4LWludGVyY2VwdGluZyBvYmplY3RzLCB0aGlzIGdpdmVzIDEwIGl0ZXJh
dGlvbnMgd29ydGggb2YKICAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IGZvciB1cyB0byBvYnNl
cnZlIHRoYXQgdGhlIGdldF9ieV92YWwgbWF5IGJlIHBvbHltb3JwaGljLgogICAgICAgICAgICAg
aWYgKCsrYnlWYWxJbmZvLnNsb3dQYXRoQ291bnQgPj0gMTAKLSAgICAgICAgICAgICAgICB8fCBv
YmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgeworICAgICAgICAgICAgICAgIHx8
IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgICAgICAgICBSZXBhdGNo
QnVmZmVyIHJlcGF0Y2hCdWZmZXIoZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAg
IHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9V
Ul9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykp
OwpAQCAtNTQ5LDkgKzU1MCw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQ
dXRCeVYKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5nZXRCeVZhbEluZm8oYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICAgICAgQVNTRVJUKCFi
eVZhbEluZm8uc3R1YlJvdXRpbmUpOwogICAgICAgICAKLSAgICAgICAgaWYgKGhhc09wdGltaXph
YmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUoKSkpIHsKKyAgICAgICAgaWYgKGhhc09wdGlt
aXphYmxlSW5kZXhpbmcob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSkgewogICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byBvcHRpbWl6ZS4KLSAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUg
PSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9i
amVjdC0+c3RydWN0dXJlKHZtKSk7CiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlICE9IGJ5VmFs
SW5mby5hcnJheU1vZGUpIHsKICAgICAgICAgICAgICAgICBKSVQ6OmNvbXBpbGVEaXJlY3RQdXRC
eVZhbCgmdm0sIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCksICZieVZhbEluZm8sIFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgICAgICBk
aWRPcHRpbWl6ZSA9IHRydWU7CkBAIC01NjUsNyArNTY2LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VgogICAgICAgICAgICAgLy8gd2hlcmUgd2Ugc2VlIG5vbi1p
bmRleC1pbnRlcmNlcHRpbmcgb2JqZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRo
IG9mCiAgICAgICAgICAgICAvLyBvcHBvcnR1bml0eSBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRo
ZSBnZXRfYnlfdmFsIG1heSBiZSBwb2x5bW9ycGhpYy4KICAgICAgICAgICAgIGlmICgrK2J5VmFs
SW5mby5zbG93UGF0aENvdW50ID49IDEwCi0gICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2
ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKKyAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0
cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qg
ZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpOwogICAgICAgICAgICAgICAgIHJlcGF0
Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRV
Uk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYykp
OwpAQCAtNzgwLDExICs3ODEsMTIgQEAgc3RhdGljIGJvb2wgYXR0ZW1wdFRvT3B0aW1pemVDbG9z
dXJlQ2FsbAogICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKKyAgICBWTSYgdm0gPSBleGVjQ2FsbGVlLT52bSgpOwogICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwog
ICAgIEpTRnVuY3Rpb24qIG9sZENhbGxlZSA9IGNhbGxMaW5rSW5mby5jYWxsZWUuZ2V0KCk7CiAg
ICAgCiAgICAgaWYgKCFvbGRDYWxsZWUKLSAgICAgICAgfHwgb2xkQ2FsbGVlLT5zdHJ1Y3R1cmUo
KSAhPSBjYWxsZWUtPnN0cnVjdHVyZSgpCisgICAgICAgIHx8IG9sZENhbGxlZS0+c3RydWN0dXJl
KHZtKSAhPSBjYWxsZWUtPnN0cnVjdHVyZSh2bSkKICAgICAgICAgfHwgb2xkQ2FsbGVlLT5leGVj
dXRhYmxlKCkgIT0gY2FsbGVlLT5leGVjdXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKQEAgLTEzNDQsMjIgKzEzNDYsMjIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blByb2ZpbGVXaWxsQwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNo
ZWNrSGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsKQogewotICAgIFZNKiB2bSA9ICZleGVj
LT52bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZVZhbCk7CiAKICAgICBpZiAoYmFzZVZhbC5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbCk7Ci0gICAgICAgIEFTU0VSVCghYmFzZU9i
amVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSgpKTsKLSAgICAgICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpKSB7Ci0gICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VPYmplY3QsIGV4ZWMs
IHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKCFiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBl
SW5mbygpLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7CisgICAgICAgIGlmIChiYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgp
KSB7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+Y3VzdG9tSGFzSW5zdGFuY2UoYmFzZU9iamVjdCwgZXhlYywgdmFsdWUpOwogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB2bS0+dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFt
ZXRlckVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworICAgIHZtLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2Vv
ZiIsIGJhc2VWYWwpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiB9
CiAKQEAgLTE0NTAsOSArMTQ1Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxvY2so
KS0+Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlW
YWxJbmZvLnN0dWJSb3V0aW5lKTsKICAgICAgICAgCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJs
ZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6
YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0
dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAgICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0g
aml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmpl
Y3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAgICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbElu
Zm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAgICAgICAgSklUOjpjb21waWxlR2V0QnlWYWwoJnZt
LCBleGVjLT5jb2RlQmxvY2soKSwgJmJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVU
VVJOX0FERFJFU1MpLCBhcnJheU1vZGUpOwogICAgICAgICAgICAgICAgIGRpZE9wdGltaXplID0g
dHJ1ZTsKQEAgLTE0NjYsNyArMTQ2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2UKICAgICAgICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24taW5kZXgtaW50ZXJj
ZXB0aW5nIG9iamVjdHMsIHRoaXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZgogICAgICAg
ICAgICAgLy8gb3Bwb3J0dW5pdHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgZ2V0X2J5X3Zh
bCBtYXkgYmUgcG9seW1vcnBoaWMuCiAgICAgICAgICAgICBpZiAoKytieVZhbEluZm8uc2xvd1Bh
dGhDb3VudCA+PSAxMAotICAgICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybygpKSB7CisgICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0p
LT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8oKSkgewogICAgICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRv
IG9wdGltaXplLgogICAgICAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihl
eGVjLT5jb2RlQmxvY2soKSk7CiAgICAgICAgICAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZWxpbmtD
YWxsZXJUb0Z1bmN0aW9uKFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgRnVu
Y3Rpb25QdHIob3BlcmF0aW9uR2V0QnlWYWxHZW5lcmljKSk7CkBAIC0xNTMwLDcgKzE1MzIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlCiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogCiAgICAgSlNPYmplY3QqIGJhc2VPYmog
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpLnRvT2JqZWN0KGV4ZWMpOwotICAgIGJvb2wg
Y291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqLCBleGVjLCAqaWRlbnRpZmllcik7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmot
Pm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgKmlkZW50aWZp
ZXIpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGNvdWxkRGVsZXRlKTsKICAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKICAg
ICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFi
bGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKQEAgLTE1NDIsNyArMTU0NCw3IEBAIEpTQ2VsbCog
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gb2JqLT5zdHJ1Y3R1cmUoKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG9iai0+c3RydWN0dXJlKHZtKTsKICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7
CiAgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKSkKICAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OmNyZWF0ZShleGVjLCBvYmopOwpAQCAtMTY3MiwxMCArMTY3NCwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgfQogCiAgICAgLy8gQ292ZXJz
IGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJz
dCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRp
bWUuCi0gICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBzY29wZSAmJiBzY29wZS0+c3RydWN0dXJlKCktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGUoKSkgeworICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNl
KCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVD
YWNoZWFibGUoKSkgewogICAgICAgICBpZiAobW9kZUFuZFR5cGUudHlwZSgpID09IEdsb2JhbFBy
b3BlcnR5IHx8IG1vZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3MpIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKGNv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0dXJlLnNldChleGVj
LT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+c3RydWN0dXJlKCkp
OworICAgICAgICAgICAgcGNbNV0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHNjb3BlLT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgICAg
IHBjWzZdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgIH0KICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcg
KzgzLDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAg
IEpTSW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFp
bHVyZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGppdCwg
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHZt
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAgICAvLyBMb2FkIHN0cmluZyBsZW5n
dGggdG8gcmVnVDEsIGFuZCBzdGFydCB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nIHRoZSBkYXRhIHBv
aW50ZXIgaW50byByZWdUMAogICAgIGppdC5sb2FkMzIoQWRkcmVzcyhyZWdUMCwgVGh1bmtIZWxw
ZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgcmVnVDEpOwpAQCAtMTMyLDggKzEzMiw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJ
bnQzMlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEp
OwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmls
ZSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgcHJv
ZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEp
OwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjM1LDcgKzIzNCw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKIAogICAgIEp1bXAgbm9uQ2VsbCA9
IGp1bXAoKTsKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGJhc2UgYXJyYXkgY2hlY2sKLSAg
ICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CisgICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1
YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fdm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChtX3ZtLT5nZXRDVElTdHVi
KHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKTsKICAgICBKdW1wIGZhaWxlZCA9
IGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDApOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CkBAIC0yNzYsOCArMjc1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbgogICAgIAogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGUocmVnVDEsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRl
V2l0aENlbGwocmVnVDAsIHJlZ1QxLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIo
SW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMSk7CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRU
eXBlOwpAQCAtNDc1LDEwICs0NzMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwogCi0gICAgaWYgKCppZGVudCA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0g
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXgo
cmVnVDIsIHJlZ1QzLCBtX2J5dGVjb2RlT2Zmc2V0KTsKLSAgICB9CisgICAgaWYgKCppZGVudCA9
PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKQor
ICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKHJl
Z1QwLCByZWdUMiwgbV9ieXRlY29kZU9mZnNldCk7CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9y
IGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCks
IFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCkBAIC02MzQsNyArNjMwLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRMb2FkUGF5bG9h
ZChpdGVyLCByZWdUMSk7CiAgICAgCiAgICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDAp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgcmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIEFk
ZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2Nh
Y2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSksIHJlZ1QzKTsKICAg
ICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTczMSw3ICs3MjcsNyBAQCB2b2lk
IEpJVDo6ZW1pdExvYWRXaXRoU3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAgZW1pdExvYWQoc2Nv
cGUsIHJlZ1QxLCByZWdUMCk7CiAgICAgbG9hZFB0cihzdHJ1Y3R1cmVTbG90LCByZWdUMik7Ci0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QyKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBv
cGVyYW5kU2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
MTAgQEAgSklUOjpDb2RlUmVmIEpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZQogewogICAgIEpT
SW50ZXJmYWNlSklUIGppdCh2bSk7CiAgICAgSnVtcExpc3QgZmFpbHVyZXM7Ci0gICAgZmFpbHVy
ZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSk7CisgICAgZmFpbHVyZXMuYXBwZW5kKEpTQzo6YnJhbmNoU3RydWN0dXJlKGppdCwKKyAg
ICAgICAgTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAg
ICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QyLCBhbmQgc3RhcnQgdGhlIHByb2Nlc3Mg
b2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9hZDMyKEFk
ZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSksIHJlZ1Qy
KTsKQEAgLTEwNiw4ICsxMDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3Ry
dWN0aW9uCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1QxKTsKIAogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxlKTsKKyAgICBlbWl0QXJyYXlQcm9m
aWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9maWxlKTsKICAgICBhbmQzMihUcnVz
dGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7CiAKICAgICBQYXRjaGFibGVKdW1w
IGJhZFR5cGU7CkBAIC0yMDQsNyArMjA2LDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV92YWwoSW5zdHJ1YwogICAgIGxpbmtTbG93Q2FzZUlmTm90SlNDZWxsKGl0ZXIsIGJhc2UpOyAv
LyBiYXNlIGNlbGwgY2hlY2sKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBi
cmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1
bXAgbm90U3RyaW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCAKKyAgICAgICAgQWRkcmVz
cyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG1fdm0tPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgZW1pdE5ha2VkQ2FsbChDb2RlTG9jYXRpb25MYWJl
bChtX3ZtLT5nZXRDVElTdHViKHN0cmluZ0dldEJ5VmFsU3R1YkdlbmVyYXRvcikuY29kZSgpKSk7
CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0NjQoWmVybywgcmVnVDApOwogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CkBAIC0yNzUsNyArMjc5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aQogICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUK
LSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBy
ZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7CiAgICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JK
RUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkp
KTsKICAgICBsb2FkMzIoYWRkcmVzc0ZvcihpKSwgcmVnVDMpOwogICAgIHN1YjMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDMpOwpAQCAtMzE2LDggKzMyMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAvLyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFs
LgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1QxLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZShyZWdUMiwgcmVnVDMsIHByb2ZpbGUpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0z
MihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QyKTsKICAgICAKICAgICBQYXRjaGFibGVKdW1wIGJh
ZFR5cGU7CkBAIC01MTMsMTAgKzUxNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJ
bnN0cnVjdGlvbioKICAgICAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2VWUmVnKTsKICAgICAKLSAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBl
bWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleChyZWdUMSwgcmVnVDIsIG1fYnl0
ZWNvZGVPZmZzZXQpOwotICAgIH0KKyAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpCisgICAgICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwocmVnVDAsIHJlZ1QxLCBtX2J5dGVj
b2RlT2Zmc2V0KTsKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2Nv
ZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNp
YWxSZWdpc3RlcnMoKSwKQEAgLTY5Myw3ICs2OTQsOSBAQCB2b2lkIEpJVDo6ZW1pdExvYWRXaXRo
U3RydWN0dXJlQ2hlY2soaW50CiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzY29wZSwg
cmVnVDApOwogICAgIGxvYWRQdHIoc3RydWN0dXJlU2xvdCwgcmVnVDEpOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QxKSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBy
ZWdUMSkpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZWdUMSk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFk
ZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKSk7CiB9CiAK
IHZvaWQgSklUOjplbWl0R2V0R2xvYmFsUHJvcGVydHkodWludHB0cl90KiBvcGVyYW5kU2xvdCkK
QEAgLTc1NCw2ICs3NTcsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2Zyb21fc2NvcGUo
SW5zCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBD
bG9zdXJlVmFyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKQorICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgbGlua1Nsb3dDYXNl
KGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24oV2l0aFByb2ZpbGUsIG9wZXJhdGlvbkdldEZyb21T
Y29wZSwgZHN0LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQpAQCAtODU1LDYgKzg2MCw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2NvcGUoSW5zdHIKICAgICBpZiAoKHJlc29sdmVU
eXBlID09IEdsb2JhbFZhciB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKQogICAgICAgICAmJiBjdXJyZW50SW5zdHJ1Y3Rpb25bNV0udS53YXRjaHBvaW50
U2V0LT5zdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQpCiAgICAgICAgIGxpbmtDb3VudCsrOworICAg
IGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCisgICAgICAgIGxpbmtDb3VudCsrOwog
ICAgIGlmICghbGlua0NvdW50KQogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKGxpbmtDb3Vu
dC0tKQpAQCAtODcyLDI1ICs4NzksMTQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5pdF9nbG9iYWxf
Y29uc3QoSW5zdAogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAotSklUOjpKdW1wIEpJVDo6
Y2hlY2tNYXJrV29yZChSZWdpc3RlcklEIG93bmVyLCBSZWdpc3RlcklEIHNjcmF0Y2gxLCBSZWdp
c3RlcklEIHNjcmF0Y2gyKQorSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChSZWdpc3RlcklE
IG93bmVyKQogewotICAgIG1vdmUob3duZXIsIHNjcmF0Y2gxKTsKLSAgICBtb3ZlKG93bmVyLCBz
Y3JhdGNoMik7Ci0KLSAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tN
YXNrKSwgc2NyYXRjaDEpOwotICAgIGFuZFB0cihUcnVzdGVkSW1tUHRyKH5NYXJrZWRCbG9jazo6
YmxvY2tNYXNrKSwgc2NyYXRjaDIpOwotCi0gICAgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyKDMgKyA0
KSwgc2NyYXRjaDIpOwotCi0gICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEJhc2VJbmRleChz
Y3JhdGNoMSwgc2NyYXRjaDIsIFRpbWVzT25lLCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygp
KSk7CisgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6
Z2NEYXRhT2Zmc2V0KCkpKTsKIH0KIAogSklUOjpKdW1wIEpJVDo6Y2hlY2tNYXJrV29yZChKU0Nl
bGwqIG93bmVyKQogewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9j
a0Zvcihvd25lcik7Ci0gICAgc2l6ZV90IGluZGV4ID0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90
Pihvd25lcikgJiB+TWFya2VkQmxvY2s6OmJsb2NrTWFzaykgPj4gKDMgKyA0KTsKLSAgICB2b2lk
KiBhZGRyZXNzID0gKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJsb2NrKSArIE1hcmtlZEJsb2Nr
OjpvZmZzZXRPZk1hcmtzKCkpICsgaW5kZXg7Ci0KKyAgICB1aW50OF90KiBhZGRyZXNzID0gcmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4ob3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsK
ICAgICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywgQWJzb2x1dGVBZGRyZXNzKGFkZHJlc3MpKTsK
IH0KIApAQCAtOTA4LDcgKzkwNCw3IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2ln
bmVkIG93bmUKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAg
ICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1Jl
Z2lzdGVyKTsKIAotICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1Qw
LCByZWdUMSwgcmVnVDIpOworICAgIEp1bXAgb3duZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3Jk
KHJlZ1QwKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJh
cnJpZXIsIHJlZ1QwKTsKICAgICBvd25lck5vdE1hcmtlZC5saW5rKHRoaXMpOwogCkBAIC05NTcs
NyArOTUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZQogICAg
IGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgb3duZXJOb3RD
ZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpOwogCi0gICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQocmVnVDEs
IHJlZ1QwLCByZWdUMik7CisgICAgSnVtcCBvd25lck5vdE1hcmtlZCA9IGNoZWNrTWFya1dvcmQo
cmVnVDEpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVW5jb25kaXRpb25hbFdyaXRlQmFy
cmllciwgcmVnVDEpOwogICAgIG93bmVyTm90TWFya2VkLmxpbmsodGhpcyk7CiAKQEAgLTEwMTMs
NyArMTAwOSw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAg
ICAgICAgc3RydWN0dXJlLT5hZGRUcmFuc2l0aW9uV2F0Y2hwb2ludChzdHViSW5mby0+YWRkV2F0
Y2hwb2ludChtX2NvZGVCbG9jaykpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgICAgICBKdW1wIG9rID0gYnJh
bmNoUHRyKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBKdW1wIG9rID0gYnJhbmNoU3Ry
dWN0dXJlKEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIHN0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluayh0
aGlzKTsKICNlbmRpZgpAQCAtMTAyMiw3ICsxMDE4LDcgQEAgSklUOjpKdW1wIEpJVDo6YWRkU3Ry
dWN0dXJlVHJhbnNpdGlvbkNoZQogICAgIH0KICAgICAKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
b2JqZWN0KSwgc2NyYXRjaCk7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVz
cyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpKTsKKyAgICByZXR1cm4gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHNj
cmF0Y2gsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZSk7CiB9CiAKIHZv
aWQgSklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiBvYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEp1bXBMaXN0JiBm
YWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQgc2NyYXRjaCkKQEAgLTExODAsOCArMTE3Niw4IEBAIEpJ
VDo6SnVtcExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheUdldEIKICAgICAKICAgICBKdW1wTGlz
dCBzbG93Q2FzZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3Ry
dWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKyAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJ
bW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgYmFzZSk7CiAgICAgCkBAIC0x
MjUwLDkgKzEyNDYsOSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJheUdl
CiAjZW5kaWYKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgCi0gICAgbG9hZFB0
cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKLSAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gs
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0Zv
clR5cGUodHlwZSkpKTsKKworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIHNjcmF0Y2gpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gz
MihOb3RFcXVhbCwgc2NyYXRjaCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0
eXBlKSkpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkp
KTsKICAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
VmVjdG9yKCkpLCBiYXNlKTsKICAgICAKQEAgLTEzMDQsOCArMTMwMCw4IEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEIKICAgICAKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAgICAgCi0gICAgbG9hZFB0cihBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBlYXJseVNjcmF0Y2gpOwotICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MoZWFybHlTY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CisgICAgbG9hZDgo
QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgZWFybHlTY3JhdGNo
KTsKKyAgICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIGVhcmx5U2NyYXRj
aCwgVHJ1c3RlZEltbTMyKHR5cGVGb3JUeXBlZEFycmF5VHlwZSh0eXBlKSkpOwogICAgIEp1bXAg
aW5Cb3VuZHMgPSBicmFuY2gzMihCZWxvdywgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJh
eUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKICAgICBlbWl0QXJyYXlQcm9maWxlT3V0
T2ZCb3VuZHNTcGVjaWFsQ2FzZShwcm9maWxlKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CkBA
IC0xMzc2LDggKzEzNzIsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEZsb2F0VHlwZWRBcnJh
eVB1CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIoQWRk
cmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGVhcmx5U2Ny
YXRjaCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJ
bmZvRm9yVHlwZSh0eXBlKSkpOworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJs
ZUJyYW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlw
ZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3cs
IHByb3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0
aCgpKSk7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmls
ZSk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3ICs3
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0lt
bU5vQ2hlY2soUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CiAjZW5kaWYKIAotICAg
ICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0ZXJJ
RCBzY3JhdGNoUmVnLCBKU1R5cGUpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RUeXBlKFJl
Z2lzdGVySUQgYmFzZVJlZywgSlNUeXBlKTsKIAogICAgICAgICB2b2lkIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5LCBSZWdpc3RlcklE
IHRvLCBSZWdpc3RlcklEIGZyb20gPSBjYWxsRnJhbWVSZWdpc3Rlcik7CiAgICAgICAgIHZvaWQg
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkpOwpAQCAtMjI0LDEwICsyMjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9CiAjZW5kaWYKIAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJ
bnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RUeXBlKFJlZ2lzdGVySUQgYmFzZVJlZywgUmVnaXN0
ZXJJRCBzY3JhdGNoUmVnLCBKU1R5cGUgdHlwZSkKKyAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJm
YWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklE
IGJhc2VSZWcsIEpTVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaFJlZywgU3RydWN0dXJlOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CisgICAgICAgIHJldHVy
biBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBKU0ludGVyZmFjZUpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8sIFJlZ2lzdGVy
SUQgZnJvbSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNp
b24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklU
LmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9s
eW1vcnBoaWNQdXRCeUlkTGlzdC5oIgpAQCAtMTAzLDcgKzEwNSw3IEBAIHN0YXRpYyB2b2lkIHJl
cGF0Y2hCeUlkU2VsZkFjY2VzcyhWTSYgdm0KICAgICByZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVy
LCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoRnVuY3Rpb24pOwogCiAgICAg
Ly8gUGF0Y2ggdGhlIHN0cnVjdHVyZSBjaGVjayAmIHRoZSBvZmZzZXQgb2YgdGhlIGxvYWQuCi0g
ICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRh
TGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1U
b0NhbGwpLCBzdHJ1Y3R1cmUpOworICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHViSW5mby5j
YWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZv
LnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RydWN0
dXJlLT5pZCgpKSk7CiAgICAgcmVwYXRjaEJ1ZmZlci5zZXRMb2FkSW5zdHJ1Y3Rpb25Jc0FjdGl2
ZShzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uY29udmVydGlibGVMb2FkQXRPZmZzZXQoc3R1
YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TdG9yYWdlTG9hZCksIGlzT3V0T2ZMaW5lT2Zmc2V0KG9m
ZnNldCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGNvbXBhY3QpCkBAIC0xMzEsMTAg
KzEzMywxMCBAQCBzdGF0aWMgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soCiAgICAg
ICAgIC8vIElmIHdlIGV4ZWN1dGUgdGhpcyBjb2RlLCB0aGUgb2JqZWN0IG11c3QgaGF2ZSB0aGUg
c3RydWN0dXJlIHdlIGV4cGVjdC4gQXNzZXJ0CiAgICAgICAgIC8vIHRoaXMgaW4gZGVidWcgbW9k
ZXMuCiAgICAgICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9iamVj
dCksIHNjcmF0Y2hHUFIpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvayA9IGppdC5i
cmFuY2hQdHIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9rID0gYnJhbmNoU3RydWN0
dXJlKGppdCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKTsKICAg
ICAgICAgaml0LmJyZWFrcG9pbnQoKTsKICAgICAgICAgb2subGluaygmaml0KTsKICNlbmRpZgpA
QCAtMTQzLDEwICsxNDUsMTAgQEAgc3RhdGljIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNo
ZWNrKAogICAgIAogICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG9i
amVjdCksIHNjcmF0Y2hHUFIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoCi0gICAgICAgIGpp
dC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShqaXQsCiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKIH0KIAogc3RhdGljIHZvaWQgYWRk
U3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKApAQCAtMTY1LDEwICsxNjcsMTAgQEAgc3RhdGljIHZv
aWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogCiBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEp1bXAoUmVwYXRjaEJ1ZmZlciYgcmVwYXRjaEJ1ZmZlciwgU3RydWN0dXJlU3R1YkluZm8mIHN0
dWJJbmZvLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgdGFyZ2V0KQogewotICAgIGlmIChN
YWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2go
KSkgeworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCgpKSB7CiAgICAgICAgIHJlcGF0Y2hCdWZmZXIucmVwbGFjZVdpdGhKdW1w
KAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaE9uQWRkcmVzcygKLSAgICAgICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9j
YXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoCisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpz
dGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MoCisgICAgICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoCiAgICAg
ICAgICAgICAgICAgICAgIC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRv
Q2FsbCkpLAogICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwodGFyZ2V0KSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTI0OSw3ICsyNTEsMTAgQEAgc3RhdGljIFByb3RvQ2hhaW5HZW5lcmF0aW9u
UmVzdWx0IGdlbmVyYQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJl
Q2FzZXM7CiAgICAgCi0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpKSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUo
c3R1YkppdCwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgCisgICAgICAgIHN0cnVjdHVyZSkpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVy
ZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQpAQCAtMzgwLDggKzM4NSw3IEBAIHN0YXRpYyBi
b29sIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGUKICAgICAgICAgCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7CiAgICAgICAgCi0gICAgICAgIHN0dWJK
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7IAotICAgICAgICBzdHViSml0LmxvYWQ4KE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zm
c2V0KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgc3R1YkppdC5sb2FkOChNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRj
aEdQUik7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoSXNBcnJheSkpKTsKICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJy
YW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihJbmRleGluZ1NoYXBlTWFzaykpKTsKICAgICAgICAgCkBAIC01NzMs
NyArNTc3LDEwIEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3QoRXhlY1N0YXQKICAg
ICAgICAgCiAgICAgICAgIENDYWxsSGVscGVycyBzdHViSml0KHZtLCBjb2RlQmxvY2spOwogICAg
ICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgd3JvbmdTdHJ1Y3QgPSBzdHViSml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
d3JvbmdTdHJ1Y3QgPSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIHN0
cnVjdHVyZSk7CiAgICAgICAgIAogICAgICAgICAvLyBUaGUgc3RyYXRlZ3kgd2UgdXNlIGZvciBz
dHVicyBpcyBhcyBmb2xsb3dzOgogICAgICAgICAvLyAxKSBDYWxsIERGRyBoZWxwZXIgdGhhdCBj
YWxscyB0aGUgZ2V0dGVyLgpAQCAtODE3LDcgKzgyNCw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCB3cml0ZUJhcnJpZXIKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDEpOwogICAg
IEFTU0VSVChvd25lciAhPSBzY3JhdGNoMik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBk
ZWZpbml0ZWx5Tm90TWFya2VkID0gREZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFy
cmllcihqaXQsIG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmlj
V3JpdGVCYXJyaWVyKGppdCwgb3duZXIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGwg
PSBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKGppdCwgb3duZXIsIHNjcmF0Y2gxLCBzY3JhdGNo
MiwgYWxsb2NhdG9yKTsKICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJmppdCk7CiAgICAg
cmV0dXJuIGNhbGw7CkBAIC04NTgsMTAgKzg2NSwxMCBAQCBzdGF0aWMgdm9pZCBlbWl0UHV0UmVw
bGFjZVN0dWIoCiAKICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hp
bmcoc3R1YkppdCk7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUgPSBz
dHViSml0LmJyYW5jaFB0cigKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiYWRTdHJ1Y3R1cmUg
PSBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgIHN0cnVjdHVyZSk7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgIGlmIChpc0lubGluZU9mZnNldChzbG90LmNhY2hlZE9mZnNldCgp
KSkKQEAgLTk3NSw3ICs5ODIsMTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFRyYW5zaXRpb25TdHVi
KAogICAgICAgICAgICAgCiAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHJhbnNpdGlvbldhdGNo
cG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKSk7CiAgICAgCi0gICAgZmFpbHVyZUNhc2VzLmFw
cGVuZChzdHViSml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvbGRTdHJ1Y3R1cmUpKSk7CisgICAgZmFpbHVyZUNh
c2VzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIG9sZFN0cnVjdHVyZSkpOwog
ICAgIAogICAgIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAgICAgb2xkU3RydWN0
dXJlLT5zdG9yZWRQcm90b3R5cGUoKSwgZXhlYy0+Y29kZUJsb2NrKCksIHN0dWJJbmZvLCBzdHVi
Sml0LCBmYWlsdXJlQ2FzZXMsCkBAIC0xMDI2LDcgKzEwMzYsMTAgQEAgc3RhdGljIHZvaWQgZW1p
dFB1dFRyYW5zaXRpb25TdHViKAogICAgICAgICBzY3JhdGNoR1BSMUhhc1N0b3JhZ2UgPSB0cnVl
OwogICAgIH0KIAotICAgIHN0dWJKaXQuc3RvcmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSkpOworICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkudHlwZSgpID09IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgIEFTU0VSVChv
bGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gc3RydWN0dXJlLT50
eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKKyAgICBBU1NFUlQob2xkU3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSA9PSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICBzdHViSml0
LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PHVp
bnQzMl90PihzdHJ1Y3R1cmUtPmlkKCkpKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICBpZiAoaXNJbmxpbmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCiAgICAgICAgIHN0dWJK
aXQuc3RvcmU2NCh2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNP
YmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpICsgb2Zmc2V0SW5JbmxpbmVTdG9yYWdlKHNs
b3QuY2FjaGVkT2Zmc2V0KCkpICogc2l6ZW9mKEpTVmFsdWUpKSk7CkBAIC0xMjcxLDcgKzEyODQs
NyBAQCBzdGF0aWMgYm9vbCB0cnlCdWlsZFB1dEJ5SWRMaXN0KEV4ZWNTdGF0CiAgICAgICAgIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKQEAgLTEzNDYsMTAgKzEzNTksMTAgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAg
ICAgICAgICAgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAgICAgCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2FzZXM7Ci0gICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAg
ICBzdHJ1Y3R1cmUpKTsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT50eXBlSW5mbygpLm5ld0ltcHVyZVBy
b3BlcnR5RmlyZXNXYXRjaHBvaW50cygpKQpAQCAtMTUwMCwxMCArMTUxMywxMCBAQCB2b2lkIGxp
bmtDbG9zdXJlQ2FsbCgKICNlbmRpZgogICAgIAogICAgIHNsb3dQYXRoLmFwcGVuZCgKLSAgICAg
ICAgc3R1YkppdC5icmFuY2hQdHIoCisgICAgICAgIGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAog
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpKTsKKyAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksCisgICAgICAgICAgICBzdHJ1Y3R1cmUpKTsKICAgICAKICAgICBzbG93UGF0
aC5hcHBlbmQoCiAgICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKApAQCAtMTU3MywxNiArMTU4Niwx
NiBAQCB2b2lkIGxpbmtDbG9zdXJlQ2FsbCgKIHZvaWQgcmVzZXRHZXRCeUlEKFJlcGF0Y2hCdWZm
ZXImIHJlcGF0Y2hCdWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKICAgICBy
ZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSk7Ci0gICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIHN0
cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0
T2Zmc2V0KC0oaW50cHRyX3Qpc3R1YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7Ci0g
ICAgaWYgKE1hY3JvQXNzZW1ibGVyOjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaCgpKSB7Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50
VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goCi0gICAgICAgICAgICBSZXBhdGNoQnVmZmVy
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxh
YmVsKSwKKyAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWwzMiBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJ
bmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KC0oaW50cHRyX3Qpc3R1
YkluZm8ucGF0Y2guZGVsdGFDaGVja0ltbVRvQ2FsbCk7CisgICAgaWYgKE1hY3JvQXNzZW1ibGVy
OjpjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkpIHsKKyAgICAgICAg
cmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0
aFBhdGNoKAorICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5j
aDMyV2l0aFBhdGNoT25BZGRyZXNzKHN0cnVjdHVyZUxhYmVsKSwKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKAogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1hY3JvQXNz
ZW1ibGVyOjpSZWdpc3RlcklEPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSwKLSAgICAgICAgICAg
ICAgICBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICAgICAgICAgICAgICBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51
c2VkUG9pbnRlcikpOwogICAgIH0KLSAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJl
TGFiZWwsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHVudXNlZFBvaW50ZXIpKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3RydWN0dXJlTGFiZWwsIHN0YXRpY19jYXN0PGludDMyX3Q+KHVu
dXNlZFBvaW50ZXIpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHJlcGF0Y2hCdWZmZXIucmVw
YXRjaChzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsQ29tcGFjdEF0T2Zmc2V0
KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkBAIC0x
NjA3LDE2ICsxNjIwLDE2IEBAIHZvaWQgcmVzZXRQdXRCeUlEKFJlcGF0Y2hCdWZmZXImIHJlcGF0
Y2gKICAgICAgICAgb3B0aW1pemVkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9u
U3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIHJlcGF0Y2hDYWxsKHJlcGF0Y2hCdWZmZXIsIHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiwgb3B0aW1pemVkRnVuY3Rpb24pOwotICAgIENvZGVM
b2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxh
Y2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNoQnVmZmVy
LnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAotICAg
ICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIg
c3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsMzJB
dE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwor
ICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2gzMldp
dGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxhY2VtZW50
VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJl
bCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8ucGF0Y2gu
YmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0g
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7CisgICAg
ICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVwYXRjaEJ1
ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVz
ZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCBz
dGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRh
dGFMYWJlbDMyQXRPZmZzZXQoc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Mb2FkT3JTdG9yZSks
IDApOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
OCBAQAogI2lmIEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSklULmgiCisjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTSW50ZXJmYWNl
SklULmgiCiAjaW5jbHVkZSAiSlNTdGFjay5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKQEAg
LTY3LDE0ICs2OSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkSlNTdHJp
bmdBcmd1bWVudChWTSYgdm0sIGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJndW1lbnQsIGRzdCk7Ci0gICAgICAg
ICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MoZHN0LCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cih2bS5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1
cmUoKnRoaXMsIE5vdEVxdWFsLCAKKyAgICAgICAgICAgICAgICBBZGRyZXNzKGRzdCwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgdm0uc3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgbG9hZEFyZ3Vt
ZW50V2l0aFNwZWNpZmljQ2xhc3MoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGludCBhcmd1
bWVudCwgUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICAgICAgewogICAg
ICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKLSAgICAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoKTsK
KyAgICAgICAgICAgIGVtaXRMb2FkU3RydWN0dXJlKGRzdCwgc2NyYXRjaCwgZHN0KTsKICAgICAg
ICAgICAgIGFwcGVuZEZhaWx1cmUoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNjcmF0Y2gs
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykp
KTsKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gcmVsb2FkIHRoZSBhcmd1bWVudCBzaW5jZSBl
bWl0TG9hZFN0cnVjdHVyZSBjbG9iYmVyZWQgaXQuCisgICAgICAgICAgICBsb2FkQ2VsbEFyZ3Vt
ZW50KGFyZ3VtZW50LCBkc3QpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxv
YWRJbnQzMkFyZ3VtZW50KGludCBhcmd1bWVudCwgUmVnaXN0ZXJJRCBkc3QsIEp1bXAmIGZhaWxU
YXJnZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJUaHVua0dlbmVyYXRvcnMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKQEAgLTE4OSw3
ICsxOTAsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHZpcnR1YWxGb3JUCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBHUFJJbmZvOjpyZWdUMSwKICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAjZW5k
aWYKLSAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMik7CisgICAgQXNzZW1i
bHlIZWxwZXJzOjplbWl0TG9hZFN0cnVjdHVyZShqaXQsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMiwgR1BSSW5mbzo6cmVnVDEpOwogICAgIHNsb3dDYXNlLmFwcGVuZCgKICAgICAgICAg
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCkBAIC05
NTksOSArOTYwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBhcnJheUl0ZXJhdAog
ICAgIGppdC5sb2FkMzIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUNCwgSlNBcnJh
eUl0ZXJhdG9yOjpvZmZzZXRPZk5leHRJbmRleCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVn
VDEpOwogICAgIAogICAgIC8vIFB1bGwgb3V0IHRoZSBidXR0ZXJmbHkgZnJvbSBpdGVyYXRlZE9i
amVjdAotICAgIGppdC5sb2FkUHRyKEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMik7
Ci0gICAgCi0gICAgaml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIs
IFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMyk7CisgICAgaml0LmxvYWQ4KEFkZHJlc3MoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdU
Myk7CiAgICAgaml0LmxvYWRQdHIoQWRkcmVzcyhTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwg
SlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIp
OwogICAgIAogICAgIGppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBT
cGVjaWFsaXplZFRodW5rSklUOjpyZWdUMyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNp
b24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1MzEsMTMgQEAgbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZQogICAgICAgICBwYXlsb2FkKQogZW5k
CiAKK21hY3JvIHN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKGNlbGwsIHN0cnVjdHVyZSwgc2Ny
YXRjaCkKKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0K
KworICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9ibG9iICsgU3RydWN0dXJlSURCbG9iOjp1LndvcmRz
LndvcmQyW3N0cnVjdHVyZV0sIHNjcmF0Y2gKKyAgICBzdG9yZWkgc2NyYXRjaCwgSlNDZWxsOjpt
X2luZGV4aW5nVHlwZVtjZWxsXQorZW5kCisKIG1hY3JvIHdyaXRlQmFycmllck9uT3BlcmFuZChj
ZWxsT3BlcmFuZCkKICAgICBpZiBHR0MKICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKGNl
bGxPcGVyYW5kLCB0MSkKQEAgLTc0OCwxMCArNzU1LDkgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAg
ICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxs
VGFnLCAub3BUb1RoaXNTbG93CiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBl
LCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVj
dFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAg
ICBicG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKDMpCiAKIC5vcFRvVGhp
c1Nsb3c6CkBAIC04NjgsOCArODc0LDcgQEAgX2xsaW50X29wX2VxX251bGw6CiAgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQotICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAgIGJ0Ym56IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgLm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2VsbDo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQKICAgICBtb3ZlIDAsIHQxCiAgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQog
Lm9wRXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKQEAgLTkxNSw4ICs5MjAsNyBAQCBfbGxp
bnRfb3BfbmVxX251bGw6CiAgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcE5lcU51bGxNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgLm9wTmVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDEsIHQxCiAg
ICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKIC5vcE5lcU51bGxNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkOgpAQCAtOTQyLDEwICs5NDYsOCBAQCBtYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJh
dGlvbiwgc2xvd1BhCiAgICAgYmluZXEgdDIsIHQzLCAuc2xvdwogICAgIGJpYiB0MiwgTG93ZXN0
VGFnLCAuc2xvdwogICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MV0sIHQzCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKLSAgICBiYmVxIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEg
SlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAuc2xvdwogLm5vdFN0cmluZzoKICAgICBs
b2FkaSA0W1BDXSwgdDIKICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQpAQCAtMTIy
NSw4ICsxMjI3LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgbG9hZGkgMTJbUENdLCB0MQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0NlbGw6Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgpAQCAtMTI0MCwx
NSArMTI0MSwxNCBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICBsb2FkaSAxMltQQ10sIHQw
CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKICAgICBsb2Fk
aSA4W1BDXSwgdDAKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQogICAgIAogICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQx
ID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAogLm9wSW5zdGFuY2VvZkxv
b3A6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCiAgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNl
b2ZEb25lCiAgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCkBAIC0xMjc1LDEyICsxMjc1
LDEyIEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElzVW5kZWZpbmVkQ2VsbDoKLSAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKLSAgICBidGJueiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIC5vcElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2Vs
bDo6bV9mbGFnc1t0M10sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcElzVW5kZWZpbmVkTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDEKICAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KICAgICBkaXNwYXRjaCgzKQogLm9wSXNVbmRlZmluZWRNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10s
IHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQzCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbE9iamVjdFt0M10sIHQzCiAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0
W3QxXSwgdDMsIHQxCkBAIC0xMzE4LDggKzEzMTgsNyBAQCBfbGxpbnRfb3BfaXNfc3RyaW5nOgog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQwLCB0MykKICAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgYmluZXEgdDAsIENlbGxUYWcsIC5vcElz
U3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MAotICAg
IGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmlu
Z1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIHQxCiAg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykK
IC5vcElzU3RyaW5nTm90Q2VsbDoKQEAgLTEzODcsNyArMTM4Niw3IEBAIG1hY3JvIGdldEJ5SWQo
Z2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0MywKICAgICAgICAgdDAsCiAgICAgICAgIG1h
Y3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgICAgICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKICAgICAgICAgICAg
IGxvYWRpIDRbUENdLCB0MQogICAgICAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3Byb3BlcnR5U3Rv
cmFnZSwgdDJdLCBzY3JhdGNoCiAgICAgICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Byb3Bl
cnR5U3RvcmFnZSwgdDJdLCB0MgpAQCAtMTQxNSw3ICsxNDE0LDcgQEAgX2xsaW50X29wX2dldF9h
cnJheV9sZW5ndGg6CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZHAgMTZbUENdLCB0MQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0
QXJyYXlMZW5ndGhTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0Mgor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQyCiAgICAgYXJyYXlQcm9maWxl
KHQyLCB0MSwgdDApCiAgICAgYnRpeiB0MiwgSXNBcnJheSwgLm9wR2V0QXJyYXlMZW5ndGhTbG93
CiAgICAgYnRpeiB0MiwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEFycmF5TGVuZ3RoU2xvdwpA
QCAtMTQ2MCw3ICsxNDU5LDcgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAg
ICAgICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8gKHByb3BlcnR5U3RvcmFnZSwg
c2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgICAgICAgICAgbG9hZGkgMjBbUENdLCB0MQogICAg
ICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHNjcmF0Y2gsIHQyKQogICAg
ICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQxXQpA
QCAtMTQ4OCw3ICsxNDg3LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENo
ZWNrcwogICAgIGxvYWRpIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRpIDEyW1BDXSwg
dDIKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CiAgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQogICAgIGxvYWRp
IDIwW1BDXSwgdDEKICAgICBnZXRQcm9wZXJ0eVN0b3JhZ2UoCkBAIC0xNTAwLDcgKzE0OTksNyBA
QCBtYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzCiAgICAgICAgICAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFt0M10KICAgICAgICAgICAgIGxvYWRpIDI0W1BDXSwgdDEKICAg
ICAgICAgICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KLSAgICAgICAgICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAgIHN0b3JlcCB0MSwgSlND
ZWxsOjptX3N0cnVjdHVyZUlEW3QwXQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAg
ZW5kKQogCkBAIC0xNTIyLDcgKzE1MjEsNyBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhv
bGRTdHJ1Y3R1cmUsCiAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCiAubG9vcDoKICAgICBsb2FkaSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwK
LSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
ICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvd1BhdGgKICAgICBhZGRwIDQs
IHNjcmF0Y2gKICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCkBAIC0xNTQ5LDcgKzE1NDgsNyBAQCBfbGxpbnRf
b3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGkgOFtQQ10sIHQy
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BH
ZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQz
CiAgICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDEpCiAgICAgbG9hZGkgMTJbUENdLCB0MwpAQCAt
MTYzMyw3ICsxNjMyLDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFtZToKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQog
ICAgIGxvYWRpIDIwW1BDXSwgdDAKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCiAgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBs
b2FkaSAyNFtQQ10sIHQwCiAgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MApAQCAtMTY3NSw3ICsx
Njc0LDcgQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNrLCBzbG93UGF0aCkKICAgICB3cml0ZUJh
cnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgbG9hZGkgNFtQQ10sIHQwCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QxXSwgdDIKICAgICBsb2FkcCAxNltQQ10sIHQzCiAgICAgYXJyYXlQcm9m
aWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGkgOFtQQ10sIHQwCkBAIC0xNzgxLDggKzE3ODAsOCBA
QCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIodDIsIEpTQ2VsbDo6
bV9mbGFnc1t0MF0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykKIAogLnRhcmdldDoKQEAgLTE5
MTIsOCArMTkxMSw3IEBAIF9sbGludF9vcF9zd2l0Y2hfY2hhcjoKICAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJd
LCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQotICAg
IGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJp
bmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlw
ZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJpbmVxIEpT
U3RyaW5nOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxv
YWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKICAgICBidHB6ICB0MCwgLm9wU3dpdGNoT25S
b3BlCkBAIC0xOTYxLDkgKzE5NTksOSBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKCkKICAg
ICBuZWdpIHQzCiAgICAgYmluZXEgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKICAgICBs
b2FkcEZyb21JbnN0cnVjdGlvbihDYWxsT3BDb2RlU2l6ZSAtIDIsIHQxKQotICAgIHN0b3JlcCB0
MCwgQXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QxXQorICAgIHN0b3JlcCB0MCwg
QXJyYXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlSURbdDFdCiAuZG9uZToKIGVuZAogCkBA
IC0yMDI2LDggKzIwMjQsNyBAQCBfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgogICAgIGxv
YWRpIDRbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Ci0gICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRo
aXNOb3RPYmplY3QKKyAgICBiYmIgSlNDZWxsOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3QKICAgICBkb1JldHVybigpCiAKIC5vcFJldE9iamVjdE9y
VGhpc05vdE9iamVjdDoKQEAgLTIwNDIsOCArMjAzOSw3IEBAIF9sbGludF9vcF90b19wcmltaXRp
dmU6CiAgICAgbG9hZGkgNFtQQ10sIHQzCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDEsIHQwKQogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAgYmJuZXEgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0
aXZlU2xvd0Nhc2UKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5v
cFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KQEAgLTIwNzEsNyArMjA2Nyw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQogICAgIGxvYWRpIDhbUENdLCB0
MwogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlE
W3QzXSwgdDEKICAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRT
dHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCiAgICAgbG9hZHAgU3RydWN0
dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKQEAgLTIwNzksNyArMjA3NSw3IEBAIF9sbGludF9v
cF9uZXh0X3BuYW1lOgogLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgogICAgIGJpZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQ
bmFtZVNsb3cKICAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFt0MV0sIHQyCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEKICAgICBicG5lcSB0MSwgW3QwXSwgLm9w
TmV4dFBuYW1lU2xvdwogICAgIGFkZHAgNCwgdDAKICAgICBidHBueiBbdDBdLCAub3BOZXh0UG5h
bWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTIzMjQsNyArMjMyMCw3IEBAIG1hY3JvIGxvYWRXaXRo
U3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2wKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3Bl
cmFuZCwgdDApCiAgICAgbG9hZHAgW2NmciwgdDAsIDhdLCB0MAogICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xv
d1BhdGgKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgc2xvd1BhdGgK
IGVuZAogCiBtYWNybyBnZXRQcm9wZXJ0eSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTY0
NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsMjkgQEAgbWFjcm8gdmFsdWVQcm9m
aWxlKHZhbHVlLCBvcGVyYW5kLCBzY3JhdAogICAgIHN0b3JlcSB2YWx1ZSwgVmFsdWVQcm9maWxl
OjptX2J1Y2tldHNbc2NyYXRjaF0KIGVuZAogCittYWNybyBsb2FkU3RydWN0dXJlKGNlbGwsIHN0
cnVjdHVyZSkKK2VuZAorCittYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2goY2VsbCwgc3Ry
dWN0dXJlLCBzY3JhdGNoKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3ZtW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZHAgVk06Omhl
YXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxl
W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxd
LCBzdHJ1Y3R1cmUKKyAgICBsb2FkcCBbc2NyYXRjaCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJl
CitlbmQKKworbWFjcm8gbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1
Y3R1cmUpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorICAgIGxvYWRwIENvZGVCbG9jazo6bV92
bVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRh
YmxlICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxsXSwgY2VsbAorICAgIGxvYWRwIFtj
ZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1cmUKK2VuZAorCittYWNybyBzdG9yZVN0cnVjdHVy
ZVdpdGhUeXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgbG9hZHEgU3RydWN0
dXJlOjptX2Jsb2IgKyBTdHJ1Y3R1cmVJREJsb2I6OnUuZG91YmxlV29yZFtzdHJ1Y3R1cmVdLCBz
Y3JhdGNoCisgICAgc3RvcmVxIHNjcmF0Y2gsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXQor
ZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTU5NSwxMCAr
NjE4LDEwIEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ss
IC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBd
LCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNj
cmF0Y2godDAsIHQxLCB0MikKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBi
cG5lcSB0MCwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Ns
b3cKICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtNzEzLDExICs3MzYsMTEg
QEAgbWFjcm8gZXF1YWxOdWxsQ29tcGFyaXNvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDIsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFz
aywgLmltbWVkaWF0ZQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAg
IGJ0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKKyAgICBidGJueiBK
U0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNB
c1VuZGVmaW5lZAogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQogICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDBdLCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQw
LCB0MApAQCAtMTA1NCw4ICsxMDc3LDcgQEAgX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQog
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQxLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgYnRieiBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdwogICAgIGRpc3BhdGNoKDUpCiAKIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
OgpAQCAtMTA2NywyNCArMTA4OSwyMyBAQCBfbGxpbnRfb3BfaW5zdGFuY2VvZjoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMywgdDApCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCi0g
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcEluc3Rh
bmNlb2ZTbG93CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQwKQogICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVDZWxsKHQwLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCiAgICAgCiAgICAg
IyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKICAgICBtb3ZlIDEs
IHQwCiAub3BJbnN0YW5jZW9mTG9vcDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDIKLSAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwgdDIKKyAgICBsb2Fk
U3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHQyLCB0MykKKyAgICBsb2FkcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW3QzXSwgdDIKICAgICBicWVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUK
ICAgICBidHF6IHQyLCB0YWdNYXNrLCAub3BJbnN0YW5jZW9mTG9vcAogCiAgICAgbW92ZSAwLCB0
MAogLm9wSW5zdGFuY2VvZkRvbmU6CiAgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQzKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAg
ZGlzcGF0Y2goNCkKIApAQCAtMTEwNCwxNyArMTEyNSwxNyBAQCBfbGxpbnRfb3BfaXNfdW5kZWZp
bmVkOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5vcElz
VW5kZWZpbmVkQ2VsbDoKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAg
ICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnog
SlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQKICAgICBtb3ZlIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQxLCBbY2Zy
LCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6CisgICAg
bG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCi0g
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDEsIHQzCi0gICAgb3JxIFZh
bHVlRmFsc2UsIHQzCi0gICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0KKyAgICBjcGVxIFN0cnVj
dHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKKyAgICBvcnEgVmFsdWVGYWxzZSwgdDAK
KyAgICBzdG9yZXEgdDAsIFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAKIApAQCAtMTE0
Nyw4ICsxMTY4LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDApCiAgICAgYnRx
bnogdDAsIHRhZ01hc2ssIC5vcElzU3RyaW5nTm90Q2VsbAotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAotICAgIGNiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIHQxCisgICAgY2JlcSBKU0NlbGw6Om1fdHlwZVt0
MF0sIFN0cmluZ1R5cGUsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgc3RvcmVxIHQx
LCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaCgzKQpAQCAtMTIwMCwxNCArMTIyMCwxNSBAQCBt
YWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAjIHRvIHRha2UgZmFzdCBwYXRo
IG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3
aGF0CiAgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgogICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigyLCB0MCkKLSAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQotICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbig1LCB0MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDMsIHQyLCB0MSkKKyAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0MSkKKyAgICBicG5l
cSB0MiwgdDEsIC5vcEdldEJ5SWRTbG93CiAgICAgZ2V0UHJvcGVydHlTdG9yYWdlKAogICAgICAg
ICB0MywKICAgICAgICAgdDAsCiAgICAgICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0
Y2gpCi0gICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdl
dEJ5SWRTbG93CisgICAgICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCiAgICAg
ICAgICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgICAgICAgICBsb2FkcSBb
cHJvcGVydHlTdG9yYWdlLCB0Ml0sIHNjcmF0Y2gKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNo
LCBbY2ZyLCB0MSwgOF0KQEAgLTEyMzMsNyArMTI1NCw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlf
bGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcEZyb21J
bnN0cnVjdGlvbig0LCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDMs
IC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDIKKyAgICBtb3ZlIHQzLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQogICAg
IGJ0aXogdDIsIElzQXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXogdDIsIElu
ZGV4aW5nU2hhcGVNYXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTEyNzEsMTUgKzEyOTIs
MTYgQEAgbWFjcm8gcHV0QnlJZChnZXRQcm9wZXJ0eVN0b3JhZ2UpCiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoMSwgMykKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMSwgdDMpCi0gICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKLSAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQw
LCB0MiwgdDEpCisgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIs
IHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDAs
CiAgICAgICAgIHQzLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQot
ICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlk
U2xvdwogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDUsIHQxKQorICAgICAgICAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQogICAgICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0Miwgc2NyYXRjaCkKICAgICAgICAgICAgIHN0b3JlcSBzY3JhdGNoLCBbcHJv
cGVydHlTdG9yYWdlLCB0MV0KICAgICAgICAgICAgIGRpc3BhdGNoKDkpCkBAIC0xMzA0LDkgKzEz
MjYsMTAgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig0LCB0
MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MywgdDAsIC5vcFB1dEJ5SWRTbG93
KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQzKQorICAgIGJwbmVxIHQy
LCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgdDIpCiAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQotICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKLSAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0
MykKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgZ2V0UHJvcGVydHlTdG9y
YWdlKAogICAgICAgICB0MCwKQEAgLTEzMTYsMTUgKzEzMzksMTYgQEAgbWFjcm8gcHV0QnlJZFRy
YW5zaXRpb24oYWRkaXRpb25hbENoZWNrcwogICAgICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEpCiAgICAgICAgICAgICBzdG9yZXEgdDEsIFt0M10KICAgICAgICAgICAgIGxv
YWRwRnJvbUluc3RydWN0aW9uKDYsIHQxKQotICAgICAgICAgICAgc3RvcmVwIHQxLCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXQorICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX2Jsb2IgKyBT
dHJ1Y3R1cmVJREJsb2I6OnUud29yZHMud29yZDFbdDFdLCB0MQorICAgICAgICAgICAgc3RvcmVp
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdCiAgICAgICAgICAgICBkaXNwYXRjaCg5KQog
ICAgICAgICBlbmQpCiBlbmQKIAotbWFjcm8gbm9BZGRpdGlvbmFsQ2hlY2tzKG9sZFN0cnVjdHVy
ZSwgc2NyYXRjaCkKK21hY3JvIG5vQWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwg
c2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
ICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KICAgICBs
b2FkcEZyb21JbnN0cnVjdGlvbig3LCBzY3JhdGNoKQogICAgIGFzc2VydChtYWNybyAob2spIGJ0
cG56IHNjcmF0Y2gsIG9rIGVuZCkKQEAgLTEzMzMsNyArMTM1Nyw4IEBAIG1hY3JvIHN0cnVjdHVy
ZUNoYWluQ2hlY2tzKG9sZFN0cnVjdHVyZSwKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGVbb2xkU3RydWN0dXJlXSwgVmFsdWVOdWxsLCAuZG9uZQogLmxvb3A6CiAgICAgbG9hZHEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgIGxvYWRTdHJ1
Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcocHJvdG9DZWxsLCBzY3JhdGNoMikKKyAgICBtb3ZlIHNj
cmF0Y2gyLCBvbGRTdHJ1Y3R1cmUKICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
Lm9wUHV0QnlJZFNsb3cKICAgICBhZGRwIDgsIHNjcmF0Y2gKICAgICBicW5lcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwgLmxvb3AKQEAgLTEzNjAsOCAr
MTM4NSw4IEBAIF9sbGludF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDMpCisgICAgbW92ZSB0
MCwgdDIKICAgICBhcnJheVByb2ZpbGUodDIsIHQzLCB0MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQzLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQpAQCAtMTQ0NCw3ICsxNDY5LDcgQEAgX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MiwgdDAsIC5vcEdldEJ5UG5hbWVT
bG93KQogICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQogICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwg
dDEKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MykKICAgICBicG5lcSB0MiwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDFdLCAub3BHZXRCeVBuYW1lU2xvdwogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbig2LCB0MykKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdLCB0MwpAQCAtMTQ4NSw4ICsxNTEwLDggQEAgbWFjcm8gcHV0QnlWYWwoaG9sZUNoZWNr
LCBzbG93UGF0aCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKDEsIDMpCiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQw
LCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MgogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDQsIHQzKQorICAgIG1vdmUgdDEsIHQyCiAg
ICAgYXJyYXlQcm9maWxlKHQyLCB0MywgdDApCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIs
IHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMih0MCwgdDMsIC5vcFB1dEJ5VmFs
U2xvdykKQEAgLTE1ODksOCArMTYxNCw4IEBAIG1hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwg
aW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBsb2FkcSBbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBjZWxsSGFuZGxlcih0MiwgU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGxvYWRT
dHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGNlbGxIYW5kbGVyKHQyLCBKU0Nl
bGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKIC50YXJnZXQ6CkBA
IC0xNzIyLDggKzE3NDcsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJ0cW56IHQxLCB0YWdNYXNrLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDAK
LSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
U3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgYmJuZXEgSlNDZWxsOjpt
X3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiaW5l
cSBKU1N0cmluZzo6bV9sZW5ndGhbdDFdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAg
ICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MV0sIHQwCiAgICAgYnRweiAgdDAsIC5vcFN3aXRj
aE9uUm9wZQpAQCAtMTc3Miw5ICsxNzk2LDkgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgp
CiAgICAgbmVncCB0MwogICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldFtjZnIsIHQzLCA4XSwg
dDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigoQ2FsbE9wQ29kZVNpemUg
LSAyKSwgdDEpCi0gICAgc3RvcmVwIHQwLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1
cmVbdDFdCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMKKyAgICBzdG9y
ZWkgdDMsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZUlEW3QxXQogLmRvbmU6CiBl
bmQKIApAQCAtMTgzNSw4ICsxODU5LDcgQEAgX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgotICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwg
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAgZG9SZXR1cm4oKQog
CiAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CkBAIC0xODUxLDggKzE4NzQsNyBAQCBfbGxp
bnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCkKICAgICBidHFueiB0MCwgdGFnTWFzaywg
Lm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxsOjpt
X3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1ByaW1p
dGl2ZUlzSW1tOgogICAgIHN0b3JlcSB0MCwgW2NmciwgdDMsIDhdCiAgICAgZGlzcGF0Y2goMykK
QEAgLTE4ODIsNyArMTkwNCw3IEBAIF9sbGludF9vcF9uZXh0X3BuYW1lOgogICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigyLCB0MykKICAgICBhc3NlcnROb3RDb25zdGFudCh0MykKICAgICBsb2Fk
cSBbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0MSwgdDApCiAgICAgYnBuZXEgdDEs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBu
YW1lU2xvdwogICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90
eXBlQ2hhaW5bdDJdLCB0MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0s
IHQwCkBAIC0xODkwLDcgKzE5MTIsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQ
bmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKICAgICBicWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVb
dDFdLCBWYWx1ZU51bGwsIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlW3QxXSwgdDIKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0MykKICAgICBicG5lcSB0MSwg
W3QwXSwgLm9wTmV4dFBuYW1lU2xvdwogICAgIGFkZHAgOCwgdDAKICAgICBidHBueiBbdDBdLCAu
b3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKQEAgLTIwOTYsOCArMjExOCw5IEBAIF9sbGlu
dF9vcF9yZXNvbHZlX3Njb3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5k
LCBzbG93UGF0aCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwg
dDIsIHQxKQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQotICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgc2xvd1BhdGgKKyAgICBicG5lcSB0MiwgdDEsIHNsb3dQ
YXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMTY0
NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC00MzksMTEgKzQzOSwxMiBAQCBtYWNybyBzbG93UGF0aEZv
ckNhbGwoc2xvd1BhdGgpCiAgICAgICAgIGVuZCkKIGVuZAogCi1tYWNybyBhcnJheVByb2ZpbGUo
c3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBwcm9maWxlLCBzY3JhdGNoKQotICAgIGNvbnN0IHN0
cnVjdHVyZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQotICAgIGNvbnN0IGluZGV4aW5nVHlw
ZSA9IHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZQotICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEFycmF5
UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVjdHVyZVtwcm9maWxlXQotICAgIGxvYWRiIFN0cnVjdHVy
ZTo6bV9pbmRleGluZ1R5cGVbc3RydWN0dXJlXSwgaW5kZXhpbmdUeXBlCittYWNybyBhcnJheVBy
b2ZpbGUoY2VsbEFuZEluZGV4aW5nVHlwZSwgcHJvZmlsZSwgc2NyYXRjaCkKKyAgICBjb25zdCBj
ZWxsID0gY2VsbEFuZEluZGV4aW5nVHlwZQorICAgIGNvbnN0IGluZGV4aW5nVHlwZSA9IGNlbGxB
bmRJbmRleGluZ1R5cGUgCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBz
Y3JhdGNoCisgICAgc3RvcmVpIHNjcmF0Y2gsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVj
dHVyZUlEW3Byb2ZpbGVdCisgICAgbG9hZGIgSlNDZWxsOjptX2luZGV4aW5nVHlwZVtjZWxsXSwg
aW5kZXhpbmdUeXBlCiBlbmQKIAogbWFjcm8gY2hlY2tNYXJrQnl0ZShjZWxsLCBzY3JhdGNoMSwg
c2NyYXRjaDIsIGNvbnRpbnVhdGlvbikKQEAgLTYyMCw4ICs2MjEsOCBAQCBtYWNybyBhbGxvY2F0
ZUpTT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0CiAgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zm
c2V0T2ZGaXJzdEZyZWVDZWxsW2FsbG9jYXRvcl0KICAgICAKICAgICAgICAgIyBJbml0aWFsaXpl
IHRoZSBvYmplY3QuCi0gICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbcmVzdWx0XQogICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Jlc3Vs
dF0KKyAgICAgICAgc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8ocmVzdWx0LCBzdHJ1Y3R1cmUs
IHNjcmF0Y2gxKQogICAgIGVuZAogZW5kCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcg
KzExNCw3IEBAIHZvaWQgQXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVySWYKICAgICBt
X292ZXJyb2RlQ2FsbGVyID0gdHJ1ZTsKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKICAgICBkZXNjcmlwdG9yLnNldEFjY2Vzc29yRGVzY3JpcHRvcihnbG9iYWxPYmplY3QoKS0+
dGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIodm0pLCBEb250RW51bSB8IERvbnREZWxldGUgfCBB
Y2Nlc3Nvcik7Ci0gICAgbWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhl
Yywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgbWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlciwgZGVzY3JpcHRvciwgZmFsc2UpOwogfQogCiB2b2lkIEFyZ3Vt
ZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlZUlmTmVjZXNzYXJ5KEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxl
ZUlmCiAgICAgbV9vdmVycm9kZUNhbGxlZSA9IHRydWU7CiAgICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3NvckRlc2NyaXB0b3IoZ2xvYmFs
T2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZtKSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgQWNjZXNzb3IpOwotICAgIG1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5
KHRoaXMsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSwgZGVzY3JpcHRvciwgZmFsc2Up
OworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBl
eGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKIH0KIAog
Ym9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZp
c2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCiAgICAgeyAKLSAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQXJndW1lbnRz
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKICAgICB9CiAgICAgCiAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZk51bUFyZ3VtZW50cygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihBcmd1bWVudHMsIG1fbnVtQXJndW1lbnRzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTY0NzI1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsMTYgKzIxMiwxNiBAQCB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoCiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc2xvdC5nZXRWYWx1
ZShleGVjLCBmcm9tKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAg
ICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCB0bywgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09i
ai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRv
KSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgewogICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBm
b3IgKHVuc2lnbmVkIGsgPSBsZW5ndGg7IGsgPiBsZW5ndGggLSBjb3VudDsgLS1rKSB7Ci0gICAg
ICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRo
aXNPYmosIGV4ZWMsIGsgLSAxKSkgeworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgayAtIDEp
KSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yNTYsOCArMjU2LDggQEAgdm9pZCB1bnNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIAogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgZnJv
bSk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwotICAgICAgICB9IGVsc2UgaWYgKCF0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhl
YywgdG8pKSB7CisgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOworICAgICAgICB9IGVs
c2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjgwLDExICsyODAsMTEgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogCiAgICAgLy8gMy4gSWYgSXNDYWxsYWJs
ZShmdW5jKSBpcyBmYWxzZSwgdGhlbiBsZXQgZnVuYyBiZSB0aGUgc3RhbmRhcmQgYnVpbHQtaW4g
bWV0aG9kIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKDE1LjIuNC4yKS4KICAgICBpZiAoIWZ1
bmN0aW9uLmlzQ2VsbCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5v
bnRyaXZpYWxTdHJpbmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikp
OwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIltvYmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1l
KHRoaXNPYmplY3QpLCAiXSIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIikpOwogCiAgICAgLy8g
NC4gUmV0dXJuIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tDYWxsXV0gaW50ZXJuYWwgbWV0
aG9kIG9mIGZ1bmMgcHJvdmlkaW5nIGFycmF5IGFzIHRoZSB0aGlzIHZhbHVlIGFuZCBhbiBlbXB0
eSBhcmd1bWVudHMgbGlzdC4KICAgICBpZiAoIWlzSlNBcnJheSh0aGlzT2JqZWN0KSB8fCBjYWxs
VHlwZSAhPSBDYWxsVHlwZUhvc3QgfHwgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uICE9IGFycmF5
UHJvdG9GdW5jSm9pbikKQEAgLTQ2OCw3ICs0NjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBs
ZW5ndGggLSAxKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgaWYgKCF0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhl
YywgbGVuZ3RoIC0gMSkpIHsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEp
KSB7CiAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQpAQCAtNTI4LDE5ICs1MjgsMTkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgICAgICBpZiAob2JqMikgewot
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBrLCBvYmoyLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIG9iajIsIHRydWUpOwogICAg
ICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBrKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGspKSB7CiAgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvYmopIHsKLSAgICAgICAgICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxLCBvYmos
IHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1
dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxLCBvYmosIHRydWUpOwogICAgICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsazEpKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGsxKSkgewogICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgICAgIH0KQEAgLTY1OCwxOCArNjU4LDE4IEBAIHN0YXRpYyBib29sIHBlcmZvcm1TbG93
U29ydChFeGVjU3RhdGUqIGUKICAgICAgICAgLy8gU3dhcCB0aGVtaW4gYW5kIGkKICAgICAgICAg
aWYgKHRoZW1pbiA+IGkpIHsKICAgICAgICAgICAgIGlmIChtaW5PYmopIHsKLSAgICAgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGks
IG1pbk9iaiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSwgbWluT2JqLCB0cnVlKTsKICAg
ICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
bGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpKSkgewogICAgICAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlm
IChpT2JqKSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4sIGlPYmosIHRydWUpOworICAgICAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIHRoZW1pbiwgaU9iaiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICghdGhp
c09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqLCBleGVjLCB0aGVtaW4pKSB7CiAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtNzAzLDcgKzcwMyw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBuYW1lQXJyYXko
ZXhlYyk7Ci0gICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlz
T2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmos
IGV4ZWMsIG5hbWVBcnJheSwgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCkBAIC03MzQsNyArNzM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICBpZiAoaW5kZXggPCBmbGF0QXJyYXktPmxlbmd0aCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpbmRl
eCkpIHsKKyAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGluZGV4KSkgewogICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9
CkBAIC03NDMsNyArNzQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRgogICAgIGZvciAoc2l6ZV90IGkgPSBmbGF0QXJyYXktPmxlbmd0aCgpOyBpLS07KSB7CiAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPckhvbGUoZmxhdEFycmF5LCBleGVjLCBpKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUpOwotICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJs
ZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIHZhbHVlLCB0cnVlKTsKKyAgICAgICAg
dGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhl
YywgaSwgdmFsdWUsIHRydWUpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
QEAgLTgwMCw3ICs4MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgYWRkaXRpb25hbEFyZ3M7ICsraykg
ewotICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGsgKyBiZWdpbiwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKKyAg
ICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09i
aiwgZXhlYywgayArIGJlZ2luLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrICsgMiksIHRydWUp
OwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KQEAgLTgyNSw3ICs4MjUsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBmb3IgKHVu
c2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKLSAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChrKSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGsp
LCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJl
dmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdG9fdGhpcykKICAgICBCRUdJTigpOwogICAgIEpTVmFsdWUgdjEgPSBP
UCgxKS5qc1ZhbHVlKCk7CiAgICAgaWYgKHYxLmlzQ2VsbCgpKQotICAgICAgICBwY1syXS51LnN0
cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJs
ZSgpLCB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAgICBwY1syXS51LnN0cnVjdHVy
ZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgdjEuYXNDZWxs
KCktPnN0cnVjdHVyZSh2bSkpOwogICAgIGVsc2UKICAgICAgICAgcGNbMl0udS5zdHJ1Y3R1cmUu
Y2xlYXIoKTsKICAgICBSRVRVUk4odjEudG9UaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSA/IFN0cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxNjQ3MjUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIGJvb2wgaXNGdW5j
dGlvbkV4ZWN1dGFibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlOworICAgICAgICByZXR1cm4g
dHlwZSgpID09IEZ1bmN0aW9uRXhlY3V0YWJsZVR5cGU7CiAgICAgfQogICAgIGJvb2wgaXNQcm9n
cmFtRXhlY3V0YWJsZSgpCiAgICAgewpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCiBwcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNG
b3JDYWxsOwogICAgIGludCBtX251bVBhcmFtZXRlcnNGb3JDb25zdHJ1Y3Q7CiAKQEAgLTY4MCw3
ICs2ODAsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgdm9pZCBFeGVjdXRhYmxlQmFzZTo6Y2xlYXJD
b2RlVmlydHVhbChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKIHsKLSAgICBzd2l0Y2ggKGV4
ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSkgeworICAgIHN3aXRjaCAo
ZXhlY3V0YWJsZS0+dHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsRXhlY3V0YWJsZVR5cGU6CiAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2Rl
KCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6CkBAIC02OTQsNyArNjk0LDcgQEAg
aW5saW5lIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcgogCiBpbmxpbmUgdm9pZCBT
Y3JpcHRFeGVjdXRhYmxlOjp1bmxpbmtDYWxscygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUoKSkgewogICAgIGNhc2Ug
RXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRhYmxl
Kj4odGhpcyktPnVubGlua0NhbGxzKCk7CiAgICAgY2FzZSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5j
cHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
dHRlclNldHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgSlNWYWx1ZSBj
YWxsR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
Z2V0dGVyLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsKKyAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdl
dENhbGxEYXRhKGdldHRlciwgY2FsbERhdGEpOwogICAgIHJldHVybiBjYWxsKGV4ZWMsIGdldHRl
ciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBBcmdMaXN0KCkpOwogfQogCkBAIC03NCw3ICs3
NCw3IEBAIHZvaWQgY2FsbFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICBhcmdz
LmFwcGVuZCh2YWx1ZSk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IHNldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBjYWxs
RGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5nZXRDYWxsRGF0YShzZXR0ZXIsIGNhbGxEYXRhKTsKICAgICBjYWxsKGV4ZWMsIHNl
dHRlciwgY2FsbFR5cGUsIGNhbGxEYXRhLCBiYXNlLCBhcmdzKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5j
cHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
aXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRl
ICJMTEludERhdGEuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCiAjaW5jbHVkZSAi
V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL2R0b2EuaD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lv
biAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM4LDggKzIzOCw4IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENv
dW50U2xvd0Nhc2UoVk0mIHYKIHsKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBlbnN1cmVB
cnJheVN0b3JhZ2Uodm0pOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0
dGVyZmx5KCk7Ci0gICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0cnVjdHVyZSgpLT5v
dXRPZkxpbmVDYXBhY2l0eSgpOwotICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVy
ZSgpLT5vdXRPZkxpbmVTaXplKCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlDYXBhY2l0eSA9IHN0
cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlT
aXplID0gc3RydWN0dXJlKHZtKS0+b3V0T2ZMaW5lU2l6ZSgpOwogCiAgICAgLy8gSWYgbm90LCB3
ZSBzaG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgb24gdGhlIGZhc3QgcGF0aC4KICAgICBBU1NFUlQo
IWFkZFRvRnJvbnQgfHwgY291bnQgPiBzdG9yYWdlLT5tX2luZGV4Qmlhcyk7CkBAIC0yNzMsNyAr
MjczLDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgIHVu
c2lnbmVkIG5ld1N0b3JhZ2VDYXBhY2l0eTsKICAgICAvLyBJZiB0aGUgY3VycmVudCBzdG9yYWdl
IGFycmF5IGlzIHN1ZmZpY2llbnRseSBsYXJnZSAoYnV0IG5vdCB0b28gbGFyZ2UhKSB0aGVuIGp1
c3Qga2VlcCB1c2luZyBpdC4KICAgICBpZiAoY3VycmVudENhcGFjaXR5ID4gZGVzaXJlZENhcGFj
aXR5ICYmIGlzRGVuc2VFbm91Z2hGb3JWZWN0b3IoY3VycmVudENhcGFjaXR5LCByZXF1aXJlZFZl
Y3Rvckxlbmd0aCkpIHsKLSAgICAgICAgbmV3QWxsb2NCYXNlID0gYnV0dGVyZmx5LT5iYXNlKHN0
cnVjdHVyZSgpKTsKKyAgICAgICAgbmV3QWxsb2NCYXNlID0gYnV0dGVyZmx5LT5iYXNlKHN0cnVj
dHVyZSh2bSkpOwogICAgICAgICBuZXdTdG9yYWdlQ2FwYWNpdHkgPSBjdXJyZW50Q2FwYWNpdHk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBCdXR0ZXJmbHk6OnRvdGFs
U2l6ZSgwLCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IoZGVz
aXJlZENhcGFjaXR5KSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0
Q291bnRTbG93Q2FzZShWTSYgdgogICAgICAgICAvLyBBdG9taWMgZGVjYXksICsgdGhlIHBvc3Qt
Y2FwYWNpdHkgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB3aGF0IGlzIGF2YWlsYWJsZS4KICAgICAg
ICAgcG9zdENhcGFjaXR5ID0gbWluKChzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSAtIGxlbmd0aCkg
Pj4gMSwgbmV3U3RvcmFnZUNhcGFjaXR5IC0gcmVxdWlyZWRWZWN0b3JMZW5ndGgpOwogICAgICAg
ICAvLyBJZiB3ZSdyZSBtb3ZpbmcgY29udGVudHMgd2l0aGluIHRoZSBzYW1lIGFsbG9jYXRpb24s
IHRoZSBwb3N0LWNhcGFjaXR5IGlzIGJlaW5nIHJlZHVjZWQuCi0gICAgICAgIEFTU0VSVChuZXdB
bGxvY0Jhc2UgIT0gYnV0dGVyZmx5LT5iYXNlKHN0cnVjdHVyZSgpKSB8fCBwb3N0Q2FwYWNpdHkg
PCBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSAtIGxlbmd0aCk7CisgICAgICAgIEFTU0VSVChuZXdB
bGxvY0Jhc2UgIT0gYnV0dGVyZmx5LT5iYXNlKHN0cnVjdHVyZSh2bSkpIHx8IHBvc3RDYXBhY2l0
eSA8IHN0b3JhZ2UtPnZlY3Rvckxlbmd0aCgpIC0gbGVuZ3RoKTsKICAgICB9CiAKICAgICB1bnNp
Z25lZCBuZXdWZWN0b3JMZW5ndGggPSByZXF1aXJlZFZlY3Rvckxlbmd0aCArIHBvc3RDYXBhY2l0
eTsKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNl
KFZNJiB2CiAgICAgICAgIEFTU0VSVChjb3VudCArIHVzZWRWZWN0b3JMZW5ndGggPD0gbmV3VmVj
dG9yTGVuZ3RoKTsKICAgICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
LT5tX3ZlY3RvciArIGNvdW50LCBzdG9yYWdlLT5tX3ZlY3Rvciwgc2l6ZW9mKEpTVmFsdWUpICog
dXNlZFZlY3Rvckxlbmd0aCk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5LT5wcm9wZXJ0
eVN0b3JhZ2UoKSAtIHByb3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAt
IHByb3BlcnR5U2l6ZSwgc2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXplICsgc2l6ZW9mKElu
ZGV4aW5nSGVhZGVyKSArIEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7Ci0gICAgfSBlbHNlIGlm
ICgobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUoKSkpIHx8IChuZXdJ
bmRleEJpYXMgIT0gc3RvcmFnZS0+bV9pbmRleEJpYXMpKSB7CisgICAgfSBlbHNlIGlmICgobmV3
QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUodm0pKSkgfHwgKG5ld0luZGV4
QmlhcyAhPSBzdG9yYWdlLT5tX2luZGV4QmlhcykpIHsKICAgICAgICAgbWVtbW92ZShuZXdCdXR0
ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gcHJvcGVydHlTaXplLCBidXR0ZXJmbHktPnByb3Bl
cnR5U3RvcmFnZSgpIC0gcHJvcGVydHlTaXplLCBzaXplb2YoSlNWYWx1ZSkgKiBwcm9wZXJ0eVNp
emUgKyBzaXplb2YoSW5kZXhpbmdIZWFkZXIpICsgQXJyYXlTdG9yYWdlOjpzaXplRm9yKDApKTsK
ICAgICAgICAgbWVtbW92ZShuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5tX3ZlY3Rvciwg
c3RvcmFnZS0+bV92ZWN0b3IsIHNpemVvZihKU1ZhbHVlKSAqIHVzZWRWZWN0b3JMZW5ndGgpOwog
CkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGhXaXRoQXJyYXlTdG9y
YWdlKAogCiBib29sIEpTQXJyYXk6OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IG5ld0xlbmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbikKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIGlmICghbmV3TGVuZ3RoKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC00MjAsNyArNDIwLDcgQEAgYm9vbCBKU0FycmF5OjpzZXRMZW5ndGgo
RXhlY1N0YXRlKiBleGVjLAogICAgICAgICAgICAgZW5zdXJlTGVuZ3RoKGV4ZWMtPnZtKCksIG5l
d0xlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBp
ZiAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgeworICAg
ICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLSA+IG5l
d0xlbmd0aDspCiAgICAgICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUo
KVtpXSA9IFFOYU47CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NDIsNyArNDQyLDcgQEAgYm9vbCBK
U0FycmF5OjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLAogCiBKU1ZhbHVlIEpTQXJyYXk6OnBv
cChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNs
YXNzOgogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgCkBAIC01MzcsNyAr
NTM3LDcgQEAgSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogLy8gIC0gcHVz
aGluZyB0byBhbiBhcnJheSBvZiBsZW5ndGggMl4zMi0xIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1
dCB0aHJvd3MgYSByYW5nZSBlcnJvci4KIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNs
YXNzOiB7CiAgICAgICAgIGNyZWF0ZUluaXRpYWxVbmRlY2lkZWQoZXhlYy0+dm0oKSwgMCk7CiAg
ICAgICAgIEZBTExUSFJPVUdIOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHZvaWQgSlNBcnJheTo6cHVz
aChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+
cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAg
IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwg
dmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdl
RXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmEKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJB
WV9JTkRFWCkgewotICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBl
eGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMt
PnZtKCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAg
ICAgICAgICAgaWYgKCFleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFs
aWQgYXJyYXkgbGVuZ3RoIikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjE3LDcgKzYxNyw3
IEBAIHZvaWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKGxlbmd0aCA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAg
ICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKKyAgICAgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4
KHRoaXMsIGV4ZWMsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYgKCFleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgSlNBcnJheTo6
cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKIAogICAgICAgICAvLyBQdXNoaW5nIHRvIGFuIGFy
cmF5IG9mIGludmFsaWQgbGVuZ3RoICgyXjMxLTEpIHN0b3JlcyB0aGUgcHJvcGVydHksIGJ1dCB0
aHJvd3MgYSByYW5nZSBlcnJvci4KICAgICAgICAgaWYgKHN0b3JhZ2UtPmxlbmd0aCgpID4gTUFY
X0FSUkFZX0lOREVYKSB7Ci0gICAgICAgICAgICBtZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRo
aXMsIGV4ZWMsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBt
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5s
ZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVTNS4xIDE1LjQuNC43
IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYgKCFleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIikpOwpAQCAt
Njc1LDcgKzY3NSw3IEBAIGJvb2wgSlNBcnJheTo6c2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UK
ICAgICAKICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNl
IGluIGFuIGFibm9ybWFsIHN0YXRlLAogICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0g
aW4gQXJyYXlQcm90b3R5cGUuCi0gICAgaWYgKG9sZExlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZh
bHVlc0luVmVjdG9yIHx8IGluU3BhcnNlSW5kZXhpbmdNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1
dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChvbGRMZW5ndGggIT0gc3Rv
cmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBpblNwYXJzZUluZGV4aW5nTW9kZSgpIHx8IHNo
b3VsZFVzZVNsb3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoIW9sZExlbmd0aCkKQEAgLTc0OSw3ICs3NDksNyBAQCBib29sIEpTQXJyYXk6OnNo
aWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoY291bnQgPiAw
KTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAg
IHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKQEAgLTg0Nyw3ICs4NDcsNyBAQCBib29sIEpTQXJyYXk6
OnVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhCiAKICAgICAvLyBJZiB0aGUgYXJyYXkgY29udGFp
bnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRlLAogICAgIC8vIHVz
ZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCi0gICAgaWYgKGxlbmd0
aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IHN0b3JhZ2UtPmluU3BhcnNlTW9k
ZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAg
ICBpZiAobGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwgc3RvcmFnZS0+
aW5TcGFyc2VNb2RlKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5cGUoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgbW92ZUZyb250ID0gIXN0YXJ0SW5kZXggfHwg
c3RhcnRJbmRleCA8IGxlbmd0aCAvIDI7CkBAIC04ODUsNyArODg1LDcgQEAgYm9vbCBKU0FycmF5
Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQogCiBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCkKIHsKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xh
c3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgIC8vIFdlIGNvdWxkIGhh
bmRsZSB0aGlzLiBCdXQgaXQgc2hvdWxkbid0IGV2ZXIgY29tZSB1cCwgc28gd2Ugd29uJ3QuCkBA
IC05OTQsMjAgKzk5NCwyMCBAQCBzdGF0aWMgaW50IGNvbXBhcmVCeVN0cmluZ1BhaXJGb3JRU29y
dChjCiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUodmEtPnNlY29uZCwgdmItPnNlY29uZCk7
CiB9CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRl
eGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVj
dG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlIGNh
bGxUeXBlLCBjb25zdCBDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgQVNTRVJUKGluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhJbnQzMiB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91Ymxl
IHx8IGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhDb250aWd1b3VzIHx8IGluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOworICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhJbnQzMiB8fCBhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUg
fHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQ29udGlndW91cyB8fCBhcnJheUluZGV4
aW5nVHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UpOwogICAgIAogICAgIHVuc2lnbmVkIGxl
bmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZDsKICAgICB1bnNpZ25lZCBuZXdSZWxldmFudExlbmd0
aDsKLSAgICBjb21wYWN0Rm9yU29ydGluZzxpbmRleGluZ1R5cGU+KAorICAgIGNvbXBhY3RGb3JT
b3J0aW5nPGFycmF5SW5kZXhpbmdUeXBlPigKICAgICAgICAgbGVuZ3RoTm90SW5jbHVkaW5nVW5k
ZWZpbmVkLAogICAgICAgICBuZXdSZWxldmFudExlbmd0aCk7CiAgICAgCi0gICAgQ29udGlndW91
c0pTVmFsdWVzIGRhdGEgPSBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpOworICAgIENvbnRp
Z3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpOwog
ICAgIAotICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlICYmIGFy
cmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgeworICAgIGlmIChhcnJheUluZGV4aW5n
VHlwZSA9PSBBcnJheVdpdGhBcnJheVN0b3JhZ2UgJiYgYXJyYXlTdG9yYWdlKCktPm1fc3BhcnNl
TWFwLmdldCgpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTYsNyArMTAxNiw3IEBAIHZvaWQgSlNBcnJheTo6c29y
dE51bWVyaWNWZWN0b3IoRXhlY1N0YXQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGJvb2wg
YWxsVmFsdWVzQXJlTnVtYmVycyA9IHRydWU7Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsK
KyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQz
MjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAgYnJlYWs7CkBAIC0xMDM4LDcg
KzEwMzgsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0CiAgICAg
Ly8gYWxzbyBkb24ndCByZXF1aXJlIG1lcmdlc29ydCdzIHN0YWJpbGl0eSwgc2luY2UgdGhlcmUn
cyBubyB1c2VyIHZpc2libGUKICAgICAvLyBzaWRlLWVmZmVjdCBmcm9tIHN3YXBwaW5nIHRoZSBv
cmRlciBvZiBlcXVhbCBwcmltaXRpdmUgdmFsdWVzLgogICAgIGludCAoKmNvbXBhcmUpKGNvbnN0
IHZvaWQqLCBjb25zdCB2b2lkKik7Ci0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsKKyAgICBz
d2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKICAg
ICAgICAgY29tcGFyZSA9IGNvbXBhcmVOdW1iZXJzRm9yUVNvcnRXaXRoSW50MzI7CiAgICAgICAg
IGJyZWFrOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpYyhF
eGVjU3RhdGUqIGV4ZQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAK
LSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ29udGln
dW91c1R5cGVBY2Nlc3NvCiB9OwogCiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5
cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5k
ZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KIHZvaWQgSlNBcnJheTo6c29ydENvbXBh
Y3RlZFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIENvbnRpZ3VvdXNEYXRhPFN0b3JhZ2VUeXBlPiBk
YXRhLCB1bnNpZ25lZCByZWxldmFudExlbmd0aCkKIHsKICAgICBpZiAoIXJlbGV2YW50TGVuZ3Ro
KQpAQCAtMTEzOCwxMSArMTEzOCwxMSBAQCB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0
b3IoRXhlY1N0CiAgICAgYm9vbCBpc1NvcnRpbmdQcmltaXRpdmVWYWx1ZXMgPSB0cnVlOwogCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWxldmFudExlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGluZGV4aW5nVHlwZT46Omdl
dEFzVmFsdWUoZGF0YSwgaSk7Ci0gICAgICAgIEFTU0VSVChpbmRleGluZ1R5cGUgIT0gQXJyYXlX
aXRoSW50MzIgfHwgdmFsdWUuaXNJbnQzMigpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IENv
bnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+OjpnZXRBc1ZhbHVlKGRhdGEs
IGkpOworICAgICAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIg
fHwgdmFsdWUuaXNJbnQzMigpKTsKICAgICAgICAgQVNTRVJUKCF2YWx1ZS5pc1VuZGVmaW5lZCgp
KTsKICAgICAgICAgdmFsdWVzW2ldLmZpcnN0ID0gdmFsdWU7Ci0gICAgICAgIGlmIChpbmRleGlu
Z1R5cGUgIT0gQXJyYXlXaXRoRG91YmxlICYmIGluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQz
MikKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiBh
cnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMikKICAgICAgICAgICAgIGlzU29ydGlu
Z1ByaW1pdGl2ZVZhbHVlcyA9IGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyAmJiB2YWx1ZS5pc1By
aW1pdGl2ZSgpOwogICAgIH0KICAgICAgICAgCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIEpT
QXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgCiAgICAgLy8gSWYgdGhlIHRv
U3RyaW5nIGZ1bmN0aW9uIGNoYW5nZWQgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgb3IgdmVjdG9y
IHN0b3JhZ2UsCiAgICAgLy8gaW5jcmVhc2UgdGhlIGxlbmd0aCB0byBoYW5kbGUgdGhlIG9yaWdu
YWwgbnVtYmVyIG9mIGFjdHVhbCB2YWx1ZXMuCi0gICAgc3dpdGNoIChpbmRleGluZ1R5cGUpIHsK
KyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAgY2FzZSBBcnJheVdpdGhJbnQz
MjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICBjYXNlIEFycmF5V2l0aENvbnRpZ3Vv
dXM6CkBAIC0xMTgzLDcgKzExODMsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0
b3IoRXhlY1N0CiAgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgICAgIGlmIChh
cnJheVN0b3JhZ2UoKS0+dmVjdG9yTGVuZ3RoKCkgPCByZWxldmFudExlbmd0aCkgewogICAgICAg
ICAgICAgaW5jcmVhc2VWZWN0b3JMZW5ndGgoZXhlYy0+dm0oKSwgcmVsZXZhbnRMZW5ndGgpOwot
ICAgICAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxpbmRleGluZ1R5cGU+OjpyZXBsYWNl
RGF0YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZlY3RvcigpKTsKKyAgICAgICAg
ICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8YXJyYXlJbmRleGluZ1R5cGU+OjpyZXBsYWNlRGF0
YVJlZmVyZW5jZSgmZGF0YSwgYXJyYXlTdG9yYWdlKCktPnZlY3RvcigpKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPmxlbmd0aCgpIDwgcmVsZXZhbnRMZW5ndGgpCiAg
ICAgICAgICAgICBhcnJheVN0b3JhZ2UoKS0+c2V0TGVuZ3RoKHJlbGV2YW50TGVuZ3RoKTsKQEAg
LTExOTQsNyArMTE5NCw3IEBAIHZvaWQgSlNBcnJheTo6c29ydENvbXBhY3RlZFZlY3RvcihFeGVj
U3QKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbGV2YW50TGVuZ3RoOyBp
KyspCi0gICAgICAgIENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8aW5kZXhpbmdUeXBlPjo6c2V0V2l0
aFZhbHVlKHZtLCB0aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3QpOworICAgICAgICBDb250
aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5kZXhpbmdUeXBlPjo6c2V0V2l0aFZhbHVlKHZtLCB0
aGlzLCBkYXRhLCBpLCB2YWx1ZXNbaV0uZmlyc3QpOwogICAgIAogICAgIEhlYXA6OmhlYXAodGhp
cyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1ZXMpOwogfQpAQCAtMTIwMyw3ICsxMjAzLDcgQEAg
dm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBBU1NFUlQoIWluU3Bh
cnNlSW5kZXhpbmdNb2RlKCkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJy
YXlDbGFzczoKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDoKICAgICAgICAgcmV0dXJuOwpA
QCAtMTMzNSwxMSArMTMzNSwxMSBAQCBzdHJ1Y3QgQVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNv
bXBhcmUgCiAgICAgc3RhdGljIGhhbmRsZSBudWxsKCkgeyByZXR1cm4gMHg3RkZGRkZGRjsgfQog
fTsKIAotdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4
aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZT4KIHZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwg
Y29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGlu
Z01vZGUoKSk7Ci0gICAgQVNTRVJUKGluZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpOworICAgIEFTU0VSVChhcnJheUluZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUo
KSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgaWdub3JlcyBleGNlcHRpb25zIHJhaXNlZCBp
biB0aGUgY29tcGFyZSBmdW5jdGlvbiBvciBpbiB0b051bWJlci4KICAgICAgICAgCkBAIC0xMzQ5
LDcgKzEzNDksNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAg
ICAgaWYgKG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5k
ZXhpbmdUeXBlPigpOworICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSByZWxldmFudExl
bmd0aDxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAgICB1bnNpZ25lZCBub2RlQ291bnQgPSB1c2Vk
VmVjdG9yTGVuZ3RoOwogICAgICAgICAKICAgICBpZiAoIW5vZGVDb3VudCkKQEAgLTE0MTYsMTQg
KzE0MTYsMTQgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1l
bnRzVG9FeHRyYWN0VGhyZXNob2xkOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJm
bHkoKS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09
IEFycmF5V2l0aERvdWJsZSkKICAgICAgICAgICAgIGJ1dHRlcmZseSgpLT5jb250aWd1b3VzRG91
YmxlKClbaV0gPSB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52YWx1ZS5hc051bWJl
cigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjdXJyZW50SW5kZXhpbmdEYXRhKClbaV0u
c2V0KHZtLCB0aGlzLCB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzWyppdGVyXS52YWx1ZSk7CiAg
ICAgICAgICsraXRlcjsKICAgICB9CiAgICAgLy8gUHV0IHVuZGVmaW5lZCB2YWx1ZXMgYmFjayBp
bi4KLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5V2l0aEludDMyOgogICAgIGNhc2Ug
QXJyYXlXaXRoRG91YmxlOgogICAgICAgICBBU1NFUlQoZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hv
bGQgPT0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQpOwpAQCAtMTQzOSwxMyArMTQzOSwxMyBA
QCB2b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjCiAgICAgLy8gRW5zdXJl
IHRoYXQgdW51c2VkIHZhbHVlcyBpbiB0aGUgdmVjdG9yIGFyZSB6ZXJvZWQgb3V0LgogICAgIGZv
ciAodW5zaWduZWQgaSA9IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNob2xkOyBpIDwgY2xlYXJFbGVt
ZW50c1RocmVzaG9sZDsgKytpKSB7CiAgICAgICAgIEFTU0VSVChpIDwgYnV0dGVyZmx5KCktPnZl
Y3Rvckxlbmd0aCgpKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9
PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdp
dGhEb3VibGUpCiAgICAgICAgICAgICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpW2ld
ID0gUU5hTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3VycmVudEluZGV4aW5nRGF0YSgp
W2ldLmNsZWFyKCk7CiAgICAgfQogICAgIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSgpKSkKICAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBu
ZXdVc2VkVmVjdG9yTGVuZ3RoOwogfQogCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIEpTQXJy
YXk6OnNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUlu
ZGV4aW5nTW9kZSgpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xh
c3M6CiAgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CiAgICAgICAgIHJldHVybjsKQEAgLTE0
ODUsNyArMTQ4NSw3IEBAIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiBleGUK
ICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiB2ZWN0
b3I7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAg
ICByZXR1cm47CiAgICAgICAgIApAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgdm9pZCBKU0FycmF5Ojpj
b3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRlKgogICAgIHVuc2lnbmVkIHZlY3RvckVuZDsKICAgICB1
bnNpZ25lZCBsZW5ndGggPSBjb3B5TGVuZ3RoICsgZmlyc3RWYXJBcmdPZmZzZXQ7CiAgICAgQVNT
RVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5ndGgoKSk7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTYwMiw0MCArMTYw
Miw0MCBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgICAg
IGNhbGxGcmFtZS0+c2V0QXJndW1lbnQoaSAtIGZpcnN0VmFyQXJnT2Zmc2V0LCBnZXQoZXhlYywg
aSkpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgordGVtcGxhdGU8
SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgogdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9y
U29ydGluZyh1bnNpZ25lZCYgbnVtRGVmaW5lZCwgdW5zaWduZWQmIG5ld1JlbGV2YW50TGVuZ3Ro
KQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7Ci0gICAgQVNTRVJUKGlu
ZGV4aW5nVHlwZSA9PSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpOworICAgIEFTU0VSVChh
cnJheUluZGV4aW5nVHlwZSA9PSBpbmRleGluZ1R5cGUoKSk7CiAKLSAgICB1bnNpZ25lZCBteVJl
bGV2YW50TGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8aW5kZXhpbmdUeXBlPigpOworICAgIHVuc2ln
bmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5nVHlwZT4o
KTsKICAgICAKICAgICBudW1EZWZpbmVkID0gMDsKICAgICB1bnNpZ25lZCBudW1VbmRlZmluZWQg
PSAwOwogICAgICAgICAKICAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IG15UmVsZXZhbnRMZW5ndGg7
ICsrbnVtRGVmaW5lZCkgewogICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8IG1fYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
SW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMy
KSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMy
KClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBBU1NFUlQodi5pc0ludDMyKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdp
dGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERv
dWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91c0Rv
dWJsZSgpW251bURlZmluZWRdOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIEpT
VmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZF0uZ2V0KCk7
CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtu
dW1EZWZpbmVkXS5nZXQoKTsKICAgICAgICAgaWYgKCF2IHx8IHYuaXNVbmRlZmluZWQoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
bnVtRGVmaW5lZDsgaSA8IG15UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICBBU1NFUlQo
aSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChpbmRleGluZ1R5
cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEludDMyKSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBtX2J1dHRlcmZseS0+
Y29udGlndW91c0ludDMyKClbaV0uZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXYpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xNjQ0LDcgKzE2NDQsNyBAQCB2b2lkIEpTQXJyYXk6OmNv
bXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+Y29udGln
dW91c0ludDMyKClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKHYpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4aW5nVHlwZSA9
PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFy
cmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTE2NTIsMjMgKzE2NTIsMjMgQEAgdm9pZCBKU0FycmF5Ojpjb21w
YWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3Vv
dXNEb3VibGUoKVtudW1EZWZpbmVkKytdID0gdjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClb
aV0uZ2V0KCk7CisgICAgICAgIEpTVmFsdWUgdiA9IGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5n
VHlwZT4oKVtpXS5nZXQoKTsKICAgICAgICAgaWYgKHYpIHsKICAgICAgICAgICAgIGlmICh2Lmlz
VW5kZWZpbmVkKCkpCiAgICAgICAgICAgICAgICAgKytudW1VbmRlZmluZWQ7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobnVtRGVmaW5lZCA8IG1fYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGluZGV4aW5n
VHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CisgICAgICAg
ICAgICAgICAgaW5kZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW251bURlZmluZWQrK10u
c2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KICAgICAgICAgCiAgICAgbmV3UmVsZXZhbnRMZW5ndGggPSBudW1EZWZpbmVkICsgbnVtVW5k
ZWZpbmVkOwogICAgIAotICAgIGlmIChoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKSkKKyAg
ICBpZiAoaGFzQXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CiAgICAgCi0gICAgc3dpdGNo
IChpbmRleGluZ1R5cGUpIHsKKyAgICBzd2l0Y2ggKGFycmF5SW5kZXhpbmdUeXBlKSB7CiAgICAg
Y2FzZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobnVtRGVmaW5lZCA9PSBuZXdSZWxldmFudExlbmd0aCk7CkBAIC0xNjc3
LDE5ICsxNjc3LDE5IEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQK
ICAgICBkZWZhdWx0OgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1EZWZpbmVkOyBpIDwg
bmV3UmVsZXZhbnRMZW5ndGg7ICsraSkgewogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRl
cmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAgICAgaW5kZXhpbmdEYXRhPGluZGV4aW5n
VHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJh
eUluZGV4aW5nVHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3UmVsZXZhbnRMZW5ndGg7IGkg
PCBteVJlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZs
eS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0
aERvdWJsZSkKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJs
ZSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFO
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigp
W2ldLmNsZWFyKCk7CisgICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+
KClbaV0uY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUluZGV4aW5nVHlwZSkpCiAgICAg
ICAgIGFycmF5U3RvcmFnZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3UmVsZXZhbnRMZW5n
dGg7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjQ1LDcg
KzY0NSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENsYXMKIAogaW5s
aW5lIEpTVmFsdWUgSlNWYWx1ZTo6dG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNt
YU1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPm1ldGhvZFRh
YmxlKCktPnRvVGhpcyhhc0NlbGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2Uo
ZXhlYywgZWNtYU1vZGUpOworICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+dG9UaGlzKGFzQ2VsbCgpLCBleGVjLCBlY21hTW9kZSkgOiB0b1Ro
aXNTbG93Q2FzZShleGVjLCBlY21hTW9kZSk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OmdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CkBA
IC03MDAsNyArNzAwLDcgQEAgaW5saW5lIHZvaWQgSlNWYWx1ZTo6cHV0KEV4ZWNTdGF0ZSogZXhl
YwogICAgICAgICBwdXRUb1ByaW1pdGl2ZShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFibGUoKS0+
cHV0KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKKyAgICBhc0Nl
bGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiB9CiAKIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5k
ZXgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUs
IGJvb2wgc2hvdWxkVGhyb3cpCkBAIC03MDksNyArNzA5LDcgQEAgaW5saW5lIHZvaWQgSlNWYWx1
ZTo6cHV0QnlJbmRleChFeGVjU3RhdAogICAgICAgICBwdXRUb1ByaW1pdGl2ZUJ5SW5kZXgoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgYXNDZWxsKCktPm1l
dGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KGFzQ2VsbCgpLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CiB9CiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OnN0cnVjdHVyZU9yVW5kZWZpbmVkKCkgY29uc3QKQEAgLTczMCw2ICs3MzAsNyBAQCBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjplcXVhbChFeGVjU3RhdGUqIGV4CiAKIEFMV0FZU19JTkxJTkUgYm9vbCBK
U1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MikKIHsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGRvIHsKICAgICAg
ICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKICAgICAgICAgICAgIHJldHVy
biB2MS5hc051bWJlcigpID09IHYyLmFzTnVtYmVyKCk7CkBAIC03NDQsMTMgKzc0NSwxMyBAQCBB
TFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICBpZiAoIXYyLmlzQ2VsbCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0
dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2Mi5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHYyLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKICAgICAgICAgICAgIGlm
ICghdjEuaXNDZWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgcmV0dXJuIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgICAgICAgICAgcmV0dXJuIHYxLmFz
Q2VsbCgpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodjEuaXNPYmplY3Qo
KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZp
c2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitD
T01QSUxFX0FTU0VSVChzaXplb2YoSlNDZWxsKSA9PSBzaXplb2YodWludDY0X3QpLCBqc2NlbGxf
aXNfZWlnaHRfYnl0ZXMpOwogU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxF
KEpTQ2VsbCk7CiAKIHZvaWQgSlNDZWxsOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKQEAgLTkwLDcg
KzkxLDcgQEAgdm9pZCBKU0NlbGw6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZQogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmpl
Y3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICB0aGlzT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5wdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNs
b3QpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09i
amVjdCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpTQ2VsbDo6
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaWRlbnRp
ZmllciwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKQEAgLTEwMSwxOSArMTAyLDE5
IEBAIHZvaWQgSlNDZWxsOjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXgKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyLCB2YWx1ZSwg
c2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5w
dXRCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzaG91bGRUaHJv
dyk7CiB9CiAKIGJvb2wgSlNDZWxsOjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50aWZpZXIpCiB7CiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eSh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMs
IGlkZW50aWZpZXIpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpZGVudGlmaWVyKQogewogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOworICAg
IHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVy
dHlCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIpOwogfQogCiBKU1ZhbHVlIEpT
Q2VsbDo6dG9UaGlzKEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBFQ01BTW9kZSBlY21h
TW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lv
biAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCiAjaW5j
bHVkZSAiQ29uc3RydWN0RGF0YS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbmRl
eGluZ1R5cGUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJUeXBlZEFycmF5VHlwZS5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllci5oIgpAQCAtOTIsOSArOTQsMTIgQEAgcHVibGljOgogICAg
IGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CiAgICAgYm9vbCBpc0FQSVZh
bHVlV3JhcHBlcigpIGNvbnN0OwogCisgICAgSlNUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3Q7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUo
KSBjb25zdDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZShWTSYpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3RydWN0dXJlKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBjbGVhclN0cnVjdHVyZSgp
IHsgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsgfQorICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1f
c3RydWN0dXJlSUQgPSAwOyB9CiAKICAgICBjb25zdCBjaGFyKiBjbGFzc05hbWUoKTsKIApAQCAt
MTIxLDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICAvLyBPYmplY3Qgb3BlcmF0aW9ucywgd2l0aCB0
aGUgdG9PYmplY3Qgb3BlcmF0aW9uIGluY2x1ZGVkLgogICAgIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3Q7CiAgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKCkgY29u
c3Q7CisgICAgY29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlKFZNJikgY29uc3Q7CiAgICAg
Y29uc3QgTWV0aG9kVGFibGUqIG1ldGhvZFRhYmxlRm9yRGVzdHJ1Y3Rpb24oKSBjb25zdDsKICAg
ICBzdGF0aWMgdm9pZCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBKU1Zh
bHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBwdXRCeUluZGV4KEpTQ2Vs
bCosIEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CkBAIC0xMzUsMjAgKzE0MSwzNCBAQCBwdWJsaWM6CiAKICAgICBKU1ZhbHVlIGZh
c3RHZXRPd25Qcm9wZXJ0eShWTSYsIGNvbnN0IFN0cmluZyYpOwogCi0gICAgc3RhdGljIHB0cmRp
ZmZfdCBzdHJ1Y3R1cmVPZmZzZXQoKQorICAgIHZvaWQgbWFyaygpIHsgbV9nY0RhdGEgPSAxOyB9
CisgICAgYm9vbCBpc01hcmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2NEYXRhOyB9CisKKyAgICBz
dGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3N0cnVjdHVyZUlEKTsKICAgICB9CiAKLSAgICB2b2lk
KiBzdHJ1Y3R1cmVBZGRyZXNzKCkKKyAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fZmxhZ3MpOwogICAgIH0KLSAgICAgICAgCi0j
aWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0gICAgU3RydWN0dXJlKiB1bnZhbGlkYXRlZFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlLnVudmFsaWRhdGVkR2V0KCk7IH0KLSNl
bmRpZgotICAgICAgICAKKworICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUluZm9UeXBlT2Zmc2V0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX3R5cGUp
OworICAgIH0KKworICAgIHN0YXRpYyBwdHJkaWZmX3QgaW5kZXhpbmdUeXBlT2Zmc2V0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBtX2luZGV4aW5nVHlw
ZSk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBnY0RhdGFPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0NlbGwsIG1fZ2NEYXRhKTsKKyAgICB9
CisKICAgICBzdGF0aWMgY29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBl
ID0gTm90VHlwZWRBcnJheTsKIHByb3RlY3RlZDoKIApAQCAtMTcwLDggKzE5MCwxMiBAQCBwcm90
ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLSAgICAgICAgCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CisK
KyAgICBTdHJ1Y3R1cmVJRCBtX3N0cnVjdHVyZUlEOworICAgIEluZGV4aW5nVHlwZSBtX2luZGV4
aW5nVHlwZTsKKyAgICBKU1R5cGUgbV90eXBlOworICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxh
Z3MgbV9mbGFnczsKKyAgICB1aW50OF90IG1fZ2NEYXRhOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVG8sIHR5cGVuYW1lIEZyb20+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEy
ICszOCwxNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBKU0NlbGw6OkpTQ2VsbChDcmVh
dGluZ0Vhcmx5Q2VsbFRhZykKKyAgICA6IG1fZ2NEYXRhKDApCiB7CiAgICAgQVNTRVJUKCFpc0Nv
bXBpbGF0aW9uVGhyZWFkKCkpOwogfQogCi1pbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IG1fc3RydWN0dXJlKHZtLCB0aGlzLCBzdHJ1Y3R1
cmUpCitpbmxpbmUgSlNDZWxsOjpKU0NlbGwoVk0mLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICA6IG1fc3RydWN0dXJlSUQoc3RydWN0dXJlLT5pZCgpKQorICAgICwgbV9pbmRleGluZ1R5cGUo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKKyAgICAsIG1fdHlwZShzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpKQorICAgICwgbV9mbGFncyhzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5l
VHlwZUZsYWdzKCkpCisgICAgLCBtX2djRGF0YSgwKQogewogICAgIEFTU0VSVCghaXNDb21waWxh
dGlvblRocmVhZCgpKTsKIH0KQEAgLTU2LDcgKzYxLDcgQEAgaW5saW5lIHZvaWQgSlNDZWxsOjpm
aW5pc2hDcmVhdGlvbihWTSYgdgogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odm0pOwogI2VuZGlm
Ci0gICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9zdHJ1Y3R1cmVJRCk7CiB9
CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQ3JlYXRpbmdFYXJseUNlbGxUYWcpCkBAIC02NCwyMyArNjksNDcgQEAgaW5s
aW5lIHZvaWQgSlNDZWxsOjpmaW5pc2hDcmVhdGlvbihWTSYgdgogI2lmIEVOQUJMRShHQ19WQUxJ
REFUSU9OKQogICAgIEFTU0VSVCh2bS5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKICAgICB2bS5z
ZXRJbml0aWFsaXppbmdPYmplY3RDbGFzcygwKTsKLSAgICBpZiAoc3RydWN0dXJlKQorICAgIGlm
IChzdHJ1Y3R1cmUpIHsKKyNlbmRpZgorICAgICAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0dXJl
LT5pZCgpOworICAgICAgICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCk7CisgICAgICAgIG1fdHlwZSA9IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAg
ICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCk7Cisj
aWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
dm0pOwogI2VuZGlmCi0gICAgICAgIG1fc3RydWN0dXJlLnNldEVhcmx5VmFsdWUodm0sIHRoaXMs
IHN0cnVjdHVyZSk7CiAgICAgLy8gVmVyeSBmaXJzdCBzZXQgb2YgYWxsb2NhdGlvbnMgd29uJ3Qg
aGF2ZSBhIHJlYWwgc3RydWN0dXJlLgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSB8fCAhdm0uc3Ry
dWN0dXJlU3RydWN0dXJlKTsKKyAgICBBU1NFUlQobV9zdHJ1Y3R1cmVJRCB8fCAhdm0uc3RydWN0
dXJlU3RydWN0dXJlKTsKK30KKworaW5saW5lIEpTVHlwZSBKU0NlbGw6OnR5cGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK2lubGluZSBJbmRleGluZ1R5cGUgSlNDZWxsOjpp
bmRleGluZ1R5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZGV4aW5nVHlwZTsKIH0KIAog
aW5saW5lIFN0cnVjdHVyZSogSlNDZWxsOjpzdHJ1Y3R1cmUoKSBjb25zdAogewotICAgIHJldHVy
biBtX3N0cnVjdHVyZS5nZXQoKTsKKyAgICByZXR1cm4gSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0
dXJlSURUYWJsZSgpLmdldChtX3N0cnVjdHVyZUlEKTsKK30KKworaW5saW5lIFN0cnVjdHVyZSog
SlNDZWxsOjpzdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdAoreworICAgIHJldHVybiB2bS5oZWFwLnN0
cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJRCk7CiB9CiAKIGlubGluZSB2b2lkIEpT
Q2VsbDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewogICAgIE1BUktfTE9HX1BBUkVOVCh2aXNpdG9yLCBjZWxsKTsKIAotICAgIHZpc2l0b3IuYXBw
ZW5kKCZjZWxsLT5tX3N0cnVjdHVyZSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjZWxs
LT5zdHJ1Y3R1cmUodmlzaXRvci52bSgpKTsKKyAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
UG9pbnRlcigmc3RydWN0dXJlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTExNiwz
NyArMTQ1LDQxIEBAIGlubGluZSBib29sIGlzWmFwcGVkKGNvbnN0IEpTQ2VsbCogY2VsbCkKIAog
aW5saW5lIGJvb2wgSlNDZWxsOjppc09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Ry
dWN0dXJlLT5pc09iamVjdCgpOworICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBl
KTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlOworICAgIHJl
dHVybiBtX3R5cGUgPT0gU3RyaW5nVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc0dl
dHRlclNldHRlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50eXBlSW5mbygp
LnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBlOworICAgIHJldHVybiBtX3R5cGUgPT0gR2V0dGVy
U2V0dGVyVHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppc1Byb3h5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IFByb3h5VHlwZTsK
KyAgICByZXR1cm4gbV90eXBlID09IFByb3h5VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxs
Ojppc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT50
eXBlSW5mbygpLnR5cGUoKSA9PSBBUElWYWx1ZVdyYXBwZXJUeXBlOworICAgIHJldHVybiBtX3R5
cGUgPT0gQVBJVmFsdWVXcmFwcGVyVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsOjpzZXRT
dHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSA9PSB0aGlzLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwotICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpID09IG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Ci0g
ICAgQVNTRVJUKCFtX3N0cnVjdHVyZQotICAgICAgICB8fCBtX3N0cnVjdHVyZS0+dHJhbnNpdGlv
bldhdGNocG9pbnRTZXRIYXNCZWVuSW52YWxpZGF0ZWQoKQotICAgICAgICB8fCBtX3N0cnVjdHVy
ZS5nZXQoKSA9PSBzdHJ1Y3R1cmUpOwotICAgIG1fc3RydWN0dXJlLnNldCh2bSwgdGhpcywgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSB0aGlzLT5zdHJ1
Y3R1cmUoKS0+Y2xhc3NJbmZvKCkpOworICAgIEFTU0VSVCghdGhpcy0+c3RydWN0dXJlKCkKKyAg
ICAgICAgfHwgdGhpcy0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVl
bkludmFsaWRhdGVkKCkKKyAgICAgICAgfHwgSGVhcDo6aGVhcCh0aGlzKS0+c3RydWN0dXJlSURU
YWJsZSgpLmdldChzdHJ1Y3R1cmUtPmlkKCkpID09IHN0cnVjdHVyZSk7CisgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIodGhpcywgc3RydWN0dXJlKTsKKyAgICBtX3N0cnVjdHVyZUlEID0gc3RydWN0
dXJlLT5pZCgpOworICAgIG1fZmxhZ3MgPSBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlw
ZUZsYWdzKCk7CisgICAgbV90eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKTsKKyAg
ICBtX2luZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiB9CiAKIGlubGlu
ZSBjb25zdCBNZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZUZvckRlc3RydWN0aW9uKCkg
Y29uc3QKQEAgLTE1NiwxMCArMTg5LDIwIEBAIGlubGluZSBjb25zdCBNZXRob2RUYWJsZSogSlND
ZWxsOjptZXRob2QKIAogaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRh
YmxlKCkgY29uc3QKIHsKLSAgICBpZiAoU3RydWN0dXJlKiByb290U3RydWN0dXJlID0gbV9zdHJ1
Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3Ry
dWN0dXJlKCk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+
c3RydWN0dXJlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0gcm9v
dFN0cnVjdHVyZS0+c3RydWN0dXJlKCkpOwogCi0gICAgcmV0dXJuICZjbGFzc0luZm8oKS0+bWV0
aG9kVGFibGU7CisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5tZXRob2RUYWJs
ZTsKK30KKworaW5saW5lIGNvbnN0IE1ldGhvZFRhYmxlKiBKU0NlbGw6Om1ldGhvZFRhYmxlKFZN
JiB2bSkgY29uc3QKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVy
ZSh2bSk7CisgICAgaWYgKFN0cnVjdHVyZSogcm9vdFN0cnVjdHVyZSA9IHN0cnVjdHVyZS0+c3Ry
dWN0dXJlKCkpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJvb3RTdHJ1Y3R1cmUgPT0gcm9vdFN0
cnVjdHVyZS0+c3RydWN0dXJlKCkpOworCisgICAgcmV0dXJuICZzdHJ1Y3R1cmUtPmNsYXNzSW5m
bygpLT5tZXRob2RUYWJsZTsKIH0KIAogaW5saW5lIGJvb2wgSlNDZWxsOjppbmhlcml0cyhjb25z
dCBDbGFzc0luZm8qIGluZm8pIGNvbnN0CkBAIC0xOTcsNiArMjQwLDIyIEBAIGlubGluZSBUcmlT
dGF0ZSBKU0NlbGw6OnB1cmVUb0Jvb2xlYW4oKSAKICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
IH0KIAoraW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNvbnN0IEpTQ2VsbCogZnJvbSwg
SlNDZWxsKiB0bykKK3sKKyNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCisgICAg
V3JpdGVCYXJyaWVyQ291bnRlcnM6OmNvdW50V3JpdGVCYXJyaWVyKCk7CisjZW5kaWYKKyAgICBp
ZiAoIWZyb20gfHwgIWZyb20tPmlzTWFya2VkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFmcm9tIHx8
ICFpc01hcmtlZChmcm9tKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCF0byB8
fCB0by0+aXNNYXJrZWQoKSkgeworICAgICAgICBBU1NFUlQoIXRvIHx8IGlzTWFya2VkKHRvKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ2VsbElubGluZXNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAJKHJldmlz
aW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgU3RydWN0dXJlKiBKU0RhdGFW
aWV3OjpjcmVhdGVTdHJ1Y3R1cmUoCiAgICAgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUoCi0gICAgICAgIHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksCisgICAgICAgIHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oRGF0YVZpZXdUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwKICAgICAgICAgTm9uQXJyYXkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgJKHJldmlzaW9uIDE2NDcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxMCBAQCBwcml2YXRlOgogCiBpbmxpbmUg
Y29uc3QgQ2xhc3NJbmZvKiBKU0NlbGw6OmNsYXNzSW5mbygpIGNvbnN0CiB7Ci0gICAgaWYgKE1h
cmtlZEJsb2NrOjpibG9ja0Zvcih0aGlzKS0+ZGVzdHJ1Y3RvclR5cGUoKSA9PSBNYXJrZWRCbG9j
azo6Tm9ybWFsKQorICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9ja0Zv
cih0aGlzKTsKKyAgICBpZiAoYmxvY2stPmRlc3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6
Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Kj4odGhpcyktPmNsYXNzSW5mbygpOwotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQot
ICAgIHJldHVybiBtX3N0cnVjdHVyZS51bnZhbGlkYXRlZEdldCgpLT5jbGFzc0luZm8oKTsKLSNl
bHNlCi0gICAgcmV0dXJuIG1fc3RydWN0dXJlLT5jbGFzc0luZm8oKTsKLSNlbmRpZgorICAgIHJl
dHVybiBzdHJ1Y3R1cmUoKmJsb2NrLT52bSgpKS0+Y2xhc3NJbmZvKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsMTQgKzM5MSwxNSBAQCB2
b2lkIEpTRnVuY3Rpb246OmdldE93bk5vbkluZGV4UHJvcGVydHlOCiB7CiAgICAgSlNGdW5jdGlv
biogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4ob2JqZWN0KTsKICAgICBpZiAoIXRo
aXNPYmplY3QtPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkgJiYgKG1vZGUgPT0gSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcykpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAg
ICAgLy8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLgogICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5wcm90b3R5cGUsIHNsb3QpOworICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJs
ZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIHNsb3QpOwogCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpOwotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVyKTsKLSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
dm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQo
dm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQodm0ucHJv
cGVydHlOYW1lcy0+bmFtZSk7CiAgICAgfQogICAgIEJhc2U6OmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KQEAgLTQx
NCw3ICs0MTUsNyBAQCB2b2lkIEpTRnVuY3Rpb246OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTCiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFzIGJlZW4gcmVpZmllZCwgc3VjaCB0aGF0
IGl0IGNhbiBvbmx5IGJlIG92ZXJ3cml0dGVuCiAgICAgICAgIC8vIGZvbGxvd2luZyB0aGUgcnVs
ZXMgc2V0IG91dCBpbiBFQ01BLTI2MiA4LjEyLjkuCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICAg
ICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgICAgICB0aGlzT2Jq
ZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlLmNsZWFyKCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1f
YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LmZpcmVBbGwoKTsKICAgICAgICAgLy8gRG9uJ3Qg
YWxsb3cgdGhpcyB0byBiZSBjYWNoZWQsIHNpbmNlIGEgW1tQdXRdXSBtdXN0IGNsZWFyIG1fYWxs
b2NhdGlvblByb2ZpbGUuCkBAIC00NjEsNyArNDYyLDcgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWZp
bmVPd25Qcm9wZXJ0eShKU09iagogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBlIGhhcyBi
ZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgogICAgICAg
ICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45LgogICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVhcigpOwog
ICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5maXJlQWxs
KCk7CiAgICAgICAgIHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgdGhyb3dFeGNlcHRpb24pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlldy5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2
LDcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIE5vbkFycmF5KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8odHlwZUZvclR5cGVkQXJyYXlUeXBlKEFkYXB0
b3I6OnR5cGVWYWx1ZSksIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSk7CiAgICAg
fQogICAgIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOyAvLyBUaGlzIGlzIG5l
dmVyIGFjY2Vzc2VkIGRpcmVjdGx5LCBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrIGxpbmthZ2Ugb24g
c29tZSBjb21waWxlcnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1Nyw5IEBAIHN0YXRp
YyB1bnNpZ25lZCBsYXN0QXJyYXlTaXplID0gMDsKIAogSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVj
dFNsb3coSlNDZWxsKiBjZWxsKQogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+
c3RydWN0dXJlKCk7Ci0gICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNG
dW5jdGlvblR5cGUpCisgICAgaWYgKGNlbGwtPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkKICAg
ICAgICAgcmV0dXJuIGNlbGw7Ci0gICAgaWYgKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3Vi
Q2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkpKQorICAgIGlmIChjZWxsLT5zdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKCkp
KQogICAgICAgICByZXR1cm4gY2VsbDsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEyOSw3ICsxMjgs
NyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmNvcHlCdXR0ZXJmCiAgICAgICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIGN1cnJlbnRTb3VyY2U7CiAgICAgICAgICAgICBzaXpl
X3QgY291bnQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN3aXRjaCAoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSkgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLT5pbmRleGluZ1R5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAg
IGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpAQCAtMTkwLDcgKzE4OSw3IEBAIEFMV0FZ
U19JTkxJTkUgdm9pZCBKU09iamVjdDo6dmlzaXRCdXR0ZXIKICAgICAgICAgYnV0dGVyZmx5LT5i
YXNlKHByZUNhcGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KSwgY2FwYWNpdHlJbkJ5dGVzKTsKICAg
ICAKICAgICAvLyBNYXJrIHRoZSBhcnJheSBpZiBhcHByb3ByaWF0ZS4KLSAgICBzd2l0Y2ggKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXMtPmluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXMoYnV0dGVyZmx5LT5jb250aWd1b3VzKCkuZGF0YSgpLCBidXR0
ZXJmbHktPnB1YmxpY0xlbmd0aCgpKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNDgsMTEgKzI0Nywx
MiBAQCB2b2lkIEpTRmluYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsCiAgICAgCiAgICAg
SlNDZWxsOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKTsKICAgICBCdXR0ZXJmbHkq
IGJ1dHRlcmZseSA9IHRoaXNPYmplY3QtPmJ1dHRlcmZseSgpOwogICAgIGlmIChidXR0ZXJmbHkp
Ci0gICAgICAgIHRoaXNPYmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwg
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKSk7CisgICAgICAgIHRoaXNP
YmplY3QtPnZpc2l0QnV0dGVyZmx5KHZpc2l0b3IsIGJ1dHRlcmZseSwgc3RydWN0dXJlLT5vdXRP
ZkxpbmVTaXplKCkpOwogCi0gICAgc2l6ZV90IHN0b3JhZ2VTaXplID0gdGhpc09iamVjdC0+c3Ry
dWN0dXJlKCktPmlubGluZVNpemUoKTsKKyAgICBzaXplX3Qgc3RvcmFnZVNpemUgPSBzdHJ1Y3R1
cmUtPmlubGluZVNpemUoKTsKICAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5p
bmxpbmVTdG9yYWdlKCksIHN0b3JhZ2VTaXplKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAg
LTI3NCw5ICsyNzQsOSBAQCBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4
CiAgICAgLy8gZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleCgpLgogICAgIAogICAgIGlmIChpID4g
TUFYX0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgaSksIHNsb3QpOworICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKICAgICAKLSAgICBzd2l0Y2ggKHRoaXNPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAodGhpc09iamVjdC0+
aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAg
ICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFrOwpAQCAt
MzU4LDEwICszNTgsMTAgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YQogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgc2V0dGVycyBvciBnZXR0ZXJzIGluIHRo
ZSBwcm90b3R5cGUgY2hhaW4KICAgICBKU1ZhbHVlIHByb3RvdHlwZTsKICAgICBpZiAocHJvcGVy
dHlOYW1lICE9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAg
ICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgIW9iai0+c3RydWN0dXJlKCktPmhh
c1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0g
YXNPYmplY3QocHJvdG90eXBlKSkgeworICAgICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlz
T2JqZWN0OyAhb2JqLT5zdHJ1Y3R1cmUodm0pLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJv
cGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKICAg
ICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90eXBlKCk7CiAgICAgICAgICAgICBpZiAo
cHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+
c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSkpOwogICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0
RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNs
b3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgJiYgc2xv
dC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwpA
QCAtMzc0LDEwICszNzQsMTAgQEAgdm9pZCBKU09iamVjdDo6cHV0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YQogICAgIGZvciAob2JqID0gdGhpc09iamVjdDsgOyBvYmogPSBhc09iamVjdChwcm90b3R5
cGUpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZTsKLSAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gb2JqLT5zdHJ1Y3R1
cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwor
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBvYmotPnN0cnVjdHVyZSh2bSktPmdldCh2
bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgaWYg
KGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBS
ZWFkT25seSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOworICAgICAgICAgICAgICAgIEFTU0VSVCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFpbk1heUludGVyY2VwdFN0b3JlVG8o
ZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpc09iamVjdCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbChTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAg
ICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5wcm90b3R5cGVDaGFpbk1heUludGVy
Y2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0gdGhpc09iamVj
dCk7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5wcm90b3R5cGVDaGFp
bk1heUludGVyY2VwdFN0b3JlVG8oZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lKSB8fCBvYmogPT0g
dGhpc09iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlUHV0Pih2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmpl
Y3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9y
KSk7CiAgICAgcmV0dXJuOwpAQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5
SW5kZXgoSlNDZWxsKiBjZWxsLCAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBz
d2l0Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3
aXRjaCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtNTUzLDcgKzU1Myw3
IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUkKICAgICB9CiAKICAg
ICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkg
PSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXplQXJyYXkodm0sIHRoaXMsIHN0cnVjdHVyZSgp
LCAwLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkpOworICAgIEJ1dHRlcmZseSogbmV3QnV0dGVy
Zmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1
cmUodm0pLCAwLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IoMCkpOwogICAgIFJFTEVBU0VfQVNTRVJU
KG5ld0J1dHRlcmZseSk7CiAgICAgbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV9pbmRl
eEJpYXMgPSAwOwogICAgIG5ld0J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCktPnNldFZlY3Rvckxl
bmd0aCgwKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnRl
ckRpY3Rpb25hcnlJCiAKIHZvaWQgSlNPYmplY3Q6OmVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9k
ZShWTSYgdm0pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsK
KyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgpAQCAtNTg5LDcgKzU4OSw3IEBAIHZvaWQgSlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWMKICAgICBpZiAobWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWRk
SW5kZXhlZEFjY2Vzc29ycykpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Q
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFkZEluZGV4ZWRBY2Nlc3NvcnMp
KTsKICAgICAKICAgICBpZiAoIXZtLnByb3RvdHlwZU1hcC5pc1Byb3RvdHlwZSh0aGlzKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQgSlNPYmplY3Q6Om5vdGlmeVBy
ZXNlbmNlT2ZJbmRleGVkQWMKIEJ1dHRlcmZseSogSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRl
eGVkU3RvcmFnZShWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCwgc2l6ZV90IGVsZW1lbnRTaXplKQog
ewogICAgIEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEluZGV4aW5nVHlw
ZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpOworICAgIEluZGV4aW5nVHlw
ZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAh
aGFzSW5kZXhlZFByb3BlcnRpZXMob2xkVHlwZSkpOwogICAgIEFTU0VSVCghc3RydWN0dXJlKCkt
Pm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNw
YXJzZSgpKTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVJ
bml0aWFsVW5kZWNpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1dHRl
cmZseSogbmV3QnV0dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5n
dGgsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxv
Y2F0ZVVuZGVjaWRlZCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6
Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVVbmRlY2lk
ZWQpOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdC
dXR0ZXJmbHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHk7CiB9CkBAIC02MjYsNyArNjI2LDcg
QEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogewogICAgIERlZmVy
R0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0
ZUluaXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUp
KTsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVJbnQzMik7CisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKHZtKSwgQWxsb2NhdGVJbnQzMik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5
KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZs
eS0+Y29udGlndW91c0ludDMyKCk7CiB9CkBAIC02MzcsNyArNjM3LDcgQEAgQ29udGlndW91c0Rv
dWJsZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRpYQogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5
ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihkb3VibGUp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBuZXdCdXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBp
LS07KQogICAgICAgICBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47
Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlRG91YmxlKTsKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCBBbGxvY2F0ZURvdWJsZSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5
KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZs
eS0+Y29udGlndW91c0RvdWJsZSgpOwogfQpAQCAtNjQ2LDcgKzY0Niw3IEBAIENvbnRpZ3VvdXNK
U1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5pdGkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0u
aGVhcCk7CiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhl
ZFN0b3JhZ2Uodm0sIGxlbmd0aCwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwg
c3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cyk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZt
KSwgQWxsb2NhdGVDb250aWd1b3VzKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0s
IG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0dGVyZmx5LT5j
b250aWd1b3VzKCk7CiB9CkBAIC02NTQsMTAgKzY1NCwxMSBAQCBDb250aWd1b3VzSlNWYWx1ZXMg
SlNPYmplY3Q6OmNyZWF0ZUluaXRpCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJh
eVN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkK
IHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgSW5kZXhpbmdUeXBlIG9sZFR5
cGUgPSBzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gaW5k
ZXhpbmdUeXBlKCk7CiAgICAgQVNTRVJUX1VOVVNFRChvbGRUeXBlLCAhaGFzSW5kZXhlZFByb3Bl
cnRpZXMob2xkVHlwZSkpOwogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5
OjpjcmVhdGVPckdyb3dBcnJheVJpZ2h0KAotICAgICAgICBtX2J1dHRlcmZseS5nZXQoKSwgdm0s
IHRoaXMsIHN0cnVjdHVyZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgZmFs
c2UsIDAsCisgICAgICAgIG1fYnV0dGVyZmx5LmdldCgpLCB2bSwgdGhpcywgc3RydWN0dXJlLCBz
dHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAogICAgICAgICBBcnJheVN0
b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobmV3QnV0
dGVyZmx5KTsKIApAQCAtNjY3LDcgKzY2OCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNy
ZWF0ZUFycmF5U3RvcmEKICAgICByZXN1bHQtPm1fc3BhcnNlTWFwLmNsZWFyKCk7CiAgICAgcmVz
dWx0LT5tX251bVZhbHVlc0luVmVjdG9yID0gMDsKICAgICByZXN1bHQtPm1faW5kZXhCaWFzID0g
MDsKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlU
cmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3Rv
cmFnZVRyYW5zaXRpb24oKSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBzdHJ1Y3R1cmUtPnN1Z2dl
c3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVy
Zmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTY3OSwzNCArNjgwLDM1IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNyZWF0ZUlu
aXRpYWxBcnIKIAogQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVk
VG9JbnQzMihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVJbnQzMikpOworICAgIEFT
U0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0s
IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBBbGxv
Y2F0ZUludDMyKSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKTsK
IH0KIAogQ29udGlndW91c0RvdWJsZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0RvdWJs
ZShWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAg
ICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOyBp
LS07KQogICAgICAgICBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsK
ICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBB
bGxvY2F0ZURvdWJsZSkpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJs
ZSgpOwogfQogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRU
b0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykp
OworICAgIEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKKyAgICBzZXRTdHJ1
Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
dm0pLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydGVk
QXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyhWTSYgdm0sIHVuc2lnbmVkIG5lZWRl
ZExlbmd0aCkKIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2
bSk7CiAgICAgdW5zaWduZWQgcHVibGljTGVuZ3RoID0gbV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0
aCgpOwotICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+
b3V0T2ZMaW5lU2l6ZSgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCk7CisgICAgdW5zaWduZWQgcHJvcGVydHlTaXplID0gc3Ry
dWN0dXJlLT5vdXRPZkxpbmVTaXplKCk7CiAgICAgCiAgICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJm
bHkgPSBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoCiAgICAgICAgIHZtLCB0aGlzLCAw
LCBwcm9wZXJ0eUNhcGFjaXR5LCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmVlZGVkTGVu
Z3RoKSk7CkBAIC03MjksMTIgKzczMSwxMiBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb25z
dHJ1Y3RDb252ZXJ0CiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9B
cnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5z
aWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAg
ICBBU1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAg
IEFTU0VSVChoYXNVbmRlY2lkZWQoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJheVN0
b3JhZ2UqIHN0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29w
eWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwogICAgIC8vIE5vIG5lZWQgdG8gY29weSBl
bGVtZW50cy4KICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6
bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0
dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIHN0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1
cm4gc3RvcmFnZTsKIH0KQEAgLTc0NiwxMiArNzQ4LDEyIEBAIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmNvbnZlcnRVbmRlY2lkZWQKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydFVu
ZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydFVuZGVj
aWRlZFRvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdl
VHJhbnNpdGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdl
KHZtLCBzdHJ1Y3R1cmUodm0pLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwog
fQogCiBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyVG9Eb3VibGUoVk0m
IHZtKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1
b3VzSW50MzIoKVtpXTsKQEAgLTc2NSwyMSArNzY3LDIxIEBAIENvbnRpZ3VvdXNEb3VibGVzIEpT
T2JqZWN0Ojpjb252ZXJ0SW50MzIKICAgICAgICAgKmN1cnJlbnRBc0RvdWJsZSA9IHYuYXNJbnQz
MigpOwogICAgIH0KICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJv
cGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVEb3VibGUpKTsKKyAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCBBbGxvY2F0ZURvdWJsZSkpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpOwogfQogCiBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNvbnZl
cnRJbnQzMlRvQ29udGlndW91cyhWTSYgdm0pCiB7Ci0gICAgQVNTRVJUKGhhc0ludDMyKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNJbnQzMihpbmRleGluZ1R5
cGUoKSkpOwogICAgIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKICAgICByZXR1cm4gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXMoKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydEludDMy
VG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwg
dW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkp
KTsKICAgICAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQXJyYXlTdG9yYWdl
KiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlp
bmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKQEAgLTc5MSw3ICs3OTMsNyBAQCBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiAgICAgICAgIG5ld1N0b3JhZ2UtPm1f
bnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCks
IHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRpb24pOwogICAg
IHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5i
dXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC04MDMsMTMgKzgwNSwx
MyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0FyCiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAg
ICByZXR1cm4gY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSgpLT5zdWdn
ZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIHJldHVybiBjb252ZXJ0SW50MzJU
b0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJh
bnNpdGlvbigpKTsKIH0KIAogdGVtcGxhdGU8SlNPYmplY3Q6OkRvdWJsZVRvQ29udGlndW91c01v
ZGUgbW9kZT4KIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3Vi
bGVUb0NvbnRpZ3VvdXMoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNEb3VibGUoc3RydWN0dXJl
KCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0RvdWJsZShpbmRleGluZ1R5cGUo
KSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5n
dGgoKTsgaS0tOykgewogICAgICAgICBkb3VibGUqIGN1cnJlbnQgPSAmbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtpXTsKQEAgLTgzMiw3ICs4MzQsNyBAQCBDb250aWd1b3VzSlNWYWx1
ZXMgSlNPYmplY3Q6OmdlbmVyaWNDb252CiAgICAgICAgIGN1cnJlbnRBc1ZhbHVlLT5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKHYpOwogICAgIH0KICAgICAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVD
b250aWd1b3VzKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CiAgICAg
cmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKQEAgLTg0OSw3ICs4NTEsNyBA
QCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OnJhZ2VDb252ZXJ0CiBBcnJheVN0b3JhZ2Uq
IEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BcnJheVN0b3JhZ2UoVk0mIHZtLCBOb25Qcm9wZXJ0
eVRyYW5zaXRpb24gdHJhbnNpdGlvbiwgdW5zaWduZWQgbmVlZGVkTGVuZ3RoKQogewogICAgIERl
ZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKLSAgICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFTU0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkp
KTsKICAgICAKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBjb25zdHJ1Y3RDb252ZXJ0
ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZtLCBuZWVkZWRMZW5ndGgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgaS0tOykg
ewpAQCAtODYwLDcgKzg2Miw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3Vi
bGVUb0EKICAgICAgICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvcisrOwogICAgIH0K
ICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVy
dHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlvbik7CisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZt
LCBuZXdTdHJ1Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgpKTsKICAgICByZXR1cm4gbmV3
U3RvcmFnZTsKIH0KQEAgLTg3MiwxMyArODc0LDEzIEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmNvbnZlcnREb3VibGVUb0EKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJs
ZVRvQXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJy
YXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlv
bigpKTsKKyAgICByZXR1cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1
cmUodm0pLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwogfQogCiBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKFZNJiB2bSwg
Tm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkK
IHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc0NvbnRpZ3Vv
dXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRpZ3Vv
dXMoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBBcnJheVN0b3JhZ2UqIG5ld1N0b3JhZ2Ug
PSBjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1lbnRzKHZt
LCBuZWVkZWRMZW5ndGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1fYnV0dGVyZmx5LT5wdWJs
aWNMZW5ndGgoKTsgaS0tOykgewpAQCAtODg5LDcgKzg5MSw3IEBAIEFycmF5U3RvcmFnZSogSlNP
YmplY3Q6OmNvbnZlcnRDb250aWd1b3UKICAgICAgICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvcisrOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgdHJhbnNpdGlv
bik7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5
VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgdHJhbnNpdGlvbik7CiAgICAgc2V0U3RydWN0
dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld1N0b3JhZ2UtPmJ1dHRlcmZseSgp
KTsKICAgICByZXR1cm4gbmV3U3RvcmFnZTsKIH0KQEAgLTkwMSw3ICs5MDMsNyBAQCBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91CiAKIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UoVk0mIHZtKQogewotICAgIHJldHVy
biBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2Vz
dGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKKyAgICByZXR1cm4gY29udmVydENvbnRpZ3Vv
dXNUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdl
VHJhbnNpdGlvbigpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZEZvclZh
bHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKQEAgLTk3NSw5ICs5NzcsOSBAQCBDb250aWd1b3Vz
SlNWYWx1ZXMgSlNPYmplY3Q6OmVuc3VyZUludDMyCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVY
SU5HX1RZUEVTOgotICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgp
IHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKKyAgICAgICAgaWYgKFVO
TElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUodm0pLT5uZWVkc1Ns
b3dQdXRJbmRleGluZygpKSkKICAgICAgICAgICAgIHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMo
KTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxJbnQzMih2bSwgMCk7CiAgICAgICAgIApA
QCAtOTk5LDkgKzEwMDEsOSBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6ZW5zdXJlRG91
YmxlCiB7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIAotICAgIHN3aXRjaCAo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgotICAgICAgICBpZiAoVU5M
SUtFTFkoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQ
dXRJbmRleGluZygpKSkKKyAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFy
c2UoKSB8fCBzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkKICAgICAgICAg
ICAgIHJldHVybiBDb250aWd1b3VzRG91YmxlcygpOwogICAgICAgICByZXR1cm4gY3JlYXRlSW5p
dGlhbERvdWJsZSh2bSwgMCk7CiAgICAgICAgIApAQCAtMTAyNSw5ICsxMDI3LDkgQEAgQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1cmVDb250aQogewogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19J
TkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFy
c2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlm
IChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVl
ZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0pTVmFs
dWVzKCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVJbml0aWFsQ29udGlndW91cyh2bSwgMCk7CiAg
ICAgICAgIApAQCAtMTA2NSw3ICsxMDY3LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5z
dXJlQXJyYXlTdG9yYQogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZW5zdXJlQXJyYXlTdG9yYWdlRXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdN
b2RlKHZtKTsKQEAgLTEwNzMsMjIgKzEwNzUsMjIgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6
ZW5zdXJlQXJyYXlTdG9yYQogICAgICAgICAKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAg
ICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAg
ICAgIEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAg
ICAgIHJldHVybiBjb252ZXJ0VW5kZWNpZGVkVG9BcnJheVN0b3JhZ2Uodm0pOwogICAgICAgICAK
ICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRl
eGluZ1Nob3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVk
c1Nsb3dQdXRJbmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlT
dG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVT
OgogICAgICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFT
U0VSVCghc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NF
UlQoIXN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1
cm4gY29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBB
TExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1No
b3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQ
dXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQ
dXRJbmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0
b3JhZ2Uodm0pOwogICAgICAgICAKICAgICBkZWZhdWx0OgpAQCAtMTA5OSw3ICsxMTAxLDcgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYQogCiBBcnJheVN0b3JhZ2Uq
IEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRFbnRlckRpY3Rpb25hcnlJbmRl
eGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5L
X0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCk7
CiAgICAgICAgIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCA9IGFsbG9jYXRlU3BhcnNlSW5kZXhN
YXAodm0pOwpAQCAtMTEzMCw3ICsxMTMyLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5z
dXJlQXJyYXlTdG9yYQogCiB2b2lkIEpTT2JqZWN0Ojpzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3Jh
Z2UoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7
CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX1VOREVDSURFRF9J
TkRFWElOR19UWVBFUzoKICAgICAgICAgY29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKHZt
LCBBbGxvY2F0ZVNsb3dQdXRBcnJheVN0b3JhZ2UpOwogICAgICAgICBicmVhazsKQEAgLTExNDks
NyArMTE1MSw3IEBAIHZvaWQgSlNPYmplY3Q6OnN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmEKICAg
ICAgICAgCiAgICAgY2FzZSBOb25BcnJheVdpdGhBcnJheVN0b3JhZ2U6CiAgICAgY2FzZSBBcnJh
eVdpdGhBcnJheVN0b3JhZ2U6IHsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBT
dHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIFN3aXRjaFRv
U2xvd1B1dEFycmF5U3RvcmFnZSk7CisgICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
U3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIFN3aXRj
aFRvU2xvd1B1dEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3Ry
dWN0dXJlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTE2Niw3ICsxMTY4LDcgQEAgdm9p
ZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZNJiB2bSwgSlNWYQogICAgIGlmIChwcm90b3R5cGUu
aXNPYmplY3QoKSkKICAgICAgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZShhc09iamVj
dChwcm90b3R5cGUpKTsKICAgICAKLSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHByb3RvdHlw
ZSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3Rv
dHlwZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHByb3RvdHlwZSk7CiAgICAgc2V0U3Ry
dWN0dXJlKHZtLCBuZXdTdHJ1Y3R1cmUpOwogICAgIAogICAgIGlmICghbmV3U3RydWN0dXJlLT5h
bnlPYmplY3RJbkNoYWluTWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzKCkpCkBAIC0xMTc3LDEw
ICsxMTc5LDEwIEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEpTVmEKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVz
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVy
dGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoc2hv
dWxkVXNlU2xvd1B1dChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgIGlmIChzaG91
bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IHN3aXRjaFRvU2xvd1B1dEFycmF5U3RvcmFnZSh2bSk7CkBAIC0xMTg4LDcgKzExOTAsNyBAQCB2
b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAKIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7Ci0gICAgQVNTRVJUKG1ldGhvZFRhYmxlKCktPnRvVGhpcyh0aGlzLCBleGVjLCBO
b3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKKyAgICBBU1NFUlQobWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJpY3RNb2RlKSA9PSB0aGlzKTsKICAgICBKU1Zh
bHVlIG5leHRQcm90b3R5cGUgPSBwcm90b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGUg
JiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChuZXh0UHJvdG90eXBl
ID09IHRoaXMpCkBAIC0xMjI3LDEyICsxMjI5LDEzIEBAIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVj
dE5vbkluZGV4QWNjZXNzb3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdl
IGFsc28gbmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRl
IGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBl
KCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkKLSAgICAgICAgc2V0U3RydWN0dXJl
KHZtLCBTdHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgp
LCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBT
dHJ1Y3R1cmU6OmF0dHJpYnV0ZUNoYW5nZVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcykpOwogCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0
aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAg
ICAgIHN0cnVjdHVyZSgpLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAg
ICBzdHJ1Y3R1cmUtPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CiAKLSAgICBzdHJ1
Y3R1cmUoKS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyhwcm9wZXJ0eU5hbWUgPT0gdm0u
cHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvKTsKKyAgICBzdHJ1Y3R1cmUtPnNldEhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVu
ZGVyc2NvcmVQcm90byk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6Omhhc1Byb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29uc3QKQEAgLTEyNTQsMjQgKzEy
NTcsMjUgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogICAgIAog
ICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUuYXNJbmRleCgpOwogICAgIGlmIChpICE9IFBy
b3BlcnR5TmFtZTo6Tm90QW5JbmRleCkKLSAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpKTsKKyAg
ICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaSk7CiAKICAgICBpZiAoIXRoaXNPYmpl
Y3QtPnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSkKICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlT
dGF0aWNGdW5jdGlvbnNGb3JEZWxldGUoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
OwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKLSAgICBpZiAoaXNWYWxpZE9mZnNldCh0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udERl
bGV0ZSAmJiAhZXhlYy0+dm0oKS5pc0luRGVmaW5lT3duUHJvcGVydHkoKSkKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIGlmIChpc1ZhbGlkT2Zmc2V0KHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSh2bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSkp
IHsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZXMgJiBEb250RGVsZXRlICYmICF2bS5pc0luRGVmaW5l
T3duUHJvcGVydHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpc09i
amVjdC0+cmVtb3ZlRGlyZWN0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHRo
aXNPYmplY3QtPnJlbW92ZURpcmVjdCh2bSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgLy8gTG9vayBpbiB0aGUgc3RhdGljIGhhc2h0YWJsZSBvZiBw
cm9wZXJ0aWVzCiAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRoaXNPYmplY3QtPmZpbmRQ
cm9wZXJ0eUhhc2hFbnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChlbnRyeSkgewot
ICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZt
KCkuaXNJbkRlZmluZU93blByb3BlcnR5KCkpCisgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRl
cygpICYgRG9udERlbGV0ZSAmJiAhdm0uaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIHRoaXMgYnVpbHRpbiBwcm9wZXJ0eSBjYW4ndCBiZSBkZWxl
dGVkCiAKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7CkBAIC0xMjg0
LDcgKzEyODgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlCiBi
b29sIEpTT2JqZWN0OjpoYXNPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiB7CiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+bWV0aG9kVGFibGUoKS0+Z2V0
T3duUHJvcGVydHlTbG90KGNvbnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKSwgZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxKU09iamVjdCo+KHRoaXMpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KGNvbnN0X2Nhc3Q8SlNP
YmplY3QqPih0aGlzKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogYm9vbCBKU09i
amVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBpKQpAQCAtMTI5Miw5ICsxMjk2LDkgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KEpTQwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY2VsbCk7CiAgICAgCiAgICAgaWYgKGkgPiBNQVhfQVJSQVlfSU5ERVgpCi0gICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKKyAgICAgICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlz
T2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKICAgICAKLSAgICBzd2l0
Y2ggKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRj
aCAodGhpc09iamVjdC0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTM2Nyw3ICsxMzcxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBjYWxsRGVmYXVsdAogCiBib29sIEpTT2JqZWN0OjpnZXRQcmltaXRpdmVOdW1i
ZXIoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUmIG51bWJlciwgSlNWYWx1ZSYgcmVzdWx0KSBjb25z
dAogewotICAgIHJlc3VsdCA9IG1ldGhvZFRhYmxlKCktPmRlZmF1bHRWYWx1ZSh0aGlzLCBleGVj
LCBQcmVmZXJOdW1iZXIpOworICAgIHJlc3VsdCA9IG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5k
ZWZhdWx0VmFsdWUodGhpcywgZXhlYywgUHJlZmVyTnVtYmVyKTsKICAgICBudW1iZXIgPSByZXN1
bHQudG9OdW1iZXIoZXhlYyk7CiAgICAgcmV0dXJuICFyZXN1bHQuaXNTdHJpbmcoKTsKIH0KQEAg
LTE0MTAsMTIgKzE0MTQsMTMgQEAgY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3Bl
cnR5SAogCiBib29sIEpTT2JqZWN0OjpoYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7Ci0gICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVyZSgpLT50eXBlSW5mbygp
OworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgVHlwZUluZm8gaW5mbyA9IHN0cnVjdHVy
ZSh2bSktPnR5cGVJbmZvKCk7CiAgICAgaWYgKGluZm8uaW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSgpKQogICAgICAgICByZXR1cm4gZGVmYXVsdEhhc0luc3RhbmNlKGV4ZWMsIHZhbHVlLCBn
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSkpOwogICAgIGlmIChpbmZv
LmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQotICAgICAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+
Y3VzdG9tSGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOwotICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9yKGV4ZWMsICJpbnN0
YW5jZW9mIiAsIHRoaXMpKTsKKyAgICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKHZtKS0+Y3VzdG9t
SGFzSW5zdGFuY2UodGhpcywgZXhlYywgdmFsdWUpOworICAgIHZtLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIgLCB0aGlz
KSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNDM5LDggKzE0NDQsOSBAQCBib29sIEpT
T2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoRXhlY1N0CiAKIGJvb2wgSlNPYmplY3Q6OmdldFBy
b3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmIChpc1ZhbGlkT2Zmc2V0
KHN0cnVjdHVyZSgpLT5nZXQoZXhlYy0+dm0oKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlKSkpCisgICAgaWYgKGlzVmFsaWRPZmZzZXQoc3RydWN0dXJlKHZtKS0+Z2V0
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gd2l0aGluIHRo
ZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC0xNDUzLDE4ICsxNDU5LDE5IEBA
IGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSgKIHZvaWQgSlNPYmplY3Q6
OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7CiAg
ICAgcHJvcGVydHlOYW1lcy5zZXRCYXNlT2JqZWN0KG9iamVjdCk7Ci0gICAgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAgICAgaWYg
KG9iamVjdC0+cHJvdG90eXBlKCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGFzT2JqZWN0KG9i
amVjdC0+cHJvdG90eXBlKCkpOwogICAgIHdoaWxlKDEpIHsKLSAgICAgICAgaWYgKHByb3RvdHlw
ZS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7
Ci0gICAgICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXMo
cHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICAgICAgaWYgKHByb3Rv
dHlwZS0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVz
KCkpIHsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFibGUodm0pLT5nZXRQcm9wZXJ0
eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBwcm90b3R5cGUtPm1ldGhvZFRhYmxlKCktPmdl
dE93blByb3BlcnR5TmFtZXMocHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsK
KyAgICAgICAgcHJvdG90eXBlLT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMo
cHJvdG90eXBlLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICAgICAgSlNWYWx1ZSBu
ZXh0UHJvdG8gPSBwcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgICAgICBpZiAobmV4dFByb3Rv
LmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDc4LDcgKzE0ODUsNyBAQCB2b2lk
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqCiAgICAgLy8gRklYTUU6IEZpbGxp
bmcgUHJvcGVydHlOYW1lQXJyYXkgd2l0aCBhbiBpZGVudGlmaWVyIGZvciBldmVyeSBpbnRlZ2Vy
CiAgICAgLy8gaXMgaW5jcmVkaWJseSBpbmVmZmljaWVudCBmb3IgbGFyZ2UgYXJyYXlzLiBXZSBu
ZWVkIGEgZGlmZmVyZW50IGFwcHJvYWNoLAogICAgIC8vIHdoaWNoIGFsbW9zdCBjZXJ0YWlubHkg
bWVhbnMgYSBkaWZmZXJlbnQgc3RydWN0dXJlIGZvciBQcm9wZXJ0eU5hbWVBcnJheS4KLSAgICBz
d2l0Y2ggKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChvYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdf
VFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBi
cmVhazsKQEAgLTE1MzcsMTUgKzE1NDQsMTYgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlOYW1lcyhKU09iagogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IH0KICAgICAKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93bk5vbkluZGV4UHJvcGVy
dHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpnZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUp
CiB7CiAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIG9iamVjdC0+Y2xhc3NJbmZvKCks
IHByb3BlcnR5TmFtZXMsIG1vZGUsIG9iamVjdC0+c3RhdGljRnVuY3Rpb25zUmVpZmllZCgpKTsK
IAorICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYm9vbCBjYW5DYWNoZVByb3BlcnRpZXNG
cm9tU3RydWN0dXJlID0gIXByb3BlcnR5TmFtZXMuc2l6ZSgpOwotICAgIG9iamVjdC0+c3RydWN0
dXJlKCktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKGV4ZWMtPnZtKCksIHByb3BlcnR5
TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+c3RydWN0dXJlKHZtKS0+Z2V0UHJvcGVydHlOYW1l
c0Zyb21TdHJ1Y3R1cmUodm0sIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogCiAgICAgaWYgKGNhbkNh
Y2hlUHJvcGVydGllc0Zyb21TdHJ1Y3R1cmUpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuc2V0TnVt
Q2FjaGVhYmxlU2xvdHNGb3JPYmplY3Qob2JqZWN0LCBwcm9wZXJ0eU5hbWVzLnNpemUoKSk7CkBA
IC0xNTc3LDcgKzE1ODUsNyBAQCB2b2lkIEpTT2JqZWN0OjpzZWFsKFZNJiB2bSkKICAgICBpZiAo
aXNTZWFsZWQodm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVudEV4dGVuc2lvbnModm0p
OwotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCkpKTsKKyAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSh2bSkpKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZnJlZXplKFZNJiB2
bSkKQEAgLTE1ODUsMTQgKzE1OTMsMTQgQEAgdm9pZCBKU09iamVjdDo6ZnJlZXplKFZNJiB2bSkK
ICAgICBpZiAoaXNGcm96ZW4odm0pKQogICAgICAgICByZXR1cm47CiAgICAgcHJldmVudEV4dGVu
c2lvbnModm0pOwotICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUoKSkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpm
cmVlemVUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiB9CiAKIHZvaWQgSlNPYmplY3Q6
OnByZXZlbnRFeHRlbnNpb25zKFZNJiB2bSkKIHsKICAgICBlbnRlckRpY3Rpb25hcnlJbmRleGlu
Z01vZGUodm0pOwogICAgIGlmIChpc0V4dGVuc2libGUoKSkKLSAgICAgICAgc2V0U3RydWN0dXJl
KHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCkpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNp
b25zVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogfQogCiAvLyBUaGlzIHByZXNlbnRs
eSB3aWxsIGZsYXR0ZW4gdG8gYW4gdW5jYWNoYWJsZSBkaWN0aW9uYXJ5OyB0aGlzIGlzIHN1aXRh
YmxlCkBAIC0xNjA1LDEyICsxNjEzLDEyIEBAIHZvaWQgSlNPYmplY3Q6OnJlaWZ5U3RhdGljRnVu
Y3Rpb25zRm9yRGUKICAgICAvLyBJZiB0aGlzIG9iamVjdCdzIENsYXNzSW5mbyBoYXMgbm8gc3Rh
dGljIHByb3BlcnRpZXMsIHRoZW4gbm90aGluZyB0byByZWlmeSEKICAgICAvLyBXZSBjYW4gc2Fm
ZWx5IHNldCB0aGUgZmxhZyB0byBhdm9pZCB0aGUgZXhwZW5zaXZlIGNoZWNrIGFnYWluIGluIHRo
ZSBmdXR1cmUuCiAgICAgaWYgKCFjbGFzc0luZm8oKS0+aGFzU3RhdGljUHJvcGVydGllcygpKSB7
Ci0gICAgICAgIHN0cnVjdHVyZSgpLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CisgICAg
ICAgIHN0cnVjdHVyZSh2bSktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmICghc3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgaWYgKCFzdHJ1
Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQorICAgICAgICBzZXRTdHJ1Y3R1
cmUodm0sIFN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUodm0pKSk7CiAKICAgICBmb3IgKGNvbnN0IENsYXNzSW5mbyogaW5mbyA9IGNsYXNz
SW5mbygpOyBpbmZvOyBpbmZvID0gaW5mby0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiBoYXNoVGFibGUgPSBpbmZvLT5wcm9wSGFzaFRhYmxlKGdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCkpOwpAQCAtMTYyMywyNCArMTYzMSwyNSBAQCB2b2lkIEpTT2JqZWN0Ojpy
ZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHJ1Y3R1
cmUoKS0+c2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZCgpOworICAgIHN0cnVjdHVyZSh2bSktPnNl
dFN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKTsKIH0KIAogYm9vbCBKU09iamVjdDo6cmVtb3ZlRGly
ZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpZiAoIWlzVmFs
aWRPZmZzZXQoc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmICghaXNWYWxpZE9m
ZnNldChzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKLSAgICBpZiAoc3RydWN0dXJlKCkt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJl
KCktPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHByb3BlcnR5TmFtZSk7Cisg
ICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgeworICAgICAgICBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0sIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNldCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHNldFN0cnVjdHVyZSh2bSwgU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0
eU5hbWUsIG9mZnNldCkpOworICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpyZW1vdmVQ
cm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsK
ICAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBwdXREaXJlY3RVbmRlZmluZWQob2Zmc2V0KTsKQEAgLTE4NjksNyArMTg3OCw3IEBAIGJv
b2wgSlNPYmplY3Q6OmF0dGVtcHRUb0ludGVyY2VwdFB1dEJ5SW4KIHRlbXBsYXRlPEluZGV4aW5n
VHlwZSBpbmRleGluZ1NoYXBlPgogdm9pZCBKU09iamVjdDo6cHV0QnlJbmRleEJleW9uZFZlY3Rv
ckxlbmd0aFdpdGhvdXRBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSwgSlNW
YWx1ZSB2YWx1ZSkKIHsKLSAgICBBU1NFUlQoKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSAm
IEluZGV4aW5nU2hhcGVNYXNrKSA9PSBpbmRleGluZ1NoYXBlKTsKKyAgICBBU1NFUlQoKGluZGV4
aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spID09IGluZGV4aW5nU2hhcGUpOwogICAgIEFT
U0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKICAgICAKICAgICAvLyBGb3IgdXMgdG8g
Z2V0IGhlcmUsIHRoZSBpbmRleCBpcyBlaXRoZXIgZ3JlYXRlciB0aGFuIHRoZSBwdWJsaWMgbGVu
Z3RoLCBvciBncmVhdGVyIHRoYW4KQEAgLTE5OTgsNyArMjAwNyw3IEBAIHZvaWQgSlNPYmplY3Q6
OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlkIGFy
cmF5IGluZGV4IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCiAgICAgQVNT
RVJUKGkgPD0gTUFYX0FSUkFZX0lOREVYKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBj
YXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBpZiAoaW5kZXhpbmdTaG91
bGRCZVNwYXJzZSgpKSB7CiAgICAgICAgICAgICBwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZSgKQEAgLTIwMTEsNyArMjAyMCw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1
dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAgICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwg
c2hvdWxkVGhyb3csIGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgMCwgMCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJ
bmRleGluZygpKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm5lZWRzU2xv
d1B1dEluZGV4aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGNy
ZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0aCgwLCAwLCBpICsg
MSkpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZtLCB0aGlzLCB2YWx1
ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CkBAIC0yMDY2
LDcgKzIwNzUsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3RvCiAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICAvLyBpIHNob3VsZCBiZSBhIHZhbGlk
IGFycmF5IGluZGV4IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUgY3VycmVudCB2ZWN0b3IuCi0gICAg
QVNTRVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGFy
cmF5U3RvcmFnZSgpID09IHN0b3JhZ2UpOwogICAgIEFTU0VSVChpID49IHN0b3JhZ2UtPnZlY3Rv
ckxlbmd0aCgpIHx8IGF0dHJpYnV0ZXMpOwogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRF
WCk7CkBAIC0yMTQ4LDcgKzIxNTcsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJl
eW9uZFZlY3RvCiAgICAgaWYgKGF0dHJpYnV0ZXMgJiAoUmVhZE9ubHkgfCBBY2Nlc3NvcikpCiAg
ICAgICAgIG5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKHZtKTsKICAgICAKLSAgICBz
d2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAg
ICBpZiAoaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpIHx8IGF0dHJpYnV0ZXMpIHsKICAgICAgICAg
ICAgIHJldHVybiBwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3Jh
Z2UoCkBAIC0yMTU5LDcgKzIxNjgsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJl
eW9uZFZlY3RvCiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0b3JM
ZW5ndGhXaXRoQXJyYXlTdG9yYWdlKAogICAgICAgICAgICAgICAgIGV4ZWMsIGksIHZhbHVlLCBh
dHRyaWJ1dGVzLCBtb2RlLCBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoc3RydWN0dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZShleGVjLT52bSgpKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkg
ewogICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY3JlYXRlQXJyYXlTdG9yYWdl
KHZtLCBpICsgMSwgZ2V0TmV3VmVjdG9yTGVuZ3RoKDAsIDAsIGkgKyAxKSk7CiAgICAgICAgICAg
ICBzdG9yYWdlLT5tX3ZlY3RvcltpXS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAg
IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKQEAgLTIyODIsNyArMjI5MSw3IEBAIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgSlNPYmplY3Q6OmdldE5ld1YKICAgICB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGg7CiAgICAgdW5zaWduZWQgbGVuZ3RoOwogICAgIAotICAgIGlmIChoYXNJbmRleGVk
UHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICB2ZWN0b3JMZW5ndGgg
PSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7CiAgICAgICAgIGxlbmd0aCA9IG1fYnV0dGVy
Zmx5LT5wdWJsaWNMZW5ndGgoKTsKICAgICB9IGVsc2UgewpAQCAtMjMyMSw3ICsyMzMwLDcgQEAg
dW5zaWduZWQgSlNPYmplY3Q6OmNvdW50RWxlbWVudHMoQnV0dGVyZgogCiB1bnNpZ25lZCBKU09i
amVjdDo6Y291bnRFbGVtZW50cygpCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExf
QkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZ
UEVTOgogICAgICAgICByZXR1cm4gMDsKQEAgLTIzNjAsMTAgKzIzNjksMTEgQEAgYm9vbCBKU09i
amVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5ld1ZlY3Rvckxl
bmd0aCA9IGdldE5ld1ZlY3Rvckxlbmd0aChuZXdMZW5ndGgpOwogCiAgICAgLy8gRmFzdCBjYXNl
IC0gdGhlcmUgaXMgbm8gcHJlY2FwYWNpdHkuIEluIHRoZXNlIGNhc2VzIGEgcmVhbGxvYyBtYWtl
cyBzZW5zZS4KKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7
CiAgICAgaWYgKExJS0VMWSghaW5kZXhCaWFzKSkgewogICAgICAgICBEZWZlckdDIGRlZmVyR0Mo
dm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0
dGVyZmx5KCktPmdyb3dBcnJheVJpZ2h0KAotICAgICAgICAgICAgdm0sIHRoaXMsIHN0cnVjdHVy
ZSgpLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwKKyAgICAgICAgICAg
IHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1
ZSwKICAgICAgICAgICAgIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpLCBBcnJh
eVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9yTGVuZ3RoKSk7CiAgICAgICAgIGlmICghbmV3QnV0
dGVyZmx5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjM3Nyw3ICsyMzg3LDcgQEAg
Ym9vbCBKU09iamVjdDo6aW5jcmVhc2VWZWN0b3JMZW5ndGgoVk0mIAogICAgIHVuc2lnbmVkIG5l
d0luZGV4QmlhcyA9IHN0ZDo6bWluKGluZGV4QmlhcyA+PiAxLCBNQVhfU1RPUkFHRV9WRUNUT1Jf
TEVOR1RIIC0gbmV3VmVjdG9yTGVuZ3RoKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9
IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5yZXNpemVBcnJheSgKICAgICAgICAgdm0sIHRoaXMsCi0g
ICAgICAgIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3Jh
Z2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKKyAgICAgICAgc3RydWN0dXJlLT5vdXRPZkxpbmVD
YXBhY2l0eSgpLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwKICAg
ICAgICAgbmV3SW5kZXhCaWFzLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IobmV3VmVjdG9y
TGVuZ3RoKSk7CiAgICAgaWYgKCFuZXdCdXR0ZXJmbHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTIzOTAsNyArMjQwMCw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3Ro
KFZNJiAKIHZvaWQgSlNPYmplY3Q6OmVuc3VyZUxlbmd0aFNsb3coVk0mIHZtLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CiAgICAgQVNTRVJUKGxlbmd0aCA8IE1BWF9BUlJBWV9JTkRFWCk7Ci0gICAgQVNT
RVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQz
MihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50
MzIoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFzVW5k
ZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgQVNTRVJUKGxlbmd0aCA+IG1fYnV0dGVyZmx5
LT52ZWN0b3JMZW5ndGgoKSk7CiAgICAgCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0g
c3RkOjptaW4oCkBAIC0yNDA1LDcgKzI0MTUsNyBAQCB2b2lkIEpTT2JqZWN0OjplbnN1cmVMZW5n
dGhTbG93KFZNJiB2bSwgCiAKICAgICBtX2J1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKG5ld1Zl
Y3Rvckxlbmd0aCk7CiAKLSAgICBpZiAoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkpIHsKKyAgICBpZiAoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBvbGRWZWN0b3JMZW5ndGg7IGkgPCBuZXdWZWN0b3JMZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCkuZGF0YSgpW2ld
ID0gUU5hTjsKICAgICB9CkBAIC0yNDE4LDE2ICsyNDI4LDE2IEBAIEJ1dHRlcmZseSogSlNPYmpl
Y3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWcKICAgICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHRoaXMg
ZnVuY3Rpb24gbm90IHJlbHkgb24gc3RydWN0dXJlKCksIGZvciB0aGUgcHJvcGVydHkKICAgICAv
LyBjYXBhY2l0eSwgc2luY2Ugd2UgbWlnaHQgaGF2ZSBhbHJlYWR5IG11dGF0ZWQgdGhlIHN0cnVj
dHVyZSBpbi1wbGFjZS4KICAgICAKLSAgICByZXR1cm4gbV9idXR0ZXJmbHktPmdyb3dQcm9wZXJ0
eVN0b3JhZ2Uodm0sIHRoaXMsIHN0cnVjdHVyZSgpLCBvbGRTaXplLCBuZXdTaXplKTsKKyAgICBy
ZXR1cm4gbV9idXR0ZXJmbHktPmdyb3dQcm9wZXJ0eVN0b3JhZ2Uodm0sIHRoaXMsIHN0cnVjdHVy
ZSh2bSksIG9sZFNpemUsIG5ld1NpemUpOwogfQogCiBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7CiAgICAgSlNDOjpQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzKTsKLSAgICBpZiAoIW1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgIGlmICghbWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLyogV29ya2Fyb3VuZCwgSlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdCBzZWFyY2hlcyB0aGUgcHJvdG90eXBlIGNoYWluLiA6
LSggKi8KLSAgICBpZiAoc2xvdC5zbG90QmFzZSgpICE9IHRoaXMgJiYgc2xvdC5zbG90QmFzZSgp
ICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFibGUoKS0+dG9UaGlzKHNsb3Quc2xvdEJhc2Uo
KSwgZXhlYywgTm90U3RyaWN0TW9kZSkgIT0gdGhpcykKKyAgICBpZiAoc2xvdC5zbG90QmFzZSgp
ICE9IHRoaXMgJiYgc2xvdC5zbG90QmFzZSgpICYmIHNsb3Quc2xvdEJhc2UoKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPnRvVGhpcyhzbG90LnNsb3RCYXNlKCksIGV4ZWMsIE5vdFN0cmljdE1v
ZGUpICE9IHRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc2xvdC5pc0FjY2Vz
c29yKCkpCiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0QWNjZXNzb3JEZXNjcmlwdG9yKHNsb3QuZ2V0
dGVyU2V0dGVyKCksIHNsb3QuYXR0cmlidXRlcygpKTsKQEAgLTI0NTgsNyArMjQ2OCw3IEBAIHN0
YXRpYyBib29sIHB1dERlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgIG5ld1Zh
bHVlID0gb2xkRGVzY3JpcHRvci52YWx1ZSgpOwogICAgICAgICB0YXJnZXQtPnB1dERpcmVjdCh2
bSwgcHJvcGVydHlOYW1lLCBuZXdWYWx1ZSwgYXR0cmlidXRlcyAmIH5BY2Nlc3Nvcik7CiAgICAg
ICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICB0YXJnZXQtPnN0cnVj
dHVyZSgpLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOworICAgICAgICAgICAgdGFy
Z2V0LT5zdHJ1Y3R1cmUodm0pLT5zZXRDb250YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgYXR0cmlidXRlcyAmPSB+UmVhZE9ubHk7CkBA
IC0yNTQ4LDcgKzI1NTgsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Ob25JbmRleFByb3Bl
cnR5CiAgICAgLy8gQSBnZW5lcmljIGRlc2NyaXB0b3IgaXMgc2ltcGx5IGNoYW5naW5nIHRoZSBh
dHRyaWJ1dGVzIG9mIGFuIGV4aXN0aW5nIHByb3BlcnR5CiAgICAgaWYgKGRlc2NyaXB0b3IuaXNH
ZW5lcmljRGVzY3JpcHRvcigpKSB7CiAgICAgICAgIGlmICghY3VycmVudC5hdHRyaWJ1dGVzRXF1
YWwoZGVzY3JpcHRvcikpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVu
dCksIGN1cnJlbnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjU2MSw3
ICsyNTcxLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgYWNjZXNzIG1lY2hh
bmlzbSBmb3IgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBtZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgcmV0dXJuIHB1dERlc2NyaXB0b3IoZXhlYywgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yLCBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlkaW5nQ3VycmVudChjdXJyZW50KSwgY3Vy
cmVudCk7CiAgICAgfQogCkBAIC0yNTgzLDcgKzI1OTMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZp
bmVPd25Ob25JbmRleFByb3BlcnR5CiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnQuYXR0
cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpICYmICFkZXNjcmlwdG9yLnZhbHVlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgbWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
dGhpcywgZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJl
dHVybiBwdXREZXNjcmlwdG9yKGV4ZWMsIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwg
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQp
OwogICAgIH0KIApAQCAtMjYxMSw3ICsyNjIxLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3du
Tm9uSW5kZXhQcm9wZXJ0eQogICAgICAgICBnZXR0ZXJTZXR0ZXItPnNldEdldHRlcihleGVjLT52
bSgpLCBkZXNjcmlwdG9yLmdldHRlck9iamVjdCgpKTsKICAgICBpZiAoY3VycmVudC5hdHRyaWJ1
dGVzRXF1YWwoZGVzY3JpcHRvcikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIG1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgbWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5
TmFtZSk7CiAgICAgdW5zaWduZWQgYXR0cnMgPSBkZXNjcmlwdG9yLmF0dHJpYnV0ZXNPdmVycmlk
aW5nQ3VycmVudChjdXJyZW50KTsKICAgICBwdXREaXJlY3RBY2Nlc3NvcihleGVjLCBwcm9wZXJ0
eU5hbWUsIGdldHRlclNldHRlciwgYXR0cnMgfCBBY2Nlc3Nvcik7CiAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGlubGluZSBK
U0NlbGwqIGdldEpTRnVuY3Rpb24oSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUuaXND
ZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gSlNGdW5jdGlvblR5cGUpKQorICAgIGlmICh2YWx1ZS5pc0NlbGwoKSAmJiAodmFsdWUuYXND
ZWxsKCktPnR5cGUoKSA9PSBKU0Z1bmN0aW9uVHlwZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZS5h
c0NlbGwoKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEzNSwxNCArMTM1LDE0IEBAIHB1YmxpYzoK
IAogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlm
ICghaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAg
ICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgo
KTsKICAgICB9CiAgICAgICAgIAogICAgIHVuc2lnbmVkIGdldFZlY3Rvckxlbmd0aCgpCiAgICAg
ewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBl
KCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+
dmVjdG9yTGVuZ3RoKCk7CiAgICAgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHNldEluZGV4UXVpY2tseShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRocm93KTsK
KyAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogICAgIH0KICAgICAgICAgCiAgICAg
Ly8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwdXREaXJlY3QqIG1ldGhvZHM6CkBAIC0xODcsNyAr
MTg3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgY2FuR2V0SW5kZXhRdWlja2x5KHVuc2ln
bmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxM
X0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTIsNyArMjEyLDcgQEAg
cHVibGljOgogICAgICAgICAKICAgICBKU1ZhbHVlIGdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBp
KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsK
KyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQz
Ml9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIHJldHVybiBqc051bWJlcihtX2J1dHRlcmZs
eS0+Y29udGlndW91cygpW2ldLmdldCgpLmFzSW50MzIoKSk7CiAgICAgICAgIGNhc2UgQUxMX0NP
TlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBAIC0yMjksNyArMjI5LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBKU1ZhbHVlIHRyeUdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSB0cnlHZXRJbmRleFF1aWNrbHkoaSkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzKTsKLSAgICAgICAgaWYg
KG1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhlYywgaSwg
c2xvdCkpCisgICAgICAgIGlmIChtZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90KSkKICAgICAgICAgICAgIHJldHVybiBz
bG90LmdldFZhbHVlKGV4ZWMsIGkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0K
QEAgLTI4Miw3ICsyODIsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgY2FuU2V0SW5k
ZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9V
TkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
MDQsNyArMzA0LDcgQEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGNhblNldEluZGV4UXVp
Y2tseUZvclB1dERpcmVjdCh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1
Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUo
KSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzIxLDcgKzMyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBzZXRJbmRl
eFF1aWNrbHkoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBz
d2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOiB7
CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CiAg
ICAgICAgICAgICBpZiAoIXYuaXNJbnQzMigpKSB7CkBAIC0zNzIsNyArMzcyLDcgQEAgcHVibGlj
OgogICAgICAgICAKICAgICB2b2lkIGluaXRpYWxpemVJbmRleChWTSYgdm0sIHVuc2lnbmVkIGks
IEpTVmFsdWUgdikKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2Fz
ZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOiB7CiAgICAgICAgICAgICBzZXRJbmRleFF1
aWNrbHlUb1VuZGVjaWRlZCh2bSwgaSwgdik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQyMSw3
ICs0MjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIGJvb2wgaGFzU3BhcnNlTWFwKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC00MzgsNyArNDM4LDcg
QEAgcHVibGljOgogICAgICAgICAKICAgICBib29sIGluU3BhcnNlSW5kZXhpbmdNb2RlKCkKICAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAg
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktfSU5E
RVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoK
ICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CkBAIC00OTQsMzEgKzQ5NCwz
NSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUg
cHJvcGVydHkgbWFwLgogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkgY29uc3QKICAgICB7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNl
dCA9IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSk7Ci0gICAgICAgIGNoZWNrT2Zm
c2V0KG9mZnNldCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOworICAgICAg
ICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIHJldHVybiBvZmZzZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDog
SlNWYWx1ZSgpOwogICAgIH0KIAogICAgIEpTVmFsdWUgZ2V0RGlyZWN0KFZNJiB2bSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpIGNvbnN0CiAgICAgewog
ICAgICAgICBKU0NlbGwqIHNwZWNpZmljOwotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
KTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZt
KTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOworICAgICAgICBjaGVja09mZnNldChv
ZmZzZXQsIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gaW52YWxpZE9mZnNldCA/IGdldERpcmVjdChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAg
IH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9mZnNldChWTSYgdm0sIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiAgICAgewotICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQg
PSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09mZnNl
dChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAg
ICByZXR1cm4gb2Zmc2V0OwogICAgIH0KIAogICAgIFByb3BlcnR5T2Zmc2V0IGdldERpcmVjdE9m
ZnNldChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1
dGVzKQogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICAgICAgUHJvcGVydHlP
ZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1
dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJlKCkt
PmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMt
PnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVy
ZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICAgICAg
Y2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAg
ICByZXR1cm4gb2Zmc2V0OwogICAgIH0KIApAQCAtNTk2LDggKzYwMCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNlYWwoVk0mKTsKICAgICB2b2lkIGZyZWV6ZShWTSYpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoVk0mKTsKLSAgICBib29sIGlzU2VhbGVkKFZN
JiB2bSkgeyByZXR1cm4gc3RydWN0dXJlKCktPmlzU2VhbGVkKHZtKTsgfQotICAgIGJvb2wgaXNG
cm96ZW4oVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNGcm96ZW4odm0pOyB9CisgICAg
Ym9vbCBpc1NlYWxlZChWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSh2bSktPmlzU2VhbGVkKHZt
KTsgfQorICAgIGJvb2wgaXNGcm96ZW4oVk0mIHZtKSB7IHJldHVybiBzdHJ1Y3R1cmUodm0pLT5p
c0Zyb3plbih2bSk7IH0KICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIHN0cnVjdHVy
ZSgpLT5pc0V4dGVuc2libGUoKTsgfQogICAgIGJvb2wgaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgp
CiAgICAgewpAQCAtNjE4LDcgKzYyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmxhdHRlbkRp
Y3Rpb25hcnlPYmplY3QoVk0mIHZtKQogICAgIHsKLSAgICAgICAgc3RydWN0dXJlKCktPmZsYXR0
ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCB0aGlzKTsKKyAgICAgICAgc3RydWN0dXJlKHZtKS0+
ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIHRoaXMpOwogICAgIH0KIAogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdApAQCAtNjQ1LDcgKzY0OSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBjb250aWd1b3VzLCBhcnJheSBzdG9yYWdlKS4KICAgICBDb250aWd1b3VzSlNW
YWx1ZXMgZW5zdXJlSW50MzIoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNJ
bnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWSho
YXNJbnQzMihpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5
LT5jb250aWd1b3VzSW50MzIoKTsKICAgICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJl
SW50MzJTbG93KHZtKTsKQEAgLTY1Nyw3ICs2NjEsNyBAQCBwdWJsaWM6CiAgICAgLy8gb3IgYXJy
YXkgc3RvcmFnZSkuCiAgICAgQ29udGlndW91c0RvdWJsZXMgZW5zdXJlRG91YmxlKFZNJiB2bSkK
ICAgICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGlu
Z1R5cGUoKSkpKQorICAgICAgICBpZiAoTElLRUxZKGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkp
KQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZURvdWJsZVNsb3codm0pOwpAQCAtNjY3
LDcgKzY3MSw3IEBAIHB1YmxpYzoKICAgICAvLyBpbmRleGluZyBzaG91bGQgYmUgc3BhcnNlIG9y
IGJlY2F1c2Ugd2UncmUgaGF2aW5nIGEgYmFkIHRpbWUuCiAgICAgQ29udGlndW91c0pTVmFsdWVz
IGVuc3VyZUNvbnRpZ3VvdXMoVk0mIHZtKQogICAgIHsKLSAgICAgICAgaWYgKExJS0VMWShoYXND
b250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpKQorICAgICAgICBpZiAoTElL
RUxZKGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBt
X2J1dHRlcmZseS0+Y29udGlndW91cygpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBl
bnN1cmVDb250aWd1b3VzU2xvdyh2bSk7CkBAIC02NzgsNyArNjgyLDcgQEAgcHVibGljOgogICAg
IC8vIGF0dGVtcHRzIHRvIGNvbnZlcnQgZWFjaCBkb3VibGUgdG8gYW4gaW50MzIuCiAgICAgQ29u
dGlndW91c0pTVmFsdWVzIHJhZ2VFbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAgICB7Ci0gICAg
ICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSkpCiAg
ICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAgICAgICAgICAg
IAogICAgICAgICByZXR1cm4gcmFnZUVuc3VyZUNvbnRpZ3VvdXNTbG93KHZtKTsKQEAgLTY5MCw3
ICs2OTQsNyBAQCBwdWJsaWM6CiAgICAgLy8gYWxyZWFkeS4KICAgICBBcnJheVN0b3JhZ2UqIGVu
c3VyZUFycmF5U3RvcmFnZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0Fy
cmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJ
S0VMWShoYXNBcnJheVN0b3JhZ2UoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVy
biBtX2J1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0
dXJuIGVuc3VyZUFycmF5U3RvcmFnZVNsb3codm0pOwpAQCAtNzM4LDcgKzc0Miw3IEBAIHByb3Rl
Y3RlZDoKICAgICAvLyBzdG9yYWdlLiBUaGlzIHdpbGwgYXNzZXJ0IG90aGVyd2lzZS4KICAgICBB
cnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZSgpCiAgICAgewotICAgICAgICBBU1NFUlQoaGFzQXJy
YXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICBBU1NFUlQo
aGFzQXJyYXlTdG9yYWdlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgIHJldHVybiBtX2J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCk7CiAgICAgfQogICAgICAgICAKQEAgLTc0Niw3ICs3NTAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgLy8gb2JqZWN0IGlzIGluIGEgbW9kZSB3aGVyZSBpdCBoYXMgYXJy
YXkgc3RvcmFnZS4KICAgICBBcnJheVN0b3JhZ2UqIGFycmF5U3RvcmFnZU9yTnVsbCgpCiAgICAg
ewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAg
ICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX0FSUkFZX1NUT1JB
R0VfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5
U3RvcmFnZSgpOwogICAgICAgICAgICAgICAgIApAQCAtODEzLDcgKzgxNyw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGVuc3VyZUxlbmd0aChWTSYgdm0sIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChsZW5ndGggPCBNQVhfQVJSQVlfSU5ERVgpOwotICAgICAgICBBU1NF
UlQoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMy
KHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgfHwgaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpOworICAgICAgICBBU1NFUlQoaGFzQ29udGlndW91cyhpbmRleGluZ1R5cGUoKSkgfHwgaGFz
SW50MzIoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0RvdWJsZShpbmRleGluZ1R5cGUoKSkgfHwgaGFz
VW5kZWNpZGVkKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSA8IGxlbmd0aCkKICAgICAgICAgICAgIGVuc3VyZUxl
bmd0aFNsb3codm0sIGxlbmd0aCk7CkBAIC04NTEsNyArODU1LDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgQ29udGlndW91c0pTVmFsdWVzIGN1cnJlbnRJbmRleGluZ0RhdGEoKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAgICAgICAg
ICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpOwpAQCAtODY4LDcgKzg3Miw3IEBA
IHByb3RlY3RlZDoKICAgICBKU1ZhbHVlIGdldEhvbHlJbmRleFF1aWNrbHkodW5zaWduZWQgaSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfQ09OVElHVU9VU19JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91cygpW2ldLmdldCgpOwpAQCAt
OTA4LDcgKzkxMiw3IEBAIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRSZWxldmFu
dExlbmd0aCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5
cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
QUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9ET1VCTEVfSU5ERVhJ
TkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CkBA
IC05ODAsNiArOTg0LDEwIEBAIHByaXZhdGU6CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgQ29weVdy
aXRlQmFycmllcjxCdXR0ZXJmbHk+IG1fYnV0dGVyZmx5OworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
Citwcml2YXRlOgorICAgIHVpbnQzMl90IG1fcGFkZGluZzsKKyNlbmRpZgogfTsKIAogLy8gSlNO
b25GaW5hbE9iamVjdCBpcyBhIHR5cGUgb2YgSlNPYmplY3QgdGhhdCBoYXMgc29tZSBpbnRlcm5h
bCBzdG9yYWdlLApAQCAtMTEwNiwzNSArMTExNCwzNSBAQCBpbmxpbmUgc2l6ZV90IEpTT2JqZWN0
OjpvZmZzZXRPZklubGluZVN0CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc0dsb2JhbE9iamVj
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9
PSBHbG9iYWxPYmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlw
ZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzVmFyaWFibGVPYmplY3QoKSBjb25zdAog
ewotICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPj0gVmFyaWFibGVP
YmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPj0gVmFyaWFibGVPYmplY3RUeXBlOwogfQog
CiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc1N0YXRpY1Njb3BlT2JqZWN0KCkgY29uc3QKIHsK
LSAgICBKU1R5cGUgdHlwZSA9IHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKTsKKyAgICBK
U1R5cGUgdHlwZSA9IHRoaXMtPnR5cGUoKTsKICAgICByZXR1cm4gdHlwZSA9PSBOYW1lU2NvcGVP
YmplY3RUeXBlIHx8IHR5cGUgPT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CiB9CiAKIAogaW5saW5l
IGJvb2wgSlNPYmplY3Q6OmlzTmFtZVNjb3BlT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IE5hbWVTY29wZU9iamVjdFR5cGU7Cisg
ICAgcmV0dXJuIHR5cGUoKSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9v
bCBKU09iamVjdDo6aXNBY3RpdmF0aW9uT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEFjdGl2YXRpb25PYmplY3RUeXBlOworICAg
IHJldHVybiB0eXBlKCkgPT0gQWN0aXZhdGlvbk9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29s
IEpTT2JqZWN0Ojppc0Vycm9ySW5zdGFuY2UoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7CisgICAgcmV0dXJu
IHR5cGUoKSA9PSBFcnJvckluc3RhbmNlVHlwZTsKIH0KIAogaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBC
dXR0ZXJmbHkqIGJ1dHRlcmZseSkKQEAgLTExOTgsMTAgKzEyMDYsMTIgQEAgQUxXQVlTX0lOTElO
RSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPdwogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7
CiAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1
Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKICAgICBp
ZiAoTElLRUxZKGlzVmFsaWRPZmZzZXQob2Zmc2V0KSkpIHsKICAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldERpcmVjdChvZmZzZXQpOwotICAgICAgICBpZiAoc3RydWN0dXJlKCktPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSAmJiB2YWx1ZS5pc0dldHRlclNldHRlcigpKQorICAgICAgICBp
ZiAoc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUuaXNHZXR0
ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFs
dWUsIGF0dHJpYnV0ZXMsIG9mZnNldCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpcywgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CkBAIC0xMjIxLDkgKzEy
MzEsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZQogCiBBTFdB
WVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmZhc3RHZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
Ci0gICAgaWYgKCFzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0
eVNsb3QoKSkKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGlmICghc3RydWN0dXJlKHZt
KS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKICAgICAgICAgcmV0
dXJuIGFzT2JqZWN0KHRoaXMpLT5pbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVy
dHlOYW1lLCBzbG90KTsKLSAgICByZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlT
bG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIG1ldGhvZFRh
YmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiB9CiAKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMg
bGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UKQEAgLTEyNDUsNyArMTI1Niw3IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHkKIHsKICAgICBKU09iamVj
dCogb2JqZWN0ID0gdGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAob2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIEpTVmFsdWUg
cHJvdG90eXBlID0gb2JqZWN0LT5wcm90b3R5cGUoKTsKICAgICAgICAgaWYgKCFwcm90b3R5cGUu
aXNPYmplY3QoKSkKQEAgLTEyODAsMTUgKzEyOTEsMTYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKAogICAgIEFTU0VSVCghSGVhcDo6aGVhcCh2YWx1ZSkgfHwgSGVh
cDo6aGVhcCh2YWx1ZSkgPT0gSGVhcDo6aGVhcCh0aGlzKSk7CiAgICAgQVNTRVJUKHByb3BlcnR5
TmFtZS5hc0luZGV4KCkgPT0gUHJvcGVydHlOYW1lOjpOb3RBbkluZGV4KTsKIAotICAgIGlmIChz
dHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkp
IHsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCog
Y3VycmVudFNwZWNpZmljRnVuY3Rpb247Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9
IHN0cnVjdHVyZSgpLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1
cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBpbnZhbGlkT2Zmc2V0
KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5j
dGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUg
bmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAo
Y3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pKQotICAgICAgICAgICAgICAgIHN0cnVjdHVyZSgpLT5kZXNwZWNpZnlE
aWN0aW9uYXJ5RnVuY3Rpb24odm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24odm0sIHByb3BlcnR5TmFtZSk7CiAg
ICAgICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYgY3VycmVudEF0dHJpYnV0ZXMg
JiBSZWFkT25seSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzMDksMjQg
KzEzMjEsMjQgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAg
ICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKICAgICAgICAgQnV0dGVyZmx5KiBuZXdC
dXR0ZXJmbHkgPSBidXR0ZXJmbHkoKTsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5wdXRXaWxs
R3Jvd091dE9mTGluZVN0b3JhZ2UoKSkKLSAgICAgICAgICAgIG5ld0J1dHRlcmZseSA9IGdyb3dP
dXRPZkxpbmVTdG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgc3Ry
dWN0dXJlKCktPnN1Z2dlc3RlZE5ld091dE9mTGluZVN0b3JhZ2VDYXBhY2l0eSgpKTsKLSAgICAg
ICAgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24odm0s
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7Ci0gICAgICAgIHNl
dFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgc3RydWN0dXJlKCksIG5ld0J1dHRlcmZseSk7Cisg
ICAgICAgIGlmICh0aGlzLT5zdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdl
KCkpCisgICAgICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwg
dGhpcy0+c3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCksIHRoaXMtPnN0cnVjdHVyZSgp
LT5zdWdnZXN0ZWROZXdPdXRPZkxpbmVTdG9yYWdlQ2FwYWNpdHkoKSk7CisgICAgICAgIG9mZnNl
dCA9IHRoaXMtPnN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICBzZXRT
dHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHRoaXMtPnN0cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkp
OwogCiAgICAgICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7Ci0gICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKKyAgICAgICAgQVNTRVJUKHRoaXMtPnN0
cnVjdHVyZSgpLT5pc1ZhbGlkT2Zmc2V0KG9mZnNldCkpOwogICAgICAgICBwdXREaXJlY3Qodm0s
IG9mZnNldCwgdmFsdWUpOwogICAgICAgICAvLyBTZWUgY29tbWVudCBvbiBzZXROZXdQcm9wZXJ0
eSBjYWxsIGJlbG93LgogICAgICAgICBpZiAoIXNwZWNpZmljRnVuY3Rpb24pCiAgICAgICAgICAg
ICBzbG90LnNldE5ld1Byb3BlcnR5KHRoaXMsIG9mZnNldCk7CiAgICAgICAgIGlmIChhdHRyaWJ1
dGVzICYgUmVhZE9ubHkpCi0gICAgICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFk
T25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHRoaXMtPnN0cnVjdHVyZSgpLT5zZXRDb250
YWluc1JlYWRPbmx5UHJvcGVydGllcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7Ci0gICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9
IHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAgIHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkgPSB0aGlzLT5zdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKICAgICBpZiAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRv
RXhpc3RpbmdTdHJ1Y3R1cmUodGhpcy0+c3RydWN0dXJlKCksIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0KSkgewogICAgICAgICBEZWZlckdDIGRlZmVy
R0Modm0uaGVhcCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5
KCk7CkBAIC0xMzQ4LDcgKzEzNjAsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0
SW50ZXJuYWwoCiAKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsKICAgICBKU0NlbGwq
IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5nZXQo
dm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uKTsKKyAgICBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBjdXJy
ZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgIGlmIChvZmZzZXQg
IT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICBpZiAoKG1vZGUgPT0gUHV0TW9kZVB1dCkgJiYg
Y3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEzNjksNyArMTM4MSw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRl
cm5hbCgKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIC8vIGNhc2UgKDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAg
ICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNldFN0
cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBjYXNlICgz
KSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4KQEAgLTEzODEsNyArMTM5Myw3IEBA
IGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBpZiAoKG1vZGUg
PT0gUHV0TW9kZVB1dCkgJiYgIWlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCB0aGlzLT5zdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY0Z1bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKKyAgICBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNldCwgc2xvdC5jb250ZXh0
KCkpOwogICAgIAogICAgIHZhbGlkYXRlT2Zmc2V0KG9mZnNldCk7CiAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+aXNWYWxpZE9mZnNldChvZmZzZXQpKTsKQEAgLTE0MTUsNyArMTQyNyw3IEBAIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRSZWEKIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KFZNJiB2bSwgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUpCiB7CiAgICAgc2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeSgKLSAgICAgICAgdm0sIHN0cnVjdHVyZSgpLT5vdXRPZkxpbmVDYXBh
Y2l0eSgpLCBuZXdTdHJ1Y3R1cmUpOworICAgICAgICB2bSwgc3RydWN0dXJlKHZtKS0+b3V0T2ZM
aW5lQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dE93bkRhdGFQcm9wZXJ0eShWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJl
dmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTc2LDYgKzc2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3Bl
cnR5TmFtZUFycmF5RGF0YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm94eS5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Myw1NSArNzMs
NTUgQEAgU3RyaW5nIEpTUHJveHk6OmNsYXNzTmFtZShjb25zdCBKU09iamVjdAogYm9vbCBKU1By
b3h5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0KTsKLSAgICByZXR1
cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xv
dCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICBy
ZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwg
c2xvdCk7CiB9CiAKIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQ
cm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhp
c09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKIHZvaWQg
SlNQcm94eTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
ICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgdGhp
c09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1dCh0aGlzT2JqZWN0LT50YXJnZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgdGhpc09iamVjdC0+dGFy
Z2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCks
IGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiB2b2lkIEpTUHJveHk6OnB1
dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU1Byb3h5KiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0LT50YXJn
ZXQoKS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOworICAgIHRoaXNPYmplY3QtPnRh
cmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LT50
YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBi
b29sIEpTUHJveHk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTUHJveHkqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LT50
YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7Cisg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTUHJveHk6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+KGNl
bGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7
CiB9CiAKIGJvb2wgSlNQcm94eTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNQcm94eSog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4oY2VsbCk7Ci0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09i
amVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIHRoaXNPYmpl
Y3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiB2b2lk
IEpTUHJveHk6OmdldFByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4ob2JqZWN0
KTsKLSAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cisg
ICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRQcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAogdm9pZCBKU1Byb3h5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAJKHJldmlzaW9uIDE2NDcy
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNj
ZXNzKEV4ZWNTdAogSlNPYmplY3QqIEpTU2NvcGU6Om9iamVjdEF0U2NvcGUoSlNTY29wZSogc2Nv
cGUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHNjb3BlOwotICAgIGlmIChvYmplY3QtPnN0
cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQorICAgIGlmIChv
YmplY3QtPnR5cGUoKSA9PSBXaXRoU2NvcGVUeXBlKQogICAgICAgICByZXR1cm4ganNDYXN0PEpT
V2l0aFNjb3BlKj4ob2JqZWN0KS0+b2JqZWN0KCk7CiAKICAgICByZXR1cm4gb2JqZWN0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxNjQ3
MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjMsNyArMTYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhTdHJp
bmdUeXBlLCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKSwgaW5mbygpKTsKKyAgICAg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywg
VHlwZUluZm8oU3RyaW5nVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICB9
CiAKICAgICAgICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxlbmd0aCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU1N0cmluZywgbV9sZW5ndGgpOyB9CkBAIC0xODEsNiArMTgxLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIGZyaWVuZCBjbGFzcyBK
U1ZhbHVlOwogICAgICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNSb3BlKCkgY29uc3QgeyByZXR1
cm4gbV92YWx1ZS5pc051bGwoKTsgfQpAQCAtNTI2LDcgKzUyOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaW5saW5lIGJvb2wgaXNKU1N0
cmluZyhKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgdi5hc0NlbGwoKS0+Y2xhc3NJ
bmZvKCkgPT0gSlNTdHJpbmc6OmluZm8oKTsgfQorICAgIGlubGluZSBib29sIGlzSlNTdHJpbmco
SlNWYWx1ZSB2KSB7IHJldHVybiB2LmlzQ2VsbCgpICYmIHYuYXNDZWxsKCktPnR5cGUoKSA9PSBT
dHJpbmdUeXBlOyB9CiAKICAgICAvLyAtLS0gSlNWYWx1ZSBpbmxpbmVzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGUuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWVudW0gSlNUeXBlIHsKK2VudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAg
VW5zcGVjaWZpZWRUeXBlLAogICAgIFVuZGVmaW5lZFR5cGUsCiAgICAgQm9vbGVhblR5cGUsCkBA
IC01NSw2ICs1NSwxOCBAQCBlbnVtIEpTVHlwZSB7CiAgICAgRXJyb3JJbnN0YW5jZVR5cGUsCiAg
ICAgUHJveHlUeXBlLAogICAgIFdpdGhTY29wZVR5cGUsCisgICAgQXJndW1lbnRzVHlwZSwKKwor
ICAgIEludDhBcnJheVR5cGUsCisgICAgSW50MTZBcnJheVR5cGUsCisgICAgSW50MzJBcnJheVR5
cGUsCisgICAgVWludDhBcnJheVR5cGUsCisgICAgVWludDhDbGFtcGVkQXJyYXlUeXBlLAorICAg
IFVpbnQxNkFycmF5VHlwZSwKKyAgICBVaW50MzJBcnJheVR5cGUsCisgICAgRmxvYXQzMkFycmF5
VHlwZSwKKyAgICBGbG9hdDY0QXJyYXlUeXBlLAorICAgIERhdGFWaWV3VHlwZSwKIAogICAgIE5h
bWVTY29wZU9iamVjdFR5cGUsCiAgICAgLy8gVmFyaWFibGVPYmplY3RUeXBlIG11c3QgYmUgbGVz
cyB0aGFuIE1PU1Qgb2YgdGhlIHR5cGVzIG9mIGl0cyBzdWJjbGFzc2VzIGFuZCBvbmx5IGl0cyBz
dWJjbGFzc2VzLgpAQCAtNjQsNiArNzYsOCBAQCBlbnVtIEpTVHlwZSB7CiAgICAgQWN0aXZhdGlv
bk9iamVjdFR5cGUsCiB9OwogCitDT01QSUxFX0FTU0VSVChzaXplb2YoSlNUeXBlKSA9PSBzaXpl
b2YodWludDhfdCksIHNpemVvZl9qc3R5cGVfaXNfb25lX2J5dGUpOworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIxICs0NCwzMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90ID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvID0gMSA8PCA2
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNWaXNpdENoaWxkcmVuID0gMSA8
PCA3OworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0dldFByb3BlcnR5TmFt
ZXMgPSAxIDw8IDg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZyA9IDEgPDwgOTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSGFzSW1wdXJlR2V0
T3duUHJvcGVydHlTbG90ID0gMSA8PCAxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTmV3
SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzID0gMSA8PCAxMTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlSGFzUmFyZURhdGEgPSAxIDw8IDEyOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVJc0ltbW9ydGFsID0gMSA8PCAxMzsKIAogICAgIGNsYXNz
IFR5cGVJbmZvIHsKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgdWludDhfdCBJbmxpbmVU
eXBlRmxhZ3M7CisgICAgICAgIHR5cGVkZWYgdWludDhfdCBPdXRPZkxpbmVUeXBlRmxhZ3M7CisK
ICAgICAgICAgVHlwZUluZm8oSlNUeXBlIHR5cGUsIHVuc2lnbmVkIGZsYWdzID0gMCkKKyAgICAg
ICAgICAgIDogVHlwZUluZm8odHlwZSwgZmxhZ3MgJiAweGZmLCBmbGFncyA+PiA4KQorICAgICAg
ICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBlLCBJ
bmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzLCBPdXRPZkxpbmVUeXBlRmxhZ3Mgb3V0T2ZM
aW5lVHlwZUZsYWdzKQogICAgICAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgICAgICwg
bV9mbGFncyhmbGFncyAmIDB4ZmYpCi0gICAgICAgICAgICAsIG1fZmxhZ3MyKGZsYWdzID4+IDgp
CisgICAgICAgICAgICAsIG1fZmxhZ3MoaW5saW5lVHlwZUZsYWdzKQorICAgICAgICAgICAgLCBt
X2ZsYWdzMihvdXRPZkxpbmVUeXBlRmxhZ3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxpbnQ+KHR5cGUpIDw9IDB4ZmYpOwotICAgICAgICAgICAgQVNTRVJUKHR5
cGUgPj0gQ29tcG91bmRUeXBlIHx8ICEoZmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSk7
CisgICAgICAgICAgICBBU1NFUlQobV90eXBlID49IENvbXBvdW5kVHlwZSB8fCAhKG1fZmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSk7CiAgICAgICAgICAgICAvLyBObyBvYmplY3QgdGhh
dCBkb2Vzbid0IEltcGxlbWVudHNIYXNJbnN0YW5jZSBzaG91bGQgb3ZlcnJpZGUgaXQhCiAgICAg
ICAgICAgICBBU1NFUlQoKG1fZmxhZ3MgJiAoSW1wbGVtZW50c0hhc0luc3RhbmNlIHwgT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UpKSAhPSBPdmVycmlkZXNIYXNJbnN0YW5jZSk7CiAgICAgICAgICAgICAv
LyBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlIG1lYW5zIChJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgJiAhT3ZlcnJpZGVzSGFzSW5zdGFuY2UpCkBAIC02Nyw3ICs3Nyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxKU1R5cGU+KG1fdHlwZSk7IH0KLSAgICAgICAgYm9vbCBpc09iamVjdCgpIGNv
bnN0IHsgcmV0dXJuIHR5cGUoKSA+PSBPYmplY3RUeXBlOyB9CisgICAgICAgIGJvb2wgaXNPYmpl
Y3QoKSBjb25zdCB7IHJldHVybiBpc09iamVjdCh0eXBlKCkpOyB9CisgICAgICAgIHN0YXRpYyBi
b29sIGlzT2JqZWN0KEpTVHlwZSB0eXBlKSB7IHJldHVybiB0eXBlID49IE9iamVjdFR5cGU7IH0K
ICAgICAgICAgYm9vbCBpc0ZpbmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEZp
bmFsT2JqZWN0VHlwZTsgfQogICAgICAgICBib29sIGlzTnVtYmVyT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IE51bWJlck9iamVjdFR5cGU7IH0KICAgICAgICAgYm9vbCBpc05hbWUo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gTmFtZUluc3RhbmNlVHlwZTsgfQpAQCAtODYsNiAr
OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBoYXNJbXB1cmVHZXRPd25Qcm9w
ZXJ0eVNsb3QoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKEhhc0ltcHVyZUdldE93blBy
b3BlcnR5U2xvdCk7IH0KICAgICAgICAgYm9vbCBuZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hw
b2ludHMoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKE5ld0ltcHVyZVByb3BlcnR5Rmly
ZXNXYXRjaHBvaW50cyk7IH0KICAgICAgICAgYm9vbCBzdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIGlzU2V0T25GbGFnczIoU3RydWN0dXJlSGFzUmFyZURhdGEpOyB9CisgICAg
ICAgIGJvb2wgc3RydWN0dXJlSXNJbW1vcnRhbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0T25GbGFn
czIoU3RydWN0dXJlSXNJbW1vcnRhbCk7IH0KIAogICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGZs
YWdzT2Zmc2V0KCkKICAgICAgICAgewpAQCAtOTcsNiArMTA5LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFR5cGVJbmZvLCBtX3R5cGUpOwog
ICAgICAgICB9CiAKKyAgICAgICAgSW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKyAgICAgICAgT3V0T2ZMaW5lVHlwZUZsYWdzIG91dE9m
TGluZVR5cGVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MyOyB9CisKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBEYXRhLmgJKHJldmlzaW9uIDE2
NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAg
ICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2
YXRlOgogICAgIHR5cGVkZWYgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQz
Ml90PiBJbmRleFRyYWl0czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjA2LDcgKzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUmVxdWVzdGVkIHByb3BlcnR5IG5hbWVzIG9mIGEgdmFsdWUgdGhhdCBpcyBub3QgYW4g
b2JqZWN0LiIpKSk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAg
ICBhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5TmFtZXMoYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBJ
bmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChleGVjLT5hcmd1bWVudCgw
KSktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CiAgICAgSlNBcnJheSogbmFtZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMs
IDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCkBAIC0yMjAsNyArMjIw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1ZXN0ZWQga2V5
cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkp
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHBy
b3BlcnRpZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIGtleXMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVz
ID0gcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9w
ZXJ0aWVzOyBpKyspCkBAIC0zMjQsMTQgKzMyNCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpOwogICAgIEFTU0VSVCgoZGVzY3JpcHRvci5hdHRyaWJ1dGVzKCkgJiBBY2Nlc3NvcikgfHwg
KCFkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpKTsKICAgICBBU1NFUlQoIWV4ZWMt
PmhhZEV4Y2VwdGlvbigpKTsKLSAgICBPLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0
eShPLCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5TmFtZSksIGRlc2NyaXB0b3IsIHRy
dWUpOworICAgIE8tPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShP
LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5TmFtZSksIGRlc2NyaXB0b3IsIHRydWUp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoTyk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGRl
ZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBKU09iamVj
dCogcHJvcGVydGllcykKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4
ZWMpOwotICAgIGFzT2JqZWN0KHByb3BlcnRpZXMpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBhc09iamVjdChwcm9wZXJ0aWVzKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3QocHJvcGVydGll
cyksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAg
IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydHlOYW1lcy5zaXplKCk7CiAgICAgVmVjdG9y
PFByb3BlcnR5RGVzY3JpcHRvcj4gZGVzY3JpcHRvcnM7CiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgbWFya0J1ZmZlcjsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQ
cm9wZXJ0aWVzKEV4ZWNTdGF0CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXNbaV0sIGRl
c2NyaXB0b3JzW2ldLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzW2ldLCBk
ZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICB9CkBAIC0zOTgsNyArMzk4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogCiAgICAgLy8gMi4gRm9y
IGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFy
cmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJv
cGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3Bl
cnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9w
ZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAg
ICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blBy
b3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDA4LDcgKzQwOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgLy8gYi4g
SWYgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUsIHNldCBkZXNjLltbQ29uZmlndXJhYmxl
XV0gdG8gZmFsc2UuCiAgICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGZhbHNlKTsKICAgICAg
ICAgLy8gYy4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBv
ZiBPIHdpdGggUCwgZGVzYywgYW5kIHRydWUgYXMgYXJndW1lbnRzLgotICAgICAgICBvYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgKml0ZXIsIGRl
c2MsIHRydWUpOworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZp
bmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShvYmopOwogICAgIH0KQEAgLTQyOCwxNCArNDI4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QuZnJlZXplIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KG9iaik7CiAKLSAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVjdCkgJiYgIWhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkgewor
ICAgIGlmIChpc0pTRmluYWxPYmplY3Qob2JqZWN0KSAmJiAhaGFzSW5kZXhlZFByb3BlcnRpZXMo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgb2JqZWN0LT5mcmVlemUoZXhlYy0+
dm0oKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CiAKICAg
ICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURv
bnRFbnVtUHJvcGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhl
IFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkBAIC00NDks
NyArNDQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAg
ICAgICAvLyBjLiBJZiBkZXNjLltbQ29uZmlndXJhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tD
b25maWd1cmFibGVdXSB0byBmYWxzZS4KICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFs
c2UpOwogICAgICAgICAvLyBkLiBDYWxsIHRoZSBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJu
YWwgbWV0aG9kIG9mIE8gd2l0aCBQLCBkZXNjLCBhbmQgdHJ1ZSBhcyBhcmd1bWVudHMuCi0gICAg
ICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVj
LCAqaXRlciwgZGVzYywgdHJ1ZSk7CisgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUp
OwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiAgICAgfQpAQCAtNDgzLDcgKzQ4Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKIAogICAgIC8vIDIuIEZvciBlYWNoIG5h
bWVkIG93biBwcm9wZXJ0eSBuYW1lIFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9w
ZXJ0aWVzKGV4ZWMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlO
YW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OworICAgIG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5l
bmQoKTsKICAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
cHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEu
IExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1d
IGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KQEAgLTUxMyw3ICs1MTMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAKICAgICAvLyAyLiBGb3IgZWFjaCBu
YW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJv
cGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
KTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7
CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMu
ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAvLyBh
LiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHld
XSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE2NDcyNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZ2V0KTsKICAgICBkZXNj
cmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7CiAgICAgZGVzY3JpcHRvci5zZXRDb25maWd1cmFi
bGUodHJ1ZSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVy
dHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVjLCBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlwdG9yLCBmYWxzZSk7CisgICAgdGhp
c09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgZGVzY3JpcHRvci5zZXRT
ZXR0ZXIoc2V0KTsKICAgICBkZXNjcmlwdG9yLnNldEVudW1lcmFibGUodHJ1ZSk7CiAgICAgZGVz
Y3JpcHRvci5zZXRDb25maWd1cmFibGUodHJ1ZSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoKS0+ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcihleGVj
LCBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLCBkZXNjcmlw
dG9yLCBmYWxzZSk7CisgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRl
ZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFs
c2UpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAg
LTIxNCwxNCArMjE0LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJv
dG8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhl
YywgU3RyaW5nKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gQVNDSUlMaXRlcmFsKCJbb2JqZWN0
IFVuZGVmaW5lZF0iKSA6IEFTQ0lJTGl0ZXJhbCgiW29iamVjdCBOdWxsXSIpKSkpOwogICAgIEpT
T2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGV4ZWMpOwogCi0gICAgSlNT
dHJpbmcqIHJlc3VsdCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vYmplY3RUb1N0cmluZ1Zh
bHVlKCk7CisgICAgSlNTdHJpbmcqIHJlc3VsdCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZShleGVj
LT52bSgpKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwogICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdTdHJpbmcgPSBXVEY6OnRyeU1ha2VTdHJpbmcoIltv
YmplY3QgIiwgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3Qp
LCAiXSIpOworICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gV1RGOjp0cnlN
YWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5jbGFzc05hbWUodGhpc09iamVjdCksICJdIik7CiAgICAgICAgIGlmICghbmV3U3RyaW5nKQog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3Io
ZXhlYykpOwogCiAgICAgICAgIHJlc3VsdCA9IGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBuZXdT
dHJpbmcucmVsZWFzZSgpKTsKLSAgICAgICAgdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnNldE9i
amVjdFRvU3RyaW5nVmFsdWUoZXhlYy0+dm0oKSwgdGhpc09iamVjdCwgcmVzdWx0KTsKKyAgICAg
ICAgdGhpc09iamVjdC0+c3RydWN0dXJlKGV4ZWMtPnZtKCkpLT5zZXRPYmplY3RUb1N0cmluZ1Zh
bHVlKGV4ZWMtPnZtKCksIHRoaXNPYmplY3QsIHJlc3VsdCk7CiAgICAgfQogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTEgKzY4LDExIEBAIEpTVmFsdWUganNUeXBlU3RyaW5nRm9yVmFsdWUoVk0mIHZtLCBKU0cKICAg
ICBpZiAodi5pc09iamVjdCgpKSB7CiAgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Ig
b2JqZWN0cyB0aGF0IHNob3VsZCBiZSB0cmVhdGVkCiAgICAgICAgIC8vIGFzIG51bGwgd2hlbiBk
b2luZyBjb21wYXJpc29ucy4KLSAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChnbG9iYWxPYmplY3QpKQorICAgICAgICBpZiAoYXNPYmpl
Y3QodiktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFsT2JqZWN0
KSkKICAgICAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkU3RyaW5nKCk7
CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3Qodik7Ci0gICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxE
YXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9uZSkKKyAgICAgICAgaWYgKG9iamVj
dC0+bWV0aG9kVGFibGUodm0pLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxs
VHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3Ry
aW5nKCk7CiAgICAgfQogICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5nKCk7
CkBAIC04OCwxNSArODgsMTUgQEAgYm9vbCBqc0lzT2JqZWN0VHlwZShDYWxsRnJhbWUqIGNhbGxG
cmFtZQogICAgIGlmICghdi5pc0NlbGwoKSkKICAgICAgICAgcmV0dXJuIHYuaXNOdWxsKCk7CiAK
LSAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5
cGUoKTsKKyAgICBKU1R5cGUgdHlwZSA9IHYuYXNDZWxsKCktPnR5cGUoKTsKICAgICBpZiAodHlw
ZSA9PSBTdHJpbmdUeXBlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHR5cGUgPj0g
T2JqZWN0VHlwZSkgewotICAgICAgICBpZiAoYXNPYmplY3QodiktPnN0cnVjdHVyZSgpLT5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSkKKyAg
ICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUoY2FsbEZyYW1lLT52bSgpKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qodik7Ci0gICAgICAgIGlmIChvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9IENhbGxUeXBlTm9u
ZSkKKyAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoY2FsbEZyYW1lLT52bSgpKS0+Z2V0
Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA0LDYgKzIwNCw3IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0FkZChDYWxsRnJhbWUq
IGMKIAogaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvckNoYWluQWNjZXNz
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlPZmZzZXQmIHNsb3RPZmZzZXQp
CiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIEpTQ2VsbCogY2VsbCA9IGJh
c2UuYXNDZWxsKCk7CiAgICAgc2l6ZV90IGNvdW50ID0gMDsKICAgICAgICAgCkBAIC0yMzAsMTAg
KzIzMSwxMCBAQCBpbmxpbmUgc2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluRm9yCiAKICAg
ICAgICAgLy8gU2luY2Ugd2UncmUgYWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQn
cyBhIGdvb2QgYmV0IHRoYXQgaXQKICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFz
IGEgZGljdGlvbmFyeS4KLSAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkgeworICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKHZtKS0+aXNEaWN0aW9uYXJ5KCkp
IHsKICAgICAgICAgICAgIGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChj
YWxsRnJhbWUtPnZtKCkpOwogICAgICAgICAgICAgaWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAg
ICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1l
LT52bSgpLCBwcm9wZXJ0eU5hbWUpOyAKKyAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2Vs
bC0+c3RydWN0dXJlKHZtKS0+Z2V0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsgCiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICArK2NvdW50OwpAQCAtMjQ0LDEyICsyNDUs
MTMgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbkZvcgogCiBpbmxpbmUg
c2l6ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU0Nl
bGwqIGJhc2UpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIHNpemVfdCBj
b3VudCA9IDA7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGJhc2UtPmlzUHJveHkoKSkK
ICAgICAgICAgICAgIHJldHVybiBJbnZhbGlkUHJvdG90eXBlQ2hhaW47CiAgICAgICAgICAgICAK
LSAgICAgICAgSlNWYWx1ZSB2ID0gYmFzZS0+c3RydWN0dXJlKCktPnByb3RvdHlwZUZvckxvb2t1
cChjYWxsRnJhbWUpOworICAgICAgICBKU1ZhbHVlIHYgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pLT5w
cm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKICAgICAgICAgaWYgKHYuaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gY291bnQ7CiAKQEAgLTI1Nyw3ICsyNTksNyBAQCBpbmxpbmUgc2l6
ZV90IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKENhCiAKICAgICAgICAgLy8gU2luY2Ugd2UncmUg
YWNjZXNzaW5nIGEgcHJvdG90eXBlIGluIGEgbG9vcCwgaXQncyBhIGdvb2QgYmV0IHRoYXQgaXQK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KLSAgICAg
ICAgaWYgKGJhc2UtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKKyAgICAgICAgaWYgKGJh
c2UtPnN0cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKQogICAgICAgICAgICAgYXNPYmplY3Qo
YmFzZSktPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+dm0oKSk7CiAKICAgICAg
ICAgKytjb3VudDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBPdmVycmlk
ZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAtMjAyLDYgKzIwMiw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKICNlbmRpZgogCitwcm90ZWN0ZWQ6Cisg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKIHByaXZhdGU6CiAgICAgUHJvcGVydHlU
YWJsZShWTSYsIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7CiAgICAgUHJvcGVydHlUYWJsZShW
TSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIDApLCBpbmZvKCkp
OworICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oTGVhZlR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZPOwpAQCAtODUsNiArODUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJl
Z0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJpbmcpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlz
SW1tb3J0YWw7CisKICAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCiAgICAgcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFs
dWVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFy
c2VBcnJheVZhbHVlTWFwLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
IAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4gfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHVibGljOgogICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NywxMyArMTU3LDEz
IEBAIHZvaWQgU3RydWN0dXJlOjpkdW1wU3RhdGlzdGljcygpCiAKIFN0cnVjdHVyZTo6U3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8s
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KQogICAg
IDogSlNDZWxsKHZtLCB2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX2Jsb2Io
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgaW5kZXhpbmdUeXBl
LCB0eXBlSW5mbykKKyAgICAsIG1fb3V0T2ZMaW5lVHlwZUZsYWdzKHR5cGVJbmZvLm91dE9mTGlu
ZVR5cGVGbGFncygpKQogICAgICwgbV9nbG9iYWxPYmplY3Qodm0sIHRoaXMsIGdsb2JhbE9iamVj
dCwgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0Pjo6TWF5QmVOdWxsKQogICAgICwgbV9wcm90
b3R5cGUodm0sIHRoaXMsIHByb3RvdHlwZSkKICAgICAsIG1fY2xhc3NJbmZvKGNsYXNzSW5mbykK
ICAgICAsIG1fdHJhbnNpdGlvbldhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQogICAgICwgbV9vZmZz
ZXQoaW52YWxpZE9mZnNldCkKLSAgICAsIG1fdHlwZUluZm8odHlwZUluZm8pCi0gICAgLCBtX2lu
ZGV4aW5nVHlwZShpbmRleGluZ1R5cGUpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KGlubGluZUNh
cGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAg
LCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxzZSkKQEAgLTE5MSw4ICsxOTEsNiBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgLCBtX2NsYXNzSW5mbyhpbmZvKCkpCiAgICAg
LCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fb2Zmc2V0KGlu
dmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbikKLSAgICAsIG1faW5kZXhpbmdUeXBlKDApCiAgICAgLCBtX2lubGluZUNhcGFj
aXR5KDApCiAgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0aW9uYXJ5S2luZCkKICAgICAs
IG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAtMjA1LDYgKzIwMywxMCBAQCBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgLCBtX2RpZFRyYW5zaXRpb24oZmFsc2UpCiAg
ICAgLCBtX3N0YXRpY0Z1bmN0aW9uUmVpZmllZChmYWxzZSkKIHsKKyAgICBUeXBlSW5mbyB0eXBl
SW5mbyA9IFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0
cnVjdHVyZUlzSW1tb3J0YWwpOworICAgIG1fYmxvYiA9IFN0cnVjdHVyZUlEQmxvYih2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5hbGxvY2F0ZUlEKHRoaXMpLCAwLCB0eXBlSW5mbyk7CisgICAg
bV9vdXRPZkxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKTsKKwog
ICAgIEFTU0VSVChoYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1By
b3RvKCkgfHwgIW1fY2xhc3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGll
cyh2bSkpOwogICAgIEFTU0VSVChoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgfHwgIW1fY2xh
c3NJbmZvLT5oYXNTdGF0aWNTZXR0ZXJPclJlYWRvbmx5UHJvcGVydGllcyh2bSkpOwogfQpAQCAt
MjE1LDggKzIxNyw2IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMK
ICAgICAsIG1fY2xhc3NJbmZvKHByZXZpb3VzLT5tX2NsYXNzSW5mbykKICAgICAsIG1fdHJhbnNp
dGlvbldhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQogICAgICwgbV9vZmZzZXQoaW52YWxpZE9mZnNl
dCkKLSAgICAsIG1fdHlwZUluZm8ocHJldmlvdXMtPnR5cGVJbmZvKCkudHlwZSgpLCBwcmV2aW91
cy0+dHlwZUluZm8oKS5mbGFncygpICYgflN0cnVjdHVyZUhhc1JhcmVEYXRhKQotICAgICwgbV9p
bmRleGluZ1R5cGUocHJldmlvdXMtPmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnkoKSkKICAg
ICAsIG1faW5saW5lQ2FwYWNpdHkocHJldmlvdXMtPm1faW5saW5lQ2FwYWNpdHkpCiAgICAgLCBt
X2RpY3Rpb25hcnlLaW5kKHByZXZpb3VzLT5tX2RpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bp
bm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCkBAIC0yMjksNiArMjI5LDExIEBAIFN0cnVjdHVyZTo6
U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICAsIG1fZGlkVHJhbnNpdGlvbih0cnVl
KQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQocHJldmlvdXMtPm1fc3RhdGljRnVuY3Rp
b25SZWlmaWVkKQogeworICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8ocHJldmlvdXMt
PnR5cGVJbmZvKCkudHlwZSgpLCBwcmV2aW91cy0+dHlwZUluZm8oKS5mbGFncygpICYgflN0cnVj
dHVyZUhhc1JhcmVEYXRhKTsKKyAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgcHJldmlvdXMtPmluZGV4aW5nVHlw
ZUluY2x1ZGluZ0hpc3RvcnkoKSwgdHlwZUluZm8pOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdz
ID0gdHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CisKKyAgICBBU1NFUlQoIXByZXZpb3Vz
LT50eXBlSW5mbygpLnN0cnVjdHVyZUlzSW1tb3J0YWwoKSk7CiAgICAgaWYgKHByZXZpb3VzLT50
eXBlSW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkgJiYgcHJldmlvdXMtPnJhcmVEYXRhKCkt
Pm5lZWRzQ2xvbmluZygpKQogICAgICAgICBjbG9uZVJhcmVEYXRhRnJvbSh2bSwgcHJldmlvdXMp
OwogICAgIGVsc2UgaWYgKHByZXZpb3VzLT5wcmV2aW91c0lEKCkpCkBAIC0yNDEsNiArMjQ2LDEz
IEBAIFN0cnVjdHVyZTo6U3RydWN0dXJlKFZNJiB2bSwgY29uc3QgU3RydWMKICAgICBBU1NFUlQo
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIHx8ICFtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0
dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKTsKIH0KIAorU3RydWN0dXJlOjp+U3RydWN0dXJl
KCkKK3sKKyAgICBpZiAodHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9ydGFsKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBIZWFwOjpoZWFwKHRoaXMpLT5zdHJ1Y3R1cmVJRFRhYmxlKCkuZGVhbGxv
Y2F0ZUlEKHRoaXMsIG1fYmxvYi5zdHJ1Y3R1cmVJRCgpKTsKK30KKwogdm9pZCBTdHJ1Y3R1cmU6
OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogewogICAgIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGNl
bGwpLT5TdHJ1Y3R1cmU6On5TdHJ1Y3R1cmUoKTsKQEAgLTYzOCw3ICs2NTAsNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0CiAgICAgU3RydWN0dXJlKiB0cmFuc2l0
aW9uID0gY3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwogICAgIHRyYW5zaXRpb24tPnNldFByZXZpb3Vz
SUQodm0sIHRyYW5zaXRpb24sIHN0cnVjdHVyZSk7CiAgICAgdHJhbnNpdGlvbi0+bV9hdHRyaWJ1
dGVzSW5QcmV2aW91cyA9IGF0dHJpYnV0ZXM7Ci0gICAgdHJhbnNpdGlvbi0+bV9pbmRleGluZ1R5
cGUgPSBpbmRleGluZ1R5cGU7CisgICAgdHJhbnNpdGlvbi0+bV9ibG9iLnNldEluZGV4aW5nVHlw
ZShpbmRleGluZ1R5cGUpOwogICAgIHRyYW5zaXRpb24tPnByb3BlcnR5VGFibGUoKS5zZXQodm0s
IHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+dGFrZVByb3BlcnR5VGFibGVPckNsb25lSWZQaW5uZWQo
dm0sIHRyYW5zaXRpb24pKTsKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+
bV9vZmZzZXQ7CiAgICAgY2hlY2tPZmZzZXQodHJhbnNpdGlvbi0+bV9vZmZzZXQsIHRyYW5zaXRp
b24tPmlubGluZUNhcGFjaXR5KCkpOwpAQCAtNzY5LDE2ICs3ODEsMjIgQEAgdm9pZCBTdHJ1Y3R1
cmU6OmFsbG9jYXRlUmFyZURhdGEoVk0mIHZtKQogewogICAgIEFTU0VSVCghdHlwZUluZm8oKS5z
dHJ1Y3R1cmVIYXNSYXJlRGF0YSgpKTsKICAgICBTdHJ1Y3R1cmVSYXJlRGF0YSogcmFyZURhdGEg
PSBTdHJ1Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlKHZtLCBwcmV2aW91cygpKTsKLSAgICBtX3R5cGVJ
bmZvID0gVHlwZUluZm8odHlwZUluZm8oKS50eXBlKCksIHR5cGVJbmZvKCkuZmxhZ3MoKSB8IFN0
cnVjdHVyZUhhc1JhcmVEYXRhKTsKKyAgICBUeXBlSW5mbyBvbGRUeXBlSW5mbyA9IHR5cGVJbmZv
KCk7CisgICAgVHlwZUluZm8gbmV3VHlwZUluZm8gPSBUeXBlSW5mbyhvbGRUeXBlSW5mby50eXBl
KCksIG9sZFR5cGVJbmZvLmZsYWdzKCkgfCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7CisgICAgbV9v
dXRPZkxpbmVUeXBlRmxhZ3MgPSBuZXdUeXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKTsKICAg
ICBtX3ByZXZpb3VzT3JSYXJlRGF0YS5zZXQodm0sIHRoaXMsIHJhcmVEYXRhKTsKKyAgICBBU1NF
UlQodHlwZUluZm8oKS5zdHJ1Y3R1cmVIYXNSYXJlRGF0YSgpKTsKIH0KIAogdm9pZCBTdHJ1Y3R1
cmU6OmNsb25lUmFyZURhdGFGcm9tKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiBvdGhlcikKIHsK
ICAgICBBU1NFUlQob3RoZXItPnR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSk7CiAg
ICAgU3RydWN0dXJlUmFyZURhdGEqIG5ld1JhcmVEYXRhID0gU3RydWN0dXJlUmFyZURhdGE6OmNs
b25lKHZtLCBvdGhlci0+cmFyZURhdGEoKSk7Ci0gICAgbV90eXBlSW5mbyA9IFR5cGVJbmZvKHR5
cGVJbmZvKCkudHlwZSgpLCB0eXBlSW5mbygpLmZsYWdzKCkgfCBTdHJ1Y3R1cmVIYXNSYXJlRGF0
YSk7CisgICAgVHlwZUluZm8gb2xkVHlwZUluZm8gPSB0eXBlSW5mbygpOworICAgIFR5cGVJbmZv
IG5ld1R5cGVJbmZvID0gVHlwZUluZm8ob2xkVHlwZUluZm8udHlwZSgpLCBvbGRUeXBlSW5mby5m
bGFncygpIHwgU3RydWN0dXJlSGFzUmFyZURhdGEpOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdz
ID0gbmV3VHlwZUluZm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAgICAgbV9wcmV2aW91c09yUmFy
ZURhdGEuc2V0KHZtLCB0aGlzLCBuZXdSYXJlRGF0YSk7CisgICAgQVNTRVJUKHR5cGVJbmZvKCku
c3RydWN0dXJlSGFzUmFyZURhdGEoKSk7CiB9CiAKICNpZiBEVU1QX1BST1BFUlRZTUFQX1NUQVRT
CkBAIC0xMDE5LDcgKzEwMzcsNyBAQCBib29sIFN0cnVjdHVyZTo6cHJvdG90eXBlQ2hhaW5NYXlJ
bnRlcmNlCiAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBjdXJyZW50ID0gcHJvdG90eXBlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgY3VycmVudCA9IHByb3RvdHlwZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAg
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0LmgiCiAjaW5jbHVkZSAiUHJvdGVjdC5oIgogI2lu
Y2x1ZGUgIlB1dFByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEQmxvYi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlLmgiCiAjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgpAQCAtNzksNiArODAsOCBAQCBw
dWJsaWM6CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0lu
Zm8qLCBJbmRleGluZ1R5cGUgPSBOb25BcnJheSwgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkgPSAw
KTsKIAorICAgIH5TdHJ1Y3R1cmUoKTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIHsKQEAgLTk2LDYgKzk5LDEwIEBAIHByb3RlY3RlZDoKICAgICB9
CiAKIHB1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5z
dHJ1Y3R1cmVJRCgpOyB9CisgICAgaW50MzJfdCBvYmplY3RJbml0aWFsaXphdGlvbkJsb2IoKSBj
b25zdCB7IHJldHVybiBtX2Jsb2IuYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCk7IH0KKyAgICBp
bnQ2NF90IGlkQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5ibG9iKCk7IH0KKwogICAgIHN0
YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgU3RydWN0dXJlKiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgUHJv
cGVydHlPZmZzZXQmLCBQdXRQcm9wZXJ0eVNsb3Q6OkNvbnRleHQgPSBQdXRQcm9wZXJ0eVNsb3Q6
OlVua25vd25Db250ZXh0KTsKQEAgLTE0NCwxMSArMTUxLDExIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICAvLyBUeXBlIGFjY2Vzc29ycy4KLSAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8oKSBj
b25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpKTsgcmV0dXJu
IG1fdHlwZUluZm87IH0KKyAgICBUeXBlSW5mbyB0eXBlSW5mbygpIGNvbnN0IHsgQVNTRVJUKHN0
cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpOyByZXR1cm4gbV9ibG9iLnR5cGVJbmZv
KG1fb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQogICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiB0eXBlSW5mbygpLmlzT2JqZWN0KCk7IH0KIAotICAgIEluZGV4aW5nVHlwZSBpbmRleGlu
Z1R5cGUoKSBjb25zdCB7IHJldHVybiBtX2luZGV4aW5nVHlwZSAmIEFsbEFycmF5VHlwZXM7IH0K
LSAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXhpbmdUeXBlOyB9CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmxvYi5pbmRleGluZ1R5cGUoKSAmIEFsbEFycmF5VHlwZXM7IH0K
KyAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvYi5pbmRleGluZ1R5cGUoKTsgfQogICAgICAgICAKICAgICBib29sIG1heUlu
dGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpIGNvbnN0CiAgICAgewpAQCAtMzEwLDYgKzMxNywxMSBA
QCBwdWJsaWM6CiAKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fY2xhc3NJbmZvOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IHN0cnVjdHVyZUlET2Zm
c2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBt
X2Jsb2IpICsgU3RydWN0dXJlSURCbG9iOjpzdHJ1Y3R1cmVJRE9mZnNldCgpOworICAgIH0KKwog
ICAgIHN0YXRpYyBwdHJkaWZmX3QgcHJvdG90eXBlT2Zmc2V0KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3Byb3RvdHlwZSk7CkBAIC0zMjAsMTYg
KzMzMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1
cmUsIG1fZ2xvYmFsT2JqZWN0KTsKICAgICB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IHR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihT
dHJ1Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlwZUluZm86OmZsYWdzT2Zmc2V0KCk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb1R5cGVPZmZzZXQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmUsIG1fdHlwZUluZm8pICsgVHlwZUlu
Zm86OnR5cGVPZmZzZXQoKTsKLSAgICB9Ci0gICAgICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qg
Y2xhc3NJbmZvT2Zmc2V0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
U3RydWN0dXJlLCBtX2NsYXNzSW5mbyk7CkBAIC0zMzcsNyArMzM5LDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IGluZGV4aW5nVHlwZU9mZnNldCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9pbmRleGluZ1R5cGUp
OworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0
cnVjdHVyZUlEQmxvYjo6aW5kZXhpbmdUeXBlT2Zmc2V0KCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJik7CkBAIC00NzgsNyArNDgwLDEyIEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFRyYW5zaXRpb25MZW5ndGhGb3JOb25F
dmFsUHV0QnlJZCA9IDUxMjsKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhTcGVjaWZp
Y0Z1bmN0aW9uVGhyYXNoQ291bnQgPSAzOwotICAgICAgICAKKyAgICAKKyAgICAvLyBUaGVzZSBu
ZWVkIHRvIGJlIHByb3Blcmx5IGFsaWduZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgJ1N0cnVj
dHVyZScKKyAgICAvLyBwYXJ0IG9mIHRoZSBvYmplY3QuCisgICAgU3RydWN0dXJlSURCbG9iIG1f
YmxvYjsKKyAgICBUeXBlSW5mbzo6T3V0T2ZMaW5lVHlwZUZsYWdzIG1fb3V0T2ZMaW5lVHlwZUZs
YWdzOworCiAgICAgV3JpdGVCYXJyaWVyPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsK
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm90b3R5cGU7CiAgICAgbXV0YWJsZSBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlQ2hhaW4+IG1fY2FjaGVkUHJvdG90eXBlQ2hhaW47CkBAIC01MDIs
OCArNTA5LDYgQEAgcHJpdmF0ZToKICAgICAvLyBtX29mZnNldCBkb2VzIG5vdCBhY2NvdW50IGZv
ciBhbm9ueW1vdXMgc2xvdHMKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKIAotICAgIFR5
cGVJbmZvIG1fdHlwZUluZm87Ci0gICAgSW5kZXhpbmdUeXBlIG1faW5kZXhpbmdUeXBlOwogICAg
IHVpbnQ4X3QgbV9pbmxpbmVDYXBhY2l0eTsKICAgICAKICAgICBDb25jdXJyZW50SklUTG9jayBt
X2xvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgJKHJldmlzaW9uIDE2NDcyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsg
cmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkgeyByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW4pLCBpbmZvKCkpOyB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgREVDTEFSRV9JTkZP
OwogCkBAIC02NCw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U3RydWN0dXJlKiBoZWFkKQogICAgICAgICB7CiAgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
REJsb2IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVJREJsb2IuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUlEQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFN0cnVjdHVyZUlEQmxvYl9oCisjZGVmaW5lIFN0cnVjdHVyZUlE
QmxvYl9oCisKKyNpbmNsdWRlICJJbmRleGluZ1R5cGUuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZv
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgU3RydWN0dXJlSURCbG9iIHsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworcHVibGljOgorICAgIFN0cnVjdHVyZUlEQmxvYigpCisgICAgeworICAgICAgICB1
LmRvdWJsZVdvcmQgPSAweGJiYWRiZWVmOworICAgIH0KKworICAgIFN0cnVjdHVyZUlEQmxvYihT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSwgY29uc3Qg
VHlwZUluZm8mIHR5cGVJbmZvKQorICAgIHsKKyAgICAgICAgdS5maWVsZHMuc3RydWN0dXJlSUQg
PSBzdHJ1Y3R1cmVJRDsKKyAgICAgICAgdS5maWVsZHMuaW5kZXhpbmdUeXBlID0gaW5kZXhpbmdU
eXBlOworICAgICAgICB1LmZpZWxkcy50eXBlID0gdHlwZUluZm8udHlwZSgpOworICAgICAgICB1
LmZpZWxkcy5pbmxpbmVUeXBlRmxhZ3MgPSB0eXBlSW5mby5pbmxpbmVUeXBlRmxhZ3MoKTsKKyAg
ICAgICAgdS5maWVsZHMuZGVmYXVsdEdDRGF0YSA9IDA7CisgICAgfQorCisgICAgdm9pZCBvcGVy
YXRvcj0oY29uc3QgU3RydWN0dXJlSURCbG9iJiBvdGhlcikgeyB1LmRvdWJsZVdvcmQgPSBvdGhl
ci51LmRvdWJsZVdvcmQ7IH0KKyAgICAKKyAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCgpIGNv
bnN0IHsgcmV0dXJuIHUuZmllbGRzLnN0cnVjdHVyZUlEOyB9CisgICAgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHUuZmllbGRzLmluZGV4aW5nVHlwZTsgfQorICAg
IHZvaWQgc2V0SW5kZXhpbmdUeXBlKEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpIHsgdS5maWVs
ZHMuaW5kZXhpbmdUeXBlID0gaW5kZXhpbmdUeXBlOyB9CisgICAgSlNUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiB1LmZpZWxkcy50eXBlOyB9CisgICAgVHlwZUluZm86OklubGluZVR5cGVGbGFn
cyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5pbmxpbmVUeXBlRmxh
Z3M7IH0KKyAgICAKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhUeXBlSW5mbzo6T3V0T2ZMaW5lVHlw
ZUZsYWdzIG91dE9mTGluZVR5cGVGbGFncykgY29uc3QgeyByZXR1cm4gVHlwZUluZm8odHlwZSgp
LCBpbmxpbmVUeXBlRmxhZ3MoKSwgb3V0T2ZMaW5lVHlwZUZsYWdzKTsgfQorICAgIAorICAgIGlu
dDMyX3QgYmxvYkV4Y2x1ZGluZ1N0cnVjdHVyZUlEKCkgY29uc3QgeyByZXR1cm4gdS53b3Jkcy53
b3JkMjsgfQorICAgIGludDY0X3QgYmxvYigpIGNvbnN0IHsgcmV0dXJuIHUuZG91YmxlV29yZDsg
fQorICAgIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlSURPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVJREJsb2IsIHUuZmllbGRz
LnN0cnVjdHVyZUlEKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlmZl90IGluZGV4aW5nVHlw
ZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZUlEQmxvYiwgdS5maWVsZHMuaW5kZXhpbmdUeXBlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0
dXJlSUQ7CisgICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlOworICAgICAgICAg
ICAgSlNUeXBlIHR5cGU7CisgICAgICAgICAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIGlu
bGluZVR5cGVGbGFnczsKKyAgICAgICAgICAgIHVpbnQ4X3QgZGVmYXVsdEdDRGF0YTsKKyAgICAg
ICAgfSBmaWVsZHM7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQzMl90IHdvcmQx
OworICAgICAgICAgICAgaW50MzJfdCB3b3JkMjsKKyAgICAgICAgfSB3b3JkczsKKyAgICAgICAg
aW50NjRfdCBkb3VibGVXb3JkOworICAgIH0gdTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gU3RydWN0dXJlSURCbG9iX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+
CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCisg
ICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgwKQorICAgICwgbV90YWJsZShuZXcgU3RydWN0dXJlT3JP
ZmZzZXRbc19pbml0aWFsU2l6ZV0pCisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fY2FwYWNpdHko
c19pbml0aWFsU2l6ZSkKK3sKKyAgICAvLyBXZSBwcmUtYWxsb2NhdGUgdGhlIGZpcnN0IG9mZnNl
dCBzbyB0aGF0IHRoZSBudWxsIFN0cnVjdHVyZQorICAgIC8vIGNhbiBzdGlsbCBiZSByZXByZXNl
bnRlZCBhcyB0aGUgU3RydWN0dXJlSUQgJzAnLgorICAgIGFsbG9jYXRlSUQoMCk7Cit9CisKK1N0
cnVjdHVyZUlEVGFibGU6On5TdHJ1Y3R1cmVJRFRhYmxlKCkKK3sKKyAgICBkZWxldGUgW10gbV90
YWJsZTsKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6ZV90IG5ld0NhcGFj
aXR5KQoreworICAgIC8vIENyZWF0ZSB0aGUgbmV3IHRhYmxlLgorICAgIFN0cnVjdHVyZU9yT2Zm
c2V0KiBuZXdUYWJsZSA9IG5ldyBTdHJ1Y3R1cmVPck9mZnNldFtuZXdDYXBhY2l0eV07CisKKyAg
ICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRhYmxlIHRvIHRoZSBuZXcgdGFibGUu
CisgICAgbWVtY3B5KG5ld1RhYmxlLCBtX3RhYmxlLCBtX2NhcGFjaXR5ICogc2l6ZW9mKFN0cnVj
dHVyZU9yT2Zmc2V0KSk7CisKKyAgICAvLyBTdG9yZSBmZW5jZSB0byBtYWtlIHN1cmUgd2UndmUg
Y29waWVkIGV2ZXJ5dGhpbmcgYmVmb3JlIGRvaW5nIHRoZSBzd2FwLgorICAgIFdURjo6c3RvcmVT
dG9yZUZlbmNlKCk7CisKKyAgICAvLyBTd2FwIHRoZSBvbGQgYW5kIG5ldyB0YWJsZXMuCisgICAg
U3RydWN0dXJlT3JPZmZzZXQqIG9sZFRhYmxlID0gbV90YWJsZTsKKyAgICBtX3RhYmxlID0gbmV3
VGFibGU7CisKKyAgICAvLyBQdXQgdGhlIG9sZCB0YWJsZSAobm93IGxhYmVsZWQgYXMgbmV3KSBp
bnRvIHRoZSBsaXN0IG9mIG9sZCB0YWJsZXMuCisgICAgbV9vbGRUYWJsZXMuYXBwZW5kKG9sZFRh
YmxlKTsKKworICAgIC8vIFVwZGF0ZSB0aGUgY2FwYWNpdHkuCisgICAgbV9jYXBhY2l0eSA9IG5l
d0NhcGFjaXR5OworfQorCit2b2lkIFN0cnVjdHVyZUlEVGFibGU6OmZsdXNoT2xkVGFibGVzKCkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9vbGRUYWJsZXMuc2l6ZSgpOyArK2kp
CisgICAgICAgIGRlbGV0ZSBbXSBtX29sZFRhYmxlc1tpXTsKKyAgICBtX29sZFRhYmxlcy5jbGVh
cigpOworfQorCitTdHJ1Y3R1cmVJRCBTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKCFtX2ZpcnN0
RnJlZU9mZnNldCkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NhcGFjaXR5IDw9IFVJTlRf
TUFYKTsKKyAgICAgICAgaWYgKG1fc2l6ZSA9PSBtX2NhcGFjaXR5KQorICAgICAgICAgICAgcmVz
aXplKG1fY2FwYWNpdHkgKiAyKTsKKyAgICAgICAgQVNTRVJUKG1fc2l6ZSA8IG1fY2FwYWNpdHkp
OworCisgICAgICAgIFN0cnVjdHVyZU9yT2Zmc2V0IG5ld0VudHJ5OworICAgICAgICBuZXdFbnRy
eS5zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisKKyAgICAgICAgaWYgKG1fc2l6ZSA9PSBzX3VudXNl
ZElEKSB7CisgICAgICAgICAgICBtX3NpemUrKzsKKyAgICAgICAgICAgIHJldHVybiBhbGxvY2F0
ZUlEKHN0cnVjdHVyZSk7CisgICAgICAgIH0KKworICAgICAgICBTdHJ1Y3R1cmVJRCByZXN1bHQg
PSBtX3NpemU7CisgICAgICAgIG1fdGFibGVbcmVzdWx0XSA9IG5ld0VudHJ5OworICAgICAgICBt
X3NpemUrKzsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBBU1NFUlQobV9m
aXJzdEZyZWVPZmZzZXQgIT0gc191bnVzZWRJRCk7CisKKyAgICBTdHJ1Y3R1cmVJRCByZXN1bHQg
PSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IG1fdGFibGVbbV9m
aXJzdEZyZWVPZmZzZXRdLm9mZnNldDsKKyAgICBtX3RhYmxlW3Jlc3VsdF0uc3RydWN0dXJlID0g
c3RydWN0dXJlOworICAgIHJldHVybiByZXN1bHQ7CisjZWxzZQorICAgIHJldHVybiBzdHJ1Y3R1
cmU7CisjZW5kaWYKK30KKwordm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpkZWFsbG9jYXRlSUQoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgQVNTRVJUKHN0cnVjdHVyZUlEICE9IHNfdW51c2VkSUQpOworICAgIFJF
TEVBU0VfQVNTRVJUKG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUp
OworICAgIG1fdGFibGVbc3RydWN0dXJlSURdLm9mZnNldCA9IG1fZmlyc3RGcmVlT2Zmc2V0Owor
ICAgIG1fZmlyc3RGcmVlT2Zmc2V0ID0gc3RydWN0dXJlSUQ7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzdHJ1Y3R1cmUpOworICAgIFVOVVNFRF9QQVJBTShzdHJ1Y3R1cmVJRCk7CisjZW5kaWYK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cnVjdHVyZUlEVGFibGVfaAor
I2RlZmluZSBTdHJ1Y3R1cmVJRFRhYmxlX2gKKworI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJ1
Y3R1cmU7CisKKyNpZiBVU0UoSlNWQUxVRTY0KQordHlwZWRlZiB1aW50MzJfdCBTdHJ1Y3R1cmVJ
RDsKKyNlbHNlCit0eXBlZGVmIFN0cnVjdHVyZSogU3RydWN0dXJlSUQ7CisjZW5kaWYKKworY2xh
c3MgU3RydWN0dXJlSURUYWJsZSB7CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1cmVJRFRhYmxlKCk7CisgICAgflN0cnVjdHVyZUlE
VGFibGUoKTsKKworICAgIHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZtX3RhYmxlKTsgfQorCisgICAgU3RydWN0dXJlKiBnZXQoU3RydWN0dXJlSUQpOwor
ICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsKKyAgICBTdHJ1
Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOworCisgICAgdm9pZCBmbHVzaE9sZFRhYmxl
cygpOworCitwcml2YXRlOgorICAgIHZvaWQgcmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSk7Cisg
ICAgCisgICAgdW5pb24gU3RydWN0dXJlT3JPZmZzZXQgeworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZTsKKyAgICAgICAgU3RydWN0dXJlSUQgb2Zmc2V0OworICAgIH07CisKKyAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHNfaW5pdGlhbFNpemUgPSAyNTY7CisKKyAgICBWZWN0b3I8U3RydWN0
dXJlT3JPZmZzZXQqPiBtX29sZFRhYmxlczsKKworICAgIHVpbnQzMl90IG1fZmlyc3RGcmVlT2Zm
c2V0OworICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBtX3RhYmxlOworCisgICAgc2l6ZV90IG1fc2l6
ZTsKKyAgICBzaXplX3QgbV9jYXBhY2l0eTsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgc3Rh
dGljIGNvbnN0IFN0cnVjdHVyZUlEIHNfdW51c2VkSUQgPSB1bnVzZWRQb2ludGVyOworI2VuZGlm
Cit9OworCitpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQoU3RydWN0dXJl
SUQgc3RydWN0dXJlSUQpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXR1cm4gbV90YWJs
ZVtzdHJ1Y3R1cmVJRF0uc3RydWN0dXJlOworI2Vsc2UKKyAgICByZXR1cm4gc3RydWN0dXJlSUQ7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBTdHJ1Y3R1cmVJ
RFRhYmxlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAkocmV2aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw5IEBAIHB1YmxpYzoK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CisKIHByaXZhdGU6CiAgICAgY2xhc3MgV2F0Y2hwb2ludENsZWFudXAg
OiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciB7CiAgICAgcHVibGljOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAkocmV2
aXNpb24gMTY0NzI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJh
eVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzNCArMzIsMzcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlw
ZSB0eXBlKQorSlNUeXBlIHR5cGVGb3JUeXBlZEFycmF5VHlwZShUeXBlZEFycmF5VHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgTm90VHlwZWRBcnJheToKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiBVbnNwZWNpZmllZFR5cGU7CiAgICAgY2FzZSBUeXBlSW50ODoKLSAgICAgICAg
cmV0dXJuIEpTSW50OEFycmF5OjppbmZvKCk7CisgICAgICAgIHJldHVybiBJbnQ4QXJyYXlUeXBl
OwogICAgIGNhc2UgVHlwZVVpbnQ4OgotICAgICAgICByZXR1cm4gSlNVaW50OEFycmF5OjppbmZv
KCk7CisgICAgICAgIHJldHVybiBVaW50OEFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50OENs
YW1wZWQ6Ci0gICAgICAgIHJldHVybiBKU1VpbnQ4Q2xhbXBlZEFycmF5OjppbmZvKCk7CisgICAg
ICAgIHJldHVybiBVaW50OENsYW1wZWRBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlSW50MTY6Ci0g
ICAgICAgIHJldHVybiBKU0ludDE2QXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIEludDE2
QXJyYXlUeXBlOwogICAgIGNhc2UgVHlwZVVpbnQxNjoKLSAgICAgICAgcmV0dXJuIEpTVWludDE2
QXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIFVpbnQxNkFycmF5VHlwZTsKICAgICBjYXNl
IFR5cGVJbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTSW50MzJBcnJheTo6aW5mbygpOworICAgICAg
ICByZXR1cm4gSW50MzJBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlVWludDMyOgotICAgICAgICBy
ZXR1cm4gSlNVaW50MzJBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWludDMyQXJyYXlU
eXBlOwogICAgIGNhc2UgVHlwZUZsb2F0MzI6Ci0gICAgICAgIHJldHVybiBKU0Zsb2F0MzJBcnJh
eTo6aW5mbygpOworICAgICAgICByZXR1cm4gRmxvYXQzMkFycmF5VHlwZTsKICAgICBjYXNlIFR5
cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gSlNGbG9hdDY0QXJyYXk6OmluZm8oKTsKKyAgICAg
ICAgcmV0dXJuIEZsb2F0NjRBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6Ci0gICAg
ICAgIHJldHVybiBKU0RhdGFWaWV3OjppbmZvKCk7CisgICAgICAgIHJldHVybiBEYXRhVmlld1R5
cGU7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWRUeXBlOwogICAgIH0KLSAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwogfQogCiBjb25zdCBDbGFzc0luZm8q
IGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSB0eXBlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5oCShyZXZp
c2lvbiAxNjQ3MjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFR5cGVkQXJy
YXlUeXBlX2gKICNkZWZpbmUgVHlwZWRBcnJheVR5cGVfaAogCisjaW5jbHVkZSAiSlNUeXBlLmgi
CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAw
LDggKzEwMSw4IEBAIGlubGluZSBzaXplX3QgZWxlbWVudFNpemUoVHlwZWRBcnJheVR5cGUKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBsb2dFbGVtZW50U2l6ZSh0eXBlKTsK
IH0KIAotY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Gb3JUeXBlKFR5cGVkQXJyYXlUeXBlKTsK
IGNvbnN0IENsYXNzSW5mbyogY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKFR5cGVkQXJyYXlU
eXBlKTsKK0pTVHlwZSB0eXBlRm9yVHlwZWRBcnJheVR5cGUoVHlwZWRBcnJheVR5cGUpOwogCiBp
bmxpbmUgYm9vbCBpc0ludChUeXBlZEFycmF5VHlwZSB0eXBlKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCShyZXZpc2lvbiAxNjQ3MjUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1v
cnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgogICAgIFdlYWtNYXBEYXRh
KFZNJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225288</attachid>
            <date>2014-02-26 13:26:27 -0800</date>
            <delta_ts>2014-02-26 17:55:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123195-20140226132621.patch</filename>
            <type>text/plain</type>
            <size>465782</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2MCBA
QAorMjAxNC0wMi0yNSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgor
CisgICAgICAgIE1ha2UgSlNDZWxscyBoYXZlIDMyLWJpdCBTdHJ1Y3R1cmUgcG9pbnRlcnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzE5NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBKU0NlbGxzIHN1Y2ggdGhhdCB0aGV5IG5vIGxvbmdlciBoYXZlIGEgZnVsbCA2NC1i
aXQgU3RydWN0dXJlCisgICAgICAgIHBvaW50ZXIgaW4gdGhlaXIgaGVhZGVyLiBJbnN0ZWFkIHRo
ZXkgbm93IGhhdmUgYSAzMi1iaXQgaW5kZXggaW50bworICAgICAgICBhIHBlci1WTSB0YWJsZSBv
ZiBTdHJ1Y3R1cmUgcG9pbnRlcnMuIDMyLWJpdCBwbGF0Zm9ybXMgc3RpbGwgdXNlIG5vcm1hbCBT
dHJ1Y3R1cmUKKyAgICAgICAgcG9pbnRlcnMuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgZnJlZXMg
dXAgYW4gYWRkaXRpb25hbCAzMiBiaXRzIG9mIGluZm9ybWF0aW9uIGluIG91ciBvYmplY3QgaGVh
ZGVycy4KKyAgICAgICAgV2UgdGhlbiB1c2UgdGhpcyBleHRyYSBzcGFjZSB0byBzdG9yZSB0aGUg
aW5kZXhpbmcgdHlwZSBvZiB0aGUgb2JqZWN0LCB0aGUgSlNUeXBlCisgICAgICAgIG9mIHRoZSBv
YmplY3QsIHNvbWUgdmFyaW91cyB0eXBlIGZsYWdzLCBhbmQgZ2FyYmFnZSBjb2xsZWN0aW9uIGRh
dGEgKGUuZy4gbWFyayBiaXQpLgorICAgICAgICBCZWNhdXNlIHRoaXMgaW5saW5lIHR5cGUgaW5m
b3JtYXRpb24gaXMgbm93IGZhc3RlciB0byByZWFkLCBpdCBwYXlzIGZvciB0aGUgc2xvd2Rvd24g
CisgICAgICAgIGluY3VycmVkIGJ5IGhhdmluZyB0byBwZXJmb3JtIGFuIGV4dHJhIGluZGlyZWN0
aW9uIHRocm91Z2ggdGhlIFN0cnVjdHVyZUlEVGFibGUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHRocmVhZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgVk0gdGhyb3VnaCBtb3JlIG9m
IHRoZSBDKysgcnVudGltZQorICAgICAgICB0byBvZmZzZXQgdGhlIGNvc3Qgb2YgaGF2aW5nIHRv
IGxvb2sgdXAgdGhlIFZNIHRvIGdldCB0aGUgYWN0dWFsIFN0cnVjdHVyZSBwb2ludGVyLgorCisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IHNldEV4Y2Vw
dGlvbjpdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IHdyYXBwZXJGb3JPYmpDT2JqZWN0Ol0pOgor
ICAgICAgICAoLVtKU0NvbnRleHQgd3JhcHBlckZvckpTT2JqZWN0Ol0pOgorICAgICAgICAqIEFQ
SS9KU0NvbnRleHRSZWYuY3BwOgorICAgICAgICAoSlNDb250ZXh0R3JvdXBSZWxlYXNlKToKKyAg
ICAgICAgKEpTR2xvYmFsQ29udGV4dFJlbGVhc2UpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJl
Zi5jcHA6CisgICAgICAgIChKU09iamVjdElzRnVuY3Rpb24pOgorICAgICAgICAoSlNPYmplY3RD
b3B5UHJvcGVydHlOYW1lcyk6CisgICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChj
b250YWluZXJWYWx1ZVRvT2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgor
ICAgICAgICAodHJ5VW53cmFwT2JqY09iamVjdCk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5jaDMy
V2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBhdGNoYWJsZUJyYW5j
aDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJs
ZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpzdG9yZTgpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpicmFuY2gzMldpdGhQYXRjaCk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJN
djc6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6YnJhbmNoMzJXaXRoUGF0
Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6Y2FuSnVtcFJlcGxhY2VQYXRj
aGFibGVCcmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
OjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Njo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaCk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdG9yZTMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om1vdmVXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoMzJXaXRoUGF0Y2gpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpzdGFy
dE9mQnJhbmNoMzJXaXRoUGF0Y2hPblJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToKKyAgICAgICAgKiBhc3NlbWJsZXIvUmVw
YXRjaEJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJlc3MpOgorICAgICAgICAoSlNDOjpSZXBhdGNoQnVm
ZmVyOjpyZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cik6CisgICAgICAgIChKU0M6Olg4NkFzc2Vt
Ymxlcjo6cmV2ZXJ0SnVtcFRvX21vdmxfaTMycik6CisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQ
cm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpjb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OkFycmF5UHJvZmlsZSk6CisgICAgICAgIChKU0M6OkFycmF5UHJv
ZmlsZTo6YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkFycmF5
UHJvZmlsZTo6b2JzZXJ2ZVN0cnVjdHVyZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGVhcCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hTdHJ1Y3R1cmVQdHIpOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdCk6CisgICAgICAgICogZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6
OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6OmFkanVzdEFuZEp1bXBUb1RhcmdldCk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OnB1dEJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVj
a0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0
YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9TdHJpbmdPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVGaW5hbE9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0NlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmpl
Y3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25Q
ZWVwaG9sZUNvbXBhcmVOdWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RU
b09iamVjdE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3Qu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVBcnJheWlmeVRvU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVUb1N0cmluZyk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVNdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU11bHRpUHV0QnlPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVUcnV0aHlPYmplY3QpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjphbGxvY2F0ZUNlbGwpOgorICAgICAgICAo
SlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6aXNTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjppc0FycmF5VHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omhhc0NsYXNzSW5mbyk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzVHlw
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xM
Vk06OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm9uTnVsbE9iamVjdCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmxvYWRNYXJrQnl0ZSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmxvYWRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjp3ZWFrU3RydWN0dXJlKToKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjb21waWxlU3R1Yik6CisgICAgICAgICog
ZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6c3RvcmU4KToKKyAg
ICAgICAgKiBoZWFwL0dDQXNzZXJ0aW9ucy5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMpOgorICAgICAg
ICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6d3JpdGVCYXJyaWVy
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6c3RydWN0dXJl
SURUYWJsZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9ySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6aW50ZXJuYWxBcHBlbmQpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxw
ZXJzOjpicmFuY2hJZkNlbGxOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBl
cnM6OmdlbmVyaWNXcml0ZUJhcnJpZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmVtaXRMb2FkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0
U3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8pOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbCk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDbG9zdXJlQ2FsbCk6CisgICAgICAg
ICogaml0L0pJVENhbGwzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRf
b2JqZWN0X29yX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGpp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEJ5SWRHZW5l
cmF0b3I6OmdlbmVyYXRlRmFzdFBhdGhDaGVja3MpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVD
YWNoZUdlbmVyYXRvci5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdExvYWRDaGFyYWN0ZXJTdHJpbmcpOgorICAgICAgICAoSlNDOjpKSVQ6OmNo
ZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmQ2VsbE5vdE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFsbG9jYXRlSlNPYmplY3QpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6YnJhbmNoU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6YnJhbmNo
U3RydWN0dXJlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaW5zdGFuY2VvZik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfc3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3RvX3RoaXMpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2hlY2tfaGFzX2luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lu
c3RhbmNlb2YpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF90b19wcmltaXRpdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251
bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3Bf
bmVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RFcSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
cV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9wbmFtZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90b190aGlzKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpzdHJpbmdH
ZXRCeVZhbFN0dWJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfcG5hbWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9nZXRfZnJvbV9zY29wZSk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Njb3BlKToKKyAgICAgICAgKEpTQzo6SklUOjpj
aGVja01hcmtXb3JkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6SklUOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRGbG9hdFR5cGVkQXJyYXlHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEZsb2F0VHlwZWRB
cnJheVB1dEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRTbG93X29wX2dldF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3BuYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlwZSk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpyZXBhdGNoQnlJZFNlbGZBY2Nl
c3MpOgorICAgICAgICAoSlNDOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2spOgorICAgICAg
ICAoSlNDOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVByb3RvQ2hh
aW5BY2Nlc3NTdHViKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAg
KEpTQzo6dHJ5QnVpbGRHZXRCeUlETGlzdCk6CisgICAgICAgIChKU0M6OndyaXRlQmFycmllcik6
CisgICAgICAgIChKU0M6OmVtaXRQdXRSZXBsYWNlU3R1Yik6CisgICAgICAgIChKU0M6OmVtaXRQ
dXRUcmFuc2l0aW9uU3R1Yik6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkUHV0QnlJZExpc3QpOgor
ICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlNDOjpsaW5rQ2xvc3VyZUNh
bGwpOgorICAgICAgICAoSlNDOjpyZXNldEdldEJ5SUQpOgorICAgICAgICAoSlNDOjpyZXNldFB1
dEJ5SUQpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6CisgICAgICAgIChK
U0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OmxvYWRKU1N0cmluZ0FyZ3VtZW50KToKKyAgICAgICAg
KEpTQzo6U3BlY2lhbGl6ZWRUaHVua0pJVDo6bG9hZEFyZ3VtZW50V2l0aFNwZWNpZmljQ2xhc3Mp
OgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0
dWFsRm9yVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjphcnJheUl0ZXJhdG9yTmV4dFRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvVW51c2VkUG9pbnRlci5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Y3JlYXRlU3RyaWN0TW9kZUNhbGxlcklmTmVjZXNzYXJ5KToKKyAgICAgICAg
KEpTQzo6QXJndW1lbnRzOjpjcmVhdGVTdHJpY3RNb2RlQ2FsbGVlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c2hpZnQpOgorICAgICAgICAoSlNDOjp1bnNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5j
UG9wKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAgICAgKEpT
Qzo6cGVyZm9ybVNsb3dTb3J0KToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTb3J0KToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGxpY2UpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1VuU2hpZnQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6aXNGdW5jdGlvbkV4ZWN1
dGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6Y2xlYXJDb2RlVmlydHVhbCk6
CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnVubGlua0NhbGxzKToKKyAgICAgICAg
KiBydW50aW1lL0dldHRlclNldHRlci5jcHA6CisgICAgICAgIChKU0M6OmNhbGxHZXR0ZXIpOgor
ICAgICAgICAoSlNDOjpjYWxsU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAgICAgIChK
U0M6OkpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6SlNBcnJh
eTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6cG9wKToKKyAgICAgICAgKEpT
Qzo6SlNBcnJheTo6cHVzaCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnRXaXRo
QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c2hpZnRDb3VudFdpdGhBbnlJ
bmRleGluZ1R5cGUpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJy
YXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFueUlu
ZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKToK
KyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydE51bWVyaWMpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6c29ydCk6
CisgICAgICAgIChKU0M6OkpTQXJyYXk6OnNvcnRWZWN0b3IpOgorICAgICAgICAoSlNDOjpKU0Fy
cmF5OjpmaWxsQXJnTGlzdCk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmNvbXBhY3RGb3JTb3J0aW5nKToKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
VGhpcyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnB1dCk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjplcXVhbFNsb3dDYXNlSW5s
aW5lKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpwdXRCeUluZGV4KToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmNsZWFyU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjptYXJr
KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6OkpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpnY0RhdGFPZmZzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnR5cGUpOgorICAgICAgICAo
SlNDOjpKU0NlbGw6OmluZGV4aW5nVHlwZSk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6aXNTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpKU0NlbGw6OmlzR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjppc1Byb3h5KToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcik6
CisgICAgICAgIChKU0M6OkpTQ2VsbDo6c2V0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlND
ZWxsOjptZXRob2RUYWJsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OndyaXRlQmFycmllcik6Cisg
ICAgICAgICogcnVudGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmll
dzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTQ2VsbDo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBydW50
aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRPd25Ob25J
bmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpwdXQpOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNU
eXBlZEFycmF5Vmlldzo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0pTT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbGFibGVPYmplY3RTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvcHlCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
dmlzaXRCdXR0ZXJmbHkpOgorICAgICAgICAoSlNDOjpKU0ZpbmFsT2JqZWN0Ojp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5k
ZXhpbmdNb2RlV2hlbkFycmF5U3RvcmFnZUFscmVhZHlFeGlzdHMpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6Om5vdGlmeVByZXNlbmNlT2ZJbmRleGVkQWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpjcmVhdGVJbml0aWFsVW5kZWNpZGVkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmNyZWF0ZUluaXRpYWxJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjcmVhdGVJbml0
aWFsRG91YmxlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxDb250aWd1
b3VzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNyZWF0ZUFycmF5U3RvcmFnZSk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9JbnQzMik6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQ29udGlndW91cyk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojpjb25zdHJ1Y3RDb252ZXJ0ZWRBcnJheVN0b3JhZ2VXaXRob3V0Q29weWluZ0VsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3Rv
cmFnZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0RvdWJsZSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydEludDMyVG9BcnJheVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2VuZXJpY0NvbnZlcnREb3VibGVUb0NvbnRpZ3VvdXMpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJyYXlTdG9yYWdlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2UpOgorICAgICAg
ICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlSW50MzJTbG93KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmVuc3VyZURvdWJsZVNsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29u
dGlndW91c1Nsb3cpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdl
U2xvdyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNB
bmRFbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNl
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vz
c29yKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcmlt
aXRpdmVOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6aGFzSW5zdGFuY2UpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25O
b25JbmRleFByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2VhbCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpmcmVlemUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
cHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVpZnlTdGF0aWNG
dW5jdGlvbnNGb3JEZWxldGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhX
aXRob3V0QXR0cmlidXRlcyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRCeUluZGV4QmV5
b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEluZGV4
QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0OjpnZXROZXdWZWN0b3JMZW5ndGgpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Y291
bnRFbGVtZW50cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0
aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGhTbG93KToKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6Omdyb3dPdXRPZkxpbmVTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OnB1dERlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0
eSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpnZXRKU0Z1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldEFycmF5TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNPYmplY3Q6OmdldFZlY3Rvckxlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjpwdXRCeUluZGV4SW5saW5lKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNhbkdldElu
ZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRJbmRleFF1aWNrbHkpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6dHJ5R2V0SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OmdldERpcmVjdEluZGV4KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNh
blNldEluZGV4UXVpY2tseSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpjYW5TZXRJbmRleFF1
aWNrbHlGb3JQdXREaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0SW5kZXhRdWlj
a2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpoYXNTcGFyc2VNYXApOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
aW5TcGFyc2VJbmRleGluZ01vZGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0RGlyZWN0
KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdE9mZnNldCk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3pl
bik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpmbGF0dGVuRGljdGlvbmFyeU9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVJbnQzMik6CisgICAgICAgIChKU0M6OkpTT2Jq
ZWN0OjplbnN1cmVEb3VibGUpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZW5zdXJlQ29udGln
dW91cyk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpyYWdlRW5zdXJlQ29udGlndW91cyk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2UpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6YXJyYXlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFycmF5
U3RvcmFnZU9yTnVsbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjplbnN1cmVMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Y3VycmVudEluZGV4aW5nRGF0YSk6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpnZXRIb2x5SW5kZXhRdWlja2x5KToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmN1cnJlbnRSZWxldmFudExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0ds
b2JhbE9iamVjdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc1ZhcmlhYmxlT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzU3RhdGljU2NvcGVPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6aXNOYW1lU2NvcGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmlzRXJyb3JJ
bnN0YW5jZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZmFzdEdldE93blByb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpK
U09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0
U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0b3JhZ2VJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb3h5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6SlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAgIChK
U0M6OkpTUHJveHk6OnB1dCk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OnB1dEJ5SW5kZXgpOgor
ICAgICAgICAoSlNDOjpKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTUHJveHk6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6ZGVsZXRl
UHJvcGVydHlCeUluZGV4KToKKyAgICAgICAgKEpTQzo6SlNQcm94eTo6Z2V0UHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkpTUHJveHk6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6Om9iamVjdEF0
U2NvcGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6SlNT
dHJpbmc6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OmlzSlNTdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6
CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpUeXBlSW5mbyk6CisgICAgICAgIChKU0M6OlR5cGVJ
bmZvOjppc09iamVjdCk6CisgICAgICAgIChKU0M6OlR5cGVJbmZvOjpzdHJ1Y3R1cmVJc0ltbW9y
dGFsKToKKyAgICAgICAgKEpTQzo6VHlwZUluZm86Onplcm9lZEdDRGF0YU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlR5cGVJbmZvOjppbmxpbmVUeXBlRmxhZ3MpOgorICAgICAgICAqIHJ1bnRpbWUv
TWFwRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMpOgorICAgICAg
ICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcktleXMpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25z
dHJ1Y3RvckRlZmluZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJvcGVydGllcyk6
CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6Om9i
amVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JJ
c1NlYWxlZCk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0
UHJvdG9GdW5jRGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jRGVm
aW5lU2V0dGVyKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmlu
Z0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAqIHJ1
bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpub3JtYWxpemVQcm90b3R5cGVDaGFp
bkZvckNoYWluQWNjZXNzKToKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4p
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cC5oOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
ICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6flN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlkKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjppZEJsb2IpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6Om9iamVjdEluaXRp
YWxpemF0aW9uRmllbGRzKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9m
ZnNldCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJs
ZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6On5T
dHJ1Y3R1cmVJRFRhYmxlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6Zmx1c2hPbGRUYWJsZXMpOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjphbGxvY2F0ZUlEKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmJh
c2UpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpnZXQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZUZvclR5cGVkQXJyYXlUeXBlKToKKyAgICAgICAgKiBydW50
aW1lL1R5cGVkQXJyYXlUeXBlLmg6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwRGF0YS5oOgor
CiAyMDE0LTAyLTI2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAg
RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IGhhcyBhIGJhZCB0aW1lIHdpdGggdGhlIHNwcmVhZCBv
cGVyYXRvcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC00NzIsNiArNDcyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKKyAgICBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuY3BwCiAgICAgcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5jcHAKICAgICBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAogICAgIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMwLDYgKzEyMzAsOSBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlubGluZXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlUmFyZURhdGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVSYXJlRGF0YS5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250
ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0
Lm1tCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBAIC0gKEpTVmFsdWUgKill
dmFsdWF0ZVNjcmlwdDooTlNTdHJpbmcgKikKIAogLSAodm9pZClzZXRFeGNlcHRpb246KEpTVmFs
dWUgKil2YWx1ZQogeworICAgIEpTQzo6QVBJRW50cnlTaGltIGVudHJ5U2hpbSh0b0pTKG1fY29u
dGV4dCkpOwogICAgIGlmICh2YWx1ZSkKICAgICAgICAgbV9leGNlcHRpb24uc2V0KHRvSlMobV9j
b250ZXh0KS0+dm0oKSwgdG9KUyhKU1ZhbHVlVG9PYmplY3QobV9jb250ZXh0LCB2YWx1ZUludGVy
bmFsVmFsdWUodmFsdWUpLCAwKSkpOwogICAgIGVsc2UKQEAgLTI3MCwxNCArMjcxLDEzIEBAIC0g
KHZvaWQpZW5kQ2FsbGJhY2tXaXRoRGF0YTooQ2FsbGJhY2tEYXQKIAogLSAoSlNWYWx1ZSAqKXdy
YXBwZXJGb3JPYmpDT2JqZWN0OihpZClvYmplY3QKIHsKLSAgICAvLyBMb2NrIGFjY2VzcyB0byBt
X3dyYXBwZXJNYXAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMobV9jb250ZXh0KSk7
CisgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAg
cmV0dXJuIFttX3dyYXBwZXJNYXAganNXcmFwcGVyRm9yT2JqZWN0Om9iamVjdF07CiB9CiAKIC0g
KEpTVmFsdWUgKil3cmFwcGVyRm9ySlNPYmplY3Q6KEpTVmFsdWVSZWYpdmFsdWUKIHsKLSAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrKHRvSlMobV9jb250ZXh0KSk7CisgICAgSlNDOjpBUElFbnRy
eVNoaW0gZW50cnlTaGltKHRvSlMobV9jb250ZXh0KSk7CiAgICAgcmV0dXJuIFttX3dyYXBwZXJN
YXAgb2JqY1dyYXBwZXJGb3JKU1ZhbHVlUmVmOnZhbHVlXTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAkocmV2aXNpb24gMTY0NzM4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NywxNiArNjcsMTAgQEAgSlNDb250ZXh0R3JvdXBSZWYgSlNDb250ZXh0R3JvdXBSZXRh
aW4oSgogCiB2b2lkIEpTQ29udGV4dEdyb3VwUmVsZWFzZShKU0NvbnRleHRHcm91cFJlZiBncm91
cCkKIHsKLSAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRlbnRpZmllclRhYmxlOwogICAgIFZN
JiB2bSA9ICp0b0pTKGdyb3VwKTsKIAotICAgIHsKLSAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwotICAgICAgICBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHd0ZlRocmVhZERhdGEoKS5zZXRD
dXJyZW50SWRlbnRpZmllclRhYmxlKHZtLmlkZW50aWZpZXJUYWJsZSk7Ci0gICAgICAgIHZtLmRl
cmVmKCk7Ci0gICAgfQotCi0gICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVy
VGFibGUoc2F2ZWRJZGVudGlmaWVyVGFibGUpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0o
JnZtKTsKKyAgICB2bS5kZXJlZigpOwogfQogCiBzdGF0aWMgYm9vbCBpbnRlcm5hbFNjcmlwdFRp
bWVvdXRDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGNhbGxiYWNrUHRyLCB2b2lkKiBj
YWxsYmFja0RhdGEpCkBAIC0xNjQsNyArMTU4LDcgQEAgdm9pZCBKU0dsb2JhbENvbnRleHRSZWxl
YXNlKEpTR2xvYmFsQ29udAogICAgIElkZW50aWZpZXJUYWJsZSogc2F2ZWRJZGVudGlmaWVyVGFi
bGU7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIHsKLSAgICAgICAgSlNM
b2NrSG9sZGVyIGxvY2soZXhlYyk7CisgICAgICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhl
Yyk7CiAKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgc2F2ZWRJZGVudGlm
aWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSh2bS5p
ZGVudGlmaWVyVGFibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDcsMTAgKzUwNywxMSBAQCBib29s
IEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29uCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEpTT2JqZWN0SXNGdW5jdGlvbihKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmIG9i
amVjdCkKK2Jvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0
UmVmIG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0odG9KUyhjdHgpKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKICAgICBKU0NlbGwqIGNlbGwgPSB0b0pTKG9iamVjdCk7CiAgICAgcmV0dXJuIGNlbGwt
Pm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNlbGwsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5v
bmU7CkBAIC02MDYsMTIgKzYwNywxMiBAQCBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0
Q29weVByb3BlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0gICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4
ZWMpOwogCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKKyAgICBKU09iamVjdCoganNPYmpl
Y3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBwcm9wZXJ0eU5h
bWVzID0gbmV3IE9wYXF1ZUpTUHJvcGVydHlOYW1lQXJyYXkodm0pOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IGFycmF5KHZtKTsKICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0UHJvcGVy
dHlOYW1lcyhqc09iamVjdCwgZXhlYywgYXJyYXksIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQkocmV2aXNpb24gMTY0NzM4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02OTgsNiArNjk4LDggQEAgc3RhdGljIGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNH
bG9iYQogICAgICAgICAgICAgQVNTRVJUKFtjdXJyZW50Lm9iamMgaXNLaW5kT2ZDbGFzczpbTlNN
dXRhYmxlRGljdGlvbmFyeSBjbGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmRpY3Rpb25hcnkgPSAoTlNNdXRhYmxlRGljdGlvbmFyeSAqKWN1cnJlbnQub2JqYzsKIAor
ICAgICAgICAgICAgSlNDOjpBUElFbnRyeVNoaW0gZW50cnlTaGltKHRvSlMoY29udGV4dCkpOwor
CiAgICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUFycmF5UmVmIHByb3BlcnR5TmFtZUFycmF5ID0g
SlNPYmplY3RDb3B5UHJvcGVydHlOYW1lcyhjb250ZXh0LCBqcyk7CiAgICAgICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gSlNQcm9wZXJ0eU5hbWVBcnJheUdldENvdW50KHByb3BlcnR5TmFtZUFycmF5
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJl
dmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFw
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsNiArNjI1LDcgQEAgaWQgdHJ5VW53cmFwT2JqY09i
amVjdChKU0dsb2JhbENvbnRleHRSZQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAg
ICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZl
eGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKKyAgICBKU0M6OkFQSUVudHJ5U2hp
bSBlbnRyeVNoaW0odG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJp
dHMoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6aW5mbygp
KSkKICAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVj
dCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFyZ2V0ID0g
dHJ5VW53cmFwQ29uc3RydWN0b3Iob2JqZWN0KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzE4LDYgKzcxOCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVDaGFpbi5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFibGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmVSYXJlRGF0YS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcVGVzdFJ1bm5lclV0aWxzLmNwcCIgLz4KQEAgLTE0MDYs
NiArMTQwNyw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RydWN0dXJlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVj
dHVyZUNoYWluLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVj
dHVyZUlEQmxvYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1
Y3R1cmVJRFRhYmxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0
cnVjdHVyZVJhcmVEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1l
XFN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCIgLz4KQEAgLTE0NjksNCArMTQ3
Miw0IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgICAgPElt
cG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXEJ1aWxkQ3VzdG9taXphdGlvbnNcbWFzbS50
YXJnZXRzIiAvPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtNzk1LDYgKzc5NSw5IEBACiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUNoYWluLmNwcCI+CiAgICAgICA8Rmls
dGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURUYWJsZS5jcHAiPgorICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN5bWJvbFRhYmxlLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI0MjksOSArMjQzMiwxOCBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuaCI+CiAgICAgICA8RmlsdGVyPnJ1
bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcU3RydWN0dXJlSURCbG9iaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0Zp
bHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RydWN0dXJlQ2hhaW4uaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0
dXJlSURCbG9iLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZUlEVGFi
bGUuaCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+
CkBAIC0zMzQzLDQgKzMzNTUsNCBAQAogICA8SXRlbUdyb3VwPgogICAgIDxNQVNNIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFBy
b2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xMb3dMZXZlbEludGVycHJldGVyV2luLmFzbSIgLz4K
ICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
PC9Qcm9qZWN0PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03ODUsMTIgKzc4NSwxNSBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBQUFBMzEyMThCRDQ5RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQUFBMzEwMThCRDQ5RDEwMDM5
NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQUFEOTY0QTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZl
QWxsb2NhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQUFEOTY0OTE4NTY5NDE3MDAxRjkzQkUgLyogUmVjdXJzaXZlQWxsb2NhdGlvblNj
b3BlLmggKi87IH07CiAJCTJBQzkyMkJCMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVn
TGluZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkFDOTIyQjkxOEExNjE4MjAwM0NFMEZCIC8qIEZUTERXQVJGRGVidWdMaW5lSW5mby5jcHAg
Ki87IH07CiAJCTJBQzkyMkJDMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUlu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBQzky
MkJBMThBMTYxODIwMDNDRTBGQiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uaCAqLzsgfTsKIAkJ
MkFDQ0YzREUxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUNDRjNE
QzE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNwcCAqLzsg
fTsKIAkJMkFDQ0YzREYxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFD
Q0YzREQxODVGRTI2QjAwODNFMkFEIC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oICov
OyB9OwogCQkyQUQ4OTMyQjE3RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUQ4OTMyOTE3
RTM4NjhGMDA2NjgyNzYgLyogSGVhcEl0ZXJhdGlvblNjb3BlLmggKi87IH07CisJCTJBRjczODJD
MThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRjczODJBMThCQkJGOTIwMDhBNUEzNyAv
KiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLzsgfTsKKwkJMkFGNzM4MkQxOEJCQkY5MjAwOEE1QTM3
IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJBRjczODJCMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcx
RDg0MkQxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFEODQyQzE3Qzk4QjZFMDBFQ0Y5OTQgLyog
bGliei5keWxpYiAqLzsgfTsKIAkJNDEzNTlDRjMwRkREODlBRDAwMjA2MTgwIC8qIERhdGVDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
MjEyMDIyOTBBRDQzMTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLzsgfTsKIAkJNDQ0
M0FFMzMxNkUxODhEOTAwNzZGMTEwIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAw
RTZERjFCIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwpAQCAtMjI0OCwxMiArMjI1MSwx
NSBAQAogCQkyQTY4Mjk1QTE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3B5V3JpdGVCYXJyaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBNkY0NjI1MTdFOTU5Q0UwMEM0NUM5OCAvKiBIZWFw
T3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBPcGVyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkE3QTU4RUUxODA4QTRDNDAwMjBC
REY3IC8qIERlZmVyR0MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RGVmZXJHQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBQUFBMzEwMThCRDQ5
RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RydWN0dXJlSURCbG9iLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJBQUQ5NjQ5MTg1Njk0MTcwMDFGOTNCRSAvKiBSZWN1cnNpdmVBbGxvY2F0aW9uU2NvcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdXJzaXZlQWxsb2NhdGlvblNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQzkyMkI5MThBMTYxODIwMDNDRTBG
QiAvKiBGVExEV0FSRkRlYnVnTGluZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmNwcDsgcGF0aCA9IGZ0bC9GVExEV0FS
RkRlYnVnTGluZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUM5MjJC
QTE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTERXQVJGRGVidWdMaW5lSW5mby5oOyBwYXRoID0gZnRs
L0ZUTERXQVJGRGVidWdMaW5lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
QUNDRjNEQzE4NUZFMjZCMDA4M0UyQUQgLyogREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0b3JlQmFycmllckVs
aXNpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHU3RvcmVCYXJyaWVyRWxpc2lvblBoYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkFDQ0YzREQxODVGRTI2QjAwODNFMkFE
IC8qIERGR1N0b3JlQmFycmllckVsaXNpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBERkdTdG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdT
dG9yZUJhcnJpZXJFbGlzaW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkFEODkzMjkxN0UzODY4RjAwNjY4Mjc2IC8qIEhlYXBJdGVyYXRpb25TY29wZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwSXRlcmF0aW9uU2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFGNzM4MkExOEJCQkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVy
ZUlEVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RydWN0
dXJlSURUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJBRjczODJCMThC
QkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzcxRDg0MkMxN0M5OEI2RTAwRUNGOTk0IC8qIGxpYnouZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYnouZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYnouZHlsaWI7IHNvdXJj
ZVRyZWUgPSBTREtST09UOyB9OwogCQk0NDkwOTdFRTBGOEY4MUI1MDA3NkEzMjcgLyogRmVhdHVy
ZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVy
ZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ1MTUzOUI4
MTJEQzk5NDUwMEVGN0FDNCAvKiBZYXJyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFlhcnIuaDsgcGF0aCA9IHlhcnIvWWFyci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzc5OCw2ICszODA0LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1
bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJB
RjczODJBMThCQkJGOTIwMDhBNUEzNyAvKiBTdHJ1Y3R1cmVJRFRhYmxlLmNwcCAqLywKKwkJCQky
QUY3MzgyQjE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oICovLAogCQkJCUJD
RjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBF
MjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLAogCQkJCUJDMjU3REU1MEUxRjUxQzUwMDE2
QjZDOSAvKiBBcmd1bWVudHMuY3BwICovLApAQCAtNDE4MSw2ICs0MTg5LDcgQEAKIAkJCQkxNDIw
QkU3QTEwQUE2RERCMDBGNDU1RDIgLyogV2Vha1JhbmRvbS5oICovLAogCQkJCUE3RENCNzc5MTJF
M0Q5MDUwMDkxMTk0MCAvKiBXcml0ZUJhcnJpZXIuaCAqLywKIAkJCQlDMkI2RDc1MjE4QTMzNzkz
MDA0QTkzMDEgLyogV3JpdGVCYXJyaWVySW5saW5lcy5oICovLAorCQkJCTJBQUFBMzEwMThCRDQ5
RDEwMDM5NENDOCAvKiBTdHJ1Y3R1cmVJREJsb2IuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcnVu
dGltZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00ODcyLDYgKzQ4ODEsNyBAQAog
CQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3Ry
dWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVF
QzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0VFRTE1MTg3RjNC
QUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUxNEYy
MTkxOEIzRTE2NzAwOThGRjhCIC8qIEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC00ODg5
LDYgKzQ4OTksNyBAQAogCQkJCTBGNjM5NDU1MTVEMDcwNTcwMDZBNTk3QyAvKiBBcnJheVByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJh
eVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MjQwRTE2RkM4QTAwQjM0NDYw
IC8qIEFycmF5UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkFGNzM4MkQxOEJC
QkY5MjAwOEE1QTM3IC8qIFN0cnVjdHVyZUlEVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjdGMzk2MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2ODhDQjE1MEVEMTJCNEUwMDFENjQ5RiAvKiBBc3NlbWJsZXJCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RDNCMkM1MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJX
aXRoQ29uc3RhbnRQb29sLmggaW4gSGVhZGVycyAqLywKQEAgLTYzNDUsNiArNjM1Niw3IEBACiAJ
CQkJQTVDRUVFMTQxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE1OTNDRjg2MTg0MDM4Q0EwMEJGQ0UyNyAvKiBJbnNwZWN0b3JBZ2VudFJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1OTNDRjdDMTg0MDM2MDMwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyQUY3
MzgyQzE4QkJCRjkyMDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBNUZEMDA4MTE4OUIxOTFBMDA2MzMyMzEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1MzI0Mzg3MTg1Njgz
MzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM0LDcgKzQzNCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIERhdGFMYWJlbDMy
OgogICAgIC8vCi0gICAgLy8gQSBEYXRhTGFiZWxQdHIgaXMgdXNlZCB0byByZWZlciB0byBhIGxv
Y2F0aW9uIGluIHRoZSBjb2RlIGNvbnRhaW5pbmcgYSBwb2ludGVyIHRvIGJlCisgICAgLy8gQSBE
YXRhTGFiZWwzMiBpcyB1c2VkIHRvIHJlZmVyIHRvIGEgbG9jYXRpb24gaW4gdGhlIGNvZGUgY29u
dGFpbmluZyBhIDMyLWJpdCBjb25zdGFudCB0byBiZQogICAgIC8vIHBhdGNoZWQgYWZ0ZXIgdGhl
IGNvZGUgaGFzIGJlZW4gZ2VuZXJhdGVkLgogICAgIGNsYXNzIERhdGFMYWJlbDMyIHsKICAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgVGVtcGxhdGVBc3NlbWJsZXJUeXBlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24g
MTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNiArMzY2LDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIFBhdGNoYWJsZUp1bXAoYnJhbmNoUHRyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFM
YWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpKTsKICAgICB9CiAKKyAgICBQYXRjaGFibGVKdW1wIHBh
dGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0
VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICByZXR1cm4gUGF0Y2hhYmxl
SnVtcChicmFuY2gzMldpdGhQYXRjaChjb25kLCBsZWZ0LCBkYXRhTGFiZWwsIGluaXRpYWxSaWdo
dFZhbHVlKSk7CisgICAgfQorCiAjaWYgIUNQVShBUk1fVFJBRElUSU9OQUwpCiAgICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVKdW1wKCkKICAgICB7CkBAIC0zODEsNiArMzg2LDExIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJl
ZywgaW1tKSk7CiAgICAgfQorCisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIGlt
bSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIGFk
ZHJlc3MsIGltbSkpOworICAgIH0KICNlbmRpZgogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShy
ZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyMCw2ICsyMjIwLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgSnVtcCBicmFuY2gzMldpdGhQYXRjaChS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFM
YWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQor
ICAgIHsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIodGhpcyk7CisgICAgICAgIG1v
dmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUJy
YW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZElt
bVB0ciByaWdodCA9IFRydXN0ZWRJbW1QdHIoMCkpCiAgICAgewogICAgICAgICBtX21ha2VKdW1w
UGF0Y2hhYmxlID0gdHJ1ZTsKQEAgLTIyNTIsNiArMjI1OSwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CiAgICAgfQogCisgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxS
aWdodFZhbHVlID0gVHJ1c3RlZEltbTMyKDApKQorICAgIHsKKyAgICAgICAgbV9tYWtlSnVtcFBh
dGNoYWJsZSA9IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzJXaXRoUGF0Y2go
Y29uZCwgbGVmdCwgZGF0YUxhYmVsLCBpbml0aWFsUmlnaHRWYWx1ZSk7CisgICAgICAgIG1fbWFr
ZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVz
dWx0KTsKKyAgICB9CisKICAgICBQYXRjaGFibGVKdW1wIHBhdGNoYWJsZUp1bXAoKQogICAgIHsK
ICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0yMzIyLDYgKzIzMzcsNyBA
QCBwdWJsaWM6CiAgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVnaXN0ZXJGb3JCbGluZGluZygpIHsg
cmV0dXJuIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKTsgfQogCiAg
ICAgc3RhdGljIGJvb2wgY2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2go
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAogICAgIHN0YXRp
YyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihD
b2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewpAQCAtMjMzNCw2ICsyMzUwLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIENvZGVMb2NhdGlvbkxhYmVsKCk7CiAgICAgfQog
ICAgIAorICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNo
MzJXaXRoUGF0Y2hPbkFkZHJlc3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIpCisgICAgeworICAg
ICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICAgICAgcmV0dXJuIENvZGVMb2Nh
dGlvbkxhYmVsKCk7CisgICAgfQorICAgIAogICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBs
YWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9u
U3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIHJl
ZW1pdEluaXRpYWxNb3ZlV2l0aFBhdGNoKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCks
IGluaXRpYWxWYWx1ZSk7CkBAIC0yMzQ0LDYgKzIzNjYsMTEgQEAgcHVibGljOgogICAgICAgICBV
TlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlv
bkxhYmVsLCBBZGRyZXNzLCBpbnQzMl90KQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEVfRk9S
X1BMQVRGT1JNKCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgQUxXQVlTX0lOTElORSBKdW1w
IG1ha2VCcmFuY2goQVJNNjRBc3NlbWJsZXI6OkNvbmRpdGlvbiBjb25kKQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk12Ny5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1
MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVz
cyk7CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRk
cmVzcykKKyAgICB7CisgICAgICAgIHN0b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNz
KSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlOChzcmMsIHNldHVwQXJtQWRkcmVzcyhh
ZGRyZXNzKSk7CkBAIC03NzAsNiArNzc1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc3RvcmU4KGRh
dGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHN0b3JlOChU
cnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtb3ZlKGlt
bSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBzdG9yZTE2KFJlZ2lzdGVySUQgc3JjLCBC
YXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIHN0b3JlMTYoc3JjLCBzZXR1cEFybUFk
ZHJlc3MoYWRkcmVzcykpOwpAQCAtMTcyNiw2ICsxNzM3LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgIH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIEp1bXAgYnJhbmNoMzJXaXRoUGF0
Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBk
YXRhTGFiZWwsIFRydXN0ZWRJbW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigw
KSkKKyAgICB7CisgICAgICAgIGxvYWQzMihsZWZ0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisgICAgCiAgICAgUGF0Y2hhYmxlSnVt
cCBwYXRjaGFibGVCcmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxl
ZnQsIFRydXN0ZWRJbW1QdHIgcmlnaHQgPSBUcnVzdGVkSW1tUHRyKDApKQogICAgIHsKICAgICAg
ICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkBAIC0xNzU4LDYgKzE3NzYsMTQgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOwogICAgIH0KIAorICAg
IFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbDMyJiBkYXRhTGFiZWwsIFRydXN0ZWRJ
bW0zMiBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW0zMigwKSkKKyAgICB7CisgICAgICAg
IG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5j
aDMyV2l0aFBhdGNoKGNvbmQsIGxlZnQsIGRhdGFMYWJlbCwgaW5pdGlhbFJpZ2h0VmFsdWUpOwor
ICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7CisgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVK
dW1wKCkKICAgICB7CiAgICAgICAgIHBhZEJlZm9yZVBhdGNoKCk7CkBAIC0xNzk2LDYgKzE4MjIs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBzdGF0
aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZkJy
YW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVsUHRyIGxhYmVs
KQogICAgIHsKQEAgLTE4MTksMTEgKzE4NDYsMjIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Q29kZUxvY2F0aW9uTGFiZWwoKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlv
bkxhYmVsIHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9j
YXRpb25EYXRhTGFiZWwzMikKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9S
TSgpOworICAgICAgICByZXR1cm4gQ29kZUxvY2F0aW9uTGFiZWwoKTsKKyAgICB9CisgICAgCiAg
ICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2hQdHJX
aXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwsIEFkZHJlc3MsIHZvaWQqKQogICAgIHsKICAgICAg
ICAgVU5SRUFDSEFCTEVfRk9SX1BMQVRGT1JNKCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQg
cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChDb2RlTG9j
YXRpb25MYWJlbCwgQWRkcmVzcywgaW50MzJfdCkKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxF
X0ZPUl9QTEFURk9STSgpOworICAgIH0KKwogI2lmIFVTRShNQVNNX1BST0JFKQogICAgIHN0cnVj
dCBDUFVTdGF0ZSB7CiAgICAgICAgICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3Jl
Z05hbWUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAt
MjU3LDYgKzI1NywxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVy
LmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDMyV2l0
aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwz
MiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1t
MzIoMCkpCisgICAgeworICAgICAgICBwYWRCZWZvcmVQYXRjaCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5jbXBsX2ltX2ZvcmNlMzIoaW5pdGlhbFJpZ2h0VmFsdWUubV92YWx1ZSwgbGVmdC5vZmZz
ZXQsIGxlZnQuYmFzZSk7CisgICAgICAgIGRhdGFMYWJlbCA9IERhdGFMYWJlbDMyKHRoaXMpOwor
ICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7
CisgICAgfQorCiAgICAgRGF0YUxhYmVsUHRyIHN0b3JlUHRyV2l0aFBhdGNoKFRydXN0ZWRJbW1Q
dHIgaW5pdGlhbFZhbHVlLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAg
IHBhZEJlZm9yZVBhdGNoKCk7CkBAIC0yNzcsNiArMjg1LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hh
YmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAgCiAgICAgc3RhdGlj
IENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hPblJlZ2lzdGVyKENv
ZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC0yOTksNiArMzA4LDE3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRPZmZzZXQoLXRvdGFsQnl0ZXMp
OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgQ29kZUxvY2F0aW9uTGFiZWwgc3RhcnRPZlBhdGNo
YWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIGxh
YmVsKQorICAgIHsKKyAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKKyAgICAgICAg
Y29uc3QgaW50IG1vZFJNQnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgb2Zmc2V0Qnl0ZXMg
PSAwOworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRlQnl0ZXMgPSA0OworICAgICAgICBjb25z
dCBpbnQgdG90YWxCeXRlcyA9IG9wY29kZUJ5dGVzICsgbW9kUk1CeXRlcyArIG9mZnNldEJ5dGVz
ICsgaW1tZWRpYXRlQnl0ZXM7CisgICAgICAgIEFTU0VSVCh0b3RhbEJ5dGVzID49IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0KC10
b3RhbEJ5dGVzKTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9CcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgUmVnaXN0ZXJJRCByZWcsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAg
IFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX2NtcGxfaXJfZm9yY2UzMihpbnN0cnVjdGlvblN0
YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRp
YWxWYWx1ZSksIHJlZyk7CkBAIC0zMTAsNiArMzMwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgWDg2
QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZh
bHVlKSwgMCwgYWRkcmVzcy5iYXNlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRK
dW1wUmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MgYWRkcmVzcywgaW50MzJfdCBpbml0aWFsVmFs
dWUpCisgICAgeworICAgICAgICBBU1NFUlQoIWFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgWDg2
QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fY21wbF9pbV9mb3JjZTMyKGluc3RydWN0aW9uU3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgaW5pdGlhbFZhbHVlLCAwLCBhZGRyZXNzLmJhc2UpOworICAg
IH0KKwogI2lmIFVTRShNQVNNX1BST0JFKQogICAgIC8vIEZvciBkZXRhaWxzIGFib3V0IHByb2Jl
KCksIHNlZSBjb21tZW50IGluIE1hY3JvQXNzZW1ibGVyWDg2XzY0LmguCiAgICAgdm9pZCBwcm9i
ZShQcm9iZUZ1bmN0aW9uLCB2b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZfNjQuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBz
Y3JhdGNoUmVnaXN0ZXIpOwogICAgICAgICBzdG9yZTMyKGltbSwgc2NyYXRjaFJlZ2lzdGVyKTsK
ICAgICB9CisKKyAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzb3VyY2UsIHZvaWQqIGFkZHJl
c3MpCisgICAgeworICAgICAgICBpZiAoc291cmNlID09IFg4NlJlZ2lzdGVyczo6ZWF4KQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92bF9FQVhtKGFkZHJlc3MpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIHN0b3JlMzIoc291cmNlLCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAg
ICB9CisgICAgfQogICAgIAogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQq
IGFkZHJlc3MpCiAgICAgewpAQCAtNjI3LDYgKzYzNywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBEYXRhTGFiZWxQdHIodGhpcyk7CiAgICAgfQogCisgICAgRGF0YUxhYmVsUHRyIG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbTMyIGluaXRpYWxWYWx1ZSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cV9p
NjRyKGluaXRpYWxWYWx1ZS5tX3ZhbHVlLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIERhdGFMYWJl
bFB0cih0aGlzKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaFB0cldpdGhQYXRjaChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgRGF0YUxhYmVsUHRyJiBkYXRhTGFi
ZWwsIFRydXN0ZWRJbW1QdHIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tUHRyKDApKQog
ICAgIHsKICAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1
ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKQEAgLTYzOSw2ICs2NTYsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVkSW1tMzIgaW5pdGlhbFJp
Z2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCisgICAgeworICAgICAgICBwYWRCZWZvcmVQYXRj
aCgpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMnIoaW5pdGlhbFJpZ2h0VmFsdWUubV92
YWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgZGF0YUxhYmVsID0gRGF0YUxhYmVsMzIo
dGhpcyk7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0
ZXIpOworICAgIH0KKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVB0cldpdGhQYXRjaChUcnVzdGVk
SW1tUHRyIGluaXRpYWxWYWx1ZSwgSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxWYWx1ZSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKQEAgLTY4Nyw2ICs3MTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
Z2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJldHVybiBzY3JhdGNoUmVn
aXN0ZXI7IH0KIAogICAgIHN0YXRpYyBib29sIGNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNo
UHRyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHN0YXRpYyBib29sIGNhbkp1bXBS
ZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSB7IHJldHVybiB0cnVlOyB9CiAgICAg
CiAgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVsIHN0YXJ0T2ZCcmFuY2hQdHJXaXRoUGF0Y2hP
blJlZ2lzdGVyKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBsYWJlbCkKICAgICB7CkBAIC02OTgs
MTYgKzcyNCwzNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbC5sYWJlbEF0T2Zmc2V0
KC10b3RhbEJ5dGVzKTsKICAgICB9CiAgICAgCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVs
IHN0YXJ0T2ZCcmFuY2gzMldpdGhQYXRjaE9uUmVnaXN0ZXIoQ29kZUxvY2F0aW9uRGF0YUxhYmVs
MzIgbGFiZWwpCisgICAgeworICAgICAgICBjb25zdCBpbnQgcmV4Qnl0ZXMgPSAxOworICAgICAg
ICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOworICAgICAgICBjb25zdCBpbnQgaW1tZWRpYXRl
Qnl0ZXMgPSA0OworICAgICAgICBjb25zdCBpbnQgdG90YWxCeXRlcyA9IHJleEJ5dGVzICsgb3Bj
b2RlQnl0ZXMgKyBpbW1lZGlhdGVCeXRlczsKKyAgICAgICAgQVNTRVJUKHRvdGFsQnl0ZXMgPj0g
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGxhYmVsLmxhYmVsQXRP
ZmZzZXQoLXRvdGFsQnl0ZXMpOworICAgIH0KKyAgICAKICAgICBzdGF0aWMgQ29kZUxvY2F0aW9u
TGFiZWwgc3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9j
YXRpb25EYXRhTGFiZWxQdHIgbGFiZWwpCiAgICAgewogICAgICAgICByZXR1cm4gc3RhcnRPZkJy
YW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIobGFiZWwpOwogICAgIH0KKworICAgIHN0YXRpYyBD
b2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2hPbkFkZHJl
c3MoQ29kZUxvY2F0aW9uRGF0YUxhYmVsMzIgbGFiZWwpCisgICAgeworICAgICAgICByZXR1cm4g
c3RhcnRPZkJyYW5jaDMyV2l0aFBhdGNoT25SZWdpc3RlcihsYWJlbCk7CisgICAgfQogICAgIAog
ICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRy
V2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIEFkZHJlc3MsIHZv
aWQqIGluaXRpYWxWYWx1ZSkKICAgICB7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVt
cFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CiAg
ICAgfQogCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVC
cmFuY2gzMldpdGhQYXRjaChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBBZGRy
ZXNzLCBpbnQzMl90IGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX21vdmxfaTMycihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCksIGluaXRpYWxWYWx1ZSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICBzdGF0aWMg
dm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChDb2RlTG9jYXRp
b25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0aWFsVmFsdWUp
CiAgICAgewogICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1bXBUb19tb3ZxX2k2NHIoaW5z
dHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCByZWludGVycHJldF9jYXN0PGludHB0
cl90Pihpbml0aWFsVmFsdWUpLCBzY3JhdGNoUmVnaXN0ZXIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmgJKHJldmlzaW9uIDE2NDcz
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRj
aE9uQWRkcmVzcyhsYWJlbCk7CiAgICAgfQorCisgICAgc3RhdGljIENvZGVMb2NhdGlvbkxhYmVs
IHN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhDb2RlTG9jYXRpb25E
YXRhTGFiZWwzMiBsYWJlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6
c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoT25BZGRyZXNzKGxhYmVsKTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1
Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewpAQCAtMTc2
LDYgKzE4MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1w
UmVwbGFjZW1lbnRUb1BhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0
LCBhZGRyZXNzLCB2YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1l
bnRUb1BhdGNoYWJsZUJyYW5jaDMyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0
aW9uU3RhcnQsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzIGFkZHJlc3MsIGludDMyX3QgdmFsdWUp
CisgICAgeworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9Q
YXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaChpbnN0cnVjdGlvblN0YXJ0LCBhZGRyZXNzLCB2YWx1
ZSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAjaWYg
RU5BQkxFKEFTU0VNQkxFUl9XWF9FWENMVVNJVkUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMzAsNyArMTMzMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZUJ5dGVPcDgoT1BfTU9WX0ViR2IsIHNyYywgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgbW92d19ybShSZWdpc3RlcklEIHNyYywgaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAg
ICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX09QRVJBTkRfU0laRSk7CkBAIC0y
MDU0LDkgKzIwNTQsOSBAQCBwdWJsaWM6CiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMgdm9p
ZCByZXZlcnRKdW1wVG9fbW92cV9pNjRyKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIGludDY0X3Qg
aW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSA9IDEwOyAvLyBSRVguVyBNT1YgSU1NNjQKICAgICAgICAgY29uc3QgaW50IHJl
eEJ5dGVzID0gMTsKICAgICAgICAgY29uc3QgaW50IG9wY29kZUJ5dGVzID0gMTsKLSAgICAgICAg
QVNTRVJUKHJleEJ5dGVzICsgb3Bjb2RlQnl0ZXMgPD0gbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
KTsKICAgICAgICAgdWludDhfdCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5z
dHJ1Y3Rpb25TdGFydCk7CiAgICAgICAgIHB0clswXSA9IFBSRV9SRVggfCAoMSA8PCAzKSB8IChk
c3QgPj4gMyk7CiAgICAgICAgIHB0clsxXSA9IE9QX01PVl9FQVhJdiB8IChkc3QgJiA3KTsKQEAg
LTIwNjYsMTEgKzIwNjYsMzMgQEAgcHVibGljOgogICAgICAgICAgICAgdWludDhfdCBhc0J5dGVz
WzhdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNXb3JkID0gaW1tOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSByZXhCeXRlcyArIG9wY29kZUJ5dGVzOyBpIDwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1heEp1bXBSZXBsYWNlbWVudFNpemUoKSk7ICsraSkKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gcmV4Qnl0ZXMgKyBvcGNvZGVCeXRlczsgaSA8IGluc3RydWN0aW9uU2l6ZTsgKytp
KQorICAgICAgICAgICAgcHRyW2ldID0gdS5hc0J5dGVzW2kgLSByZXhCeXRlcyAtIG9wY29kZUJ5
dGVzXTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9fbW92bF9pMzJyKHZv
aWQqIGluc3RydWN0aW9uU3RhcnQsIGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIC8vIFdlIG9ubHkgcmV2ZXJ0IGp1bXBzIG9uIGlubGluZSBjYWNoZXMsIGFuZCBp
bmxpbmUgY2FjaGVzIGFsd2F5cyB1c2UgdGhlIHNjcmF0Y2ggcmVnaXN0ZXIgKHIxMSkuCisgICAg
ICAgIC8vIEZJWE1FOiBJZiB0aGUgYWJvdmUgaXMgZXZlciBmYWxzZSB0aGVuIHdlIG5lZWQgdG8g
bWFrZSB0aGlzIHNtYXJ0ZXIgd2l0aCByZXNwZWN0IHRvIGVtaXR0aW5nIAorICAgICAgICAvLyB0
aGUgUkVYIGJ5dGUuCisgICAgICAgIEFTU0VSVChkc3QgPT0gWDg2UmVnaXN0ZXJzOjpyMTEpOwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUgPSA2OyAvLyBSRVggTU9WIElN
TTMyCisgICAgICAgIGNvbnN0IGludCByZXhCeXRlcyA9IDE7CisgICAgICAgIGNvbnN0IGludCBv
cGNvZGVCeXRlcyA9IDE7CisgICAgICAgIHVpbnQ4X3QqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBwdHJbMF0gPSBQUkVfUkVYIHwg
KGRzdCA+PiAzKTsKKyAgICAgICAgcHRyWzFdID0gT1BfTU9WX0VBWEl2IHwgKGRzdCAmIDcpOwor
ICAgICAgICAKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgdWludDMyX3QgYXNXb3JkOwor
ICAgICAgICAgICAgdWludDhfdCBhc0J5dGVzWzRdOworICAgICAgICB9IHU7CisgICAgICAgIHUu
YXNXb3JkID0gaW1tOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXhCeXRlcyArIG9wY29k
ZUJ5dGVzOyBpIDwgaW5zdHJ1Y3Rpb25TaXplOyArK2kpCiAgICAgICAgICAgICBwdHJbaV0gPSB1
LmFzQnl0ZXNbaSAtIHJleEJ5dGVzIC0gb3Bjb2RlQnl0ZXNdOwogICAgIH0KICNlbmRpZgotICAg
IAorCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvX2NtcGxfaXJfZm9yY2UzMih2b2lkKiBp
bnN0cnVjdGlvblN0YXJ0LCBpbnQzMl90IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAg
ICAgICBjb25zdCBpbnQgb3Bjb2RlQnl0ZXMgPSAxOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NywyNCArNzcsMjUgQEAgdm9pZCBkdW1wQXJyYXlNb2RlcyhQcmludFN0cmVh
bSYgb3V0LCBBcgogCiB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KGNvbnN0IENvbmN1cnJlbnRKSVRMb2NrZXImLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAg
ICBpZiAoIW1fbGFzdFNlZW5TdHJ1Y3R1cmUpCisgICAgaWYgKCFtX2xhc3RTZWVuU3RydWN0dXJl
SUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX29ic2VydmVkQXJyYXlNb2RlcyB8PSBh
cnJheU1vZGVGcm9tU3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpOworICAgIFN0cnVjdHVy
ZSogbGFzdFNlZW5TdHJ1Y3R1cmUgPSBjb2RlQmxvY2stPmhlYXAoKS0+c3RydWN0dXJlSURUYWJs
ZSgpLmdldChtX2xhc3RTZWVuU3RydWN0dXJlSUQpOworICAgIG1fb2JzZXJ2ZWRBcnJheU1vZGVz
IHw9IGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpOwogICAgIAogICAg
IGlmICghbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nCiAgICAgICAgICYmIGhhc1R3b09yTW9y
ZUJpdHNTZXQobV9vYnNlcnZlZEFycmF5TW9kZXMpKSB7Ci0gICAgICAgIG1fb2JzZXJ2ZWRBcnJh
eU1vZGVzID0gYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShtX2xhc3RTZWVuU3RydWN0dXJlKTsKKyAg
ICAgICAgbV9vYnNlcnZlZEFycmF5TW9kZXMgPSBhcnJheU1vZGVGcm9tU3RydWN0dXJlKGxhc3RT
ZWVuU3RydWN0dXJlKTsKICAgICAgICAgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nID0gdHJ1
ZTsKICAgICB9CiAgICAgCiAgICAgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMgfD0KLSAg
ICAgICAgbV9sYXN0U2VlblN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3duUHJv
cGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCk7CisgICAgICAgIGxhc3RT
ZWVuU3RydWN0dXJlLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUlu
ZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKTsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKLSAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG1fbGFzdFNlZW5TdHJ1Y3R1cmUpCi0gICAgICAg
ICYmICFnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxUeXBlZEFycmF5U3RydWN0dXJlKG1fbGFzdFNl
ZW5TdHJ1Y3R1cmUpKQorICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmUobGFzdFNlZW5TdHJ1Y3R1cmUpCisgICAgICAgICYmICFnbG9iYWxPYmplY3QtPmlzT3Jp
Z2luYWxUeXBlZEFycmF5U3RydWN0dXJlKGxhc3RTZWVuU3RydWN0dXJlKSkKICAgICAgICAgbV91
c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMgPSBmYWxzZTsKLSAgICBtX2xhc3RTZWVuU3RydWN0
dXJlID0gMDsKKyAgICBtX2xhc3RTZWVuU3RydWN0dXJlSUQgPSAwOwogfQogCiBDU3RyaW5nIEFy
cmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihjb25zdCBDb25jdXJyZW50SklUTG9ja2VyJiBs
b2NrZXIsIENvZGVCbG9jayogY29kZUJsb2NrKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKIHB1YmxpYzoKICAgICBBcnJh
eVByb2ZpbGUoKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAsIG1fbGFzdFNlZW5TdHJ1Y3R1cmUoMCkKKyAg
ICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQoMCkKICAgICAgICAgLCBtX21heVN0b3JlVG9I
b2xlKGZhbHNlKQogICAgICAgICAsIG1fb3V0T2ZCb3VuZHMoZmFsc2UpCiAgICAgICAgICwgbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVi
bGljOgogICAgIAogICAgIEFycmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbGFz
dFNlZW5TdHJ1Y3R1cmUoMCkKKyAgICAgICAgLCBtX2xhc3RTZWVuU3RydWN0dXJlSUQoMCkKICAg
ICAgICAgLCBtX21heVN0b3JlVG9Ib2xlKGZhbHNlKQogICAgICAgICAsIG1fb3V0T2ZCb3VuZHMo
ZmFsc2UpCiAgICAgICAgICwgbV9tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCkBA
IC0xNTksMTQgKzE1OSwxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgCi0gICAgU3Ry
dWN0dXJlKiogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSB7IHJldHVybiAmbV9sYXN0U2Vl
blN0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZUlEKiBhZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVy
ZUlEKCkgeyByZXR1cm4gJm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRDsgfQogICAgIEFycmF5TW9kZXMq
IGFkZHJlc3NPZkFycmF5TW9kZXMoKSB7IHJldHVybiAmbV9vYnNlcnZlZEFycmF5TW9kZXM7IH0K
ICAgICBib29sKiBhZGRyZXNzT2ZNYXlTdG9yZVRvSG9sZSgpIHsgcmV0dXJuICZtX21heVN0b3Jl
VG9Ib2xlOyB9CiAgICAgYm9vbCogYWRkcmVzc09mT3V0T2ZCb3VuZHMoKSB7IHJldHVybiAmbV9v
dXRPZkJvdW5kczsgfQogICAgIAogICAgIHZvaWQgb2JzZXJ2ZVN0cnVjdHVyZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmUgPSBzdHJ1Y3R1
cmU7CisgICAgICAgIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29uc3QgQ29uY3Vy
cmVudEpJVExvY2tlciYsIENvZGVCbG9jayopOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogcG9seW1vcnBoaWNTdHJ1Y3R1cmUoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihyZWludGVycHJldF9jYXN0PHZvaWQqPigxKSk7IH0KICAg
ICAKICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OwotICAgIFN0cnVjdHVyZSogbV9sYXN0
U2VlblN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVuU3RydWN0dXJlSUQ7CiAg
ICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlOyAvLyBUaGlzIGZsYWcgbWF5IGJlY29tZSBvdmVybG9h
ZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVuY291bnRlcmVk
IGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcgdHlwZS4gU2lu
Y2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5nIHR5cGUgKHR3
byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBqdXN0IG1lYW5z
IGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgogICAgIGJvb2wgbV9vdXRPZkJvdW5kczsK
ICAgICBib29sIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vzc2VzIDogMTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE2NDczOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjY5LDYgKzY2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvbnN0YW50
QnVmZmVyQXNWZWN0b3IoaW5kZXgpLmRhdGEoKTsKICAgICB9CiAKKyAgICBIZWFwKiBoZWFwKCkg
Y29uc3QgeyByZXR1cm4gbV9oZWFwOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAKICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0Rm9yKENvZGVPcmlnaW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE2NDcz
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4gfCBKU0NlbGw6OlN0cnVjdHVyZUZsYWdzOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsIHwgSlNDZWxsOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiB9OwpAQCAtNTc5LDcgKzU3OSw3IEBAIHByaXZhdGU6CiAKIHByb3Rl
Y3RlZDoKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4gfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogcHVibGljOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCShyZXZpc2lvbiAx
NjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoKSBcCiAgICAgbWFjcm8o
SlNBcnJheUJ1ZmZlclZpZXdfbW9kZSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X3Zl
Y3RvcikgXAotICAgIG1hY3JvKEpTQ2VsbF9zdHJ1Y3R1cmUpIFwKKyAgICBtYWNybyhKU0NlbGxf
c3RydWN0dXJlSUQpIFwKKyAgICBtYWNybyhKU0NlbGxfaW5kZXhpbmdUeXBlKSBcCisgICAgbWFj
cm8oSlNDZWxsX3R5cGVJbmZvRmxhZ3MpIFwKKyAgICBtYWNybyhKU0NlbGxfdHlwZUluZm9UeXBl
KSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9leGVjdXRhYmxlKSBcCiAgICAgbWFjcm8oSlNGdW5j
dGlvbl9zY29wZUNoYWluKSBcCiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVyZmx5KSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xv
d1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCwyMyArMTIwLDE0IEBAIHByb3RlY3RlZDoKICAgICAgICAgaWYgKG1fb3AgPT0gQXJyYXlp
ZnlUb1N0cnVjdHVyZSkgewogICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcC5maWxsKAotICAgICAgICAgICAgICAgIGppdCwg
aml0LT5tX2ppdC5icmFuY2hXZWFrUHRyKAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAg
ICAgICAgIG1fc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBBbGFzLCB3ZSBuZWVk
IHRvIHJlbG9hZCB0aGUgc3RydWN0dXJlIGJlY2F1c2Ugc2lsZW50IHNwaWxsaW5nIGRvZXMgbm90
IHNhdmUKLSAgICAgICAgICAgIC8vIHRlbXBvcmFyaWVzLiBOb3Igd291bGQgaXQgYmUgdXNlZnVs
IGZvciBpdCB0byBkbyBzby4gRWl0aGVyIHdheSB3ZSdyZSB0YWxraW5nCi0gICAgICAgICAgICAv
LyBhYm91dCBhIGxvYWQuCi0gICAgICAgICAgICBqaXQtPm1faml0LmxvYWRQdHIoCi0gICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgbV9zdHJ1Y3R1cmVHUFIpOwotICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBGaW5hbGx5LCBjaGVjayB0aGF0IHdlIGhhdmUgdGhlIGtpbmQgb2YgYXJyYXkgc3RvcmFn
ZSB0aGF0IHdlIHdhbnRlZCB0byBnZXQuCiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBp
cyBhIGJhY2t3YXJkcyBzcGVjdWxhdGlvbiBjaGVjaywgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhl
IAogICAgICAgICAgICAgLy8gYnl0ZWNvZGUgb3BlcmF0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhp
cyBhcnJheWlmaWNhdGlvbiBiZWluZyByZWV4ZWN1dGVkLgogICAgICAgICAgICAgLy8gVGhhdCdz
IGZpbmUsIHNpbmNlIGFycmF5aWZpY2F0aW9uIGlzIG5vdCB1c2VyLXZpc2libGUuCiAgICAgICAg
ICAgICBqaXQtPm1faml0LmxvYWQ4KAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG1fc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
bV9zdHJ1Y3R1cmVHUFIpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG1fYmFzZUdQUiwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIG1fc3RydWN0dXJlR1BS
KTsKICAgICAgICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcC5maWxsKAogICAgICAgICAgICAg
ICAgIGppdCwgaml0LT5qdW1wU2xvd0ZvclVud2FudGVkQXJyYXlNb2RlKG1fc3RydWN0dXJlR1BS
LCBtX2FycmF5TW9kZSkpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIC8vICAgdmVy
c2lvbnMgb2YgdGhvc2Ugbm9kZXMgdGhhdCBiYWNrd2FyZC1leGl0IGluc3RlYWQsIGJ1dCBJJ20g
bm90IGNvbnZpbmNlZAogICAgIC8vICAgb2YgdGhlIHNvdW5kbmVzcy4KICAgICAvLwotICAgIC8v
IC0gU29tZSBub2RlcyBsaWUsIGFuZCBjbGFpbSB0aGF0IHRoZXkgZG8gbm90IHJlYWQgdGhlIEpT
Q2VsbF9zdHJ1Y3R1cmUuCisgICAgLy8gLSBTb21lIG5vZGVzIGxpZSwgYW5kIGNsYWltIHRoYXQg
dGhleSBkbyBub3QgcmVhZCB0aGUgSlNDZWxsX3N0cnVjdHVyZUlELCBKU0NlbGxfdHlwZUluZm9G
bGFncywgZXRjLgogICAgIC8vICAgVGhlc2UgYXJlIG5vZGVzIHRoYXQgdXNlIHRoZSBzdHJ1Y3R1
cmUgaW4gYSB3YXkgdGhhdCBkb2VzIG5vdCBkZXBlbmQgb24KICAgICAvLyAgIHRoaW5ncyB0aGF0
IGNoYW5nZSB1bmRlciBzdHJ1Y3R1cmUgdHJhbnNpdGlvbnMuCiAgICAgLy8KQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIC8vICAg
c21hbGwgaGFja2luZy4KICAgICAKICAgICBpZiAoZWRnZXNVc2VTdHJ1Y3R1cmUoZ3JhcGgsIG5v
ZGUpKQotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICByZWFkKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCk7CiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2Fz
ZSBKU0NvbnN0YW50OgpAQCAtNDEyLDE5ICs0MTIsMzAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICAKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgog
ICAgIGNhc2UgU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9pbnQ6CisgICAgY2FzZSBJbnN0YW5j
ZU9mOgorICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJldHVybjsK
KwogICAgIGNhc2UgQ2hlY2tBcnJheToKKyAgICAgICAgcmVhZChKU0NlbGxfaW5kZXhpbmdUeXBl
KTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgcmVhZChKU0Nl
bGxfc3RydWN0dXJlSUQpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIENoZWNrSGFzSW5z
dGFuY2U6Ci0gICAgY2FzZSBJbnN0YW5jZU9mOgotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1
cmUpOworICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogICAgIGNhc2UgQ2hlY2tFeGVjdXRhYmxlOgogICAgICAgICByZWFkKEpT
RnVuY3Rpb25fZXhlY3V0YWJsZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2Fz
ZSBQdXRTdHJ1Y3R1cmU6CiAgICAgY2FzZSBQaGFudG9tUHV0U3RydWN0dXJlOgotICAgICAgICB3
cml0ZShKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlE
KTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHdyaXRlKEpT
Q2VsbF90eXBlSW5mb0ZsYWdzKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5nVHlwZSk7
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZToKQEAgLTQ0NCw5ICs0NTUsMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICAKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgQXJyYXlp
ZnlUb1N0cnVjdHVyZToKLSAgICAgICAgcmVhZChKU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAg
cmVhZChKU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICByZWFkKEpTQ2VsbF9pbmRleGluZ1R5
cGUpOwogICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZseSk7Ci0gICAgICAgIHdyaXRlKEpT
Q2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOworICAg
ICAgICB3cml0ZShKU0NlbGxfaW5kZXhpbmdUeXBlKTsKICAgICAgICAgd3JpdGUoSlNPYmplY3Rf
YnV0dGVyZmx5KTsKICAgICAgICAgY2xvYmJlcml6ZUZvckFsbG9jYXRpb24ocmVhZCwgd3JpdGUp
OwogICAgICAgICByZXR1cm47CkBAIC00NjksMTcgKzQ4MiwxNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
Y2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgotICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmUpOwor
ICAgICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIHJlYWQoSlNPYmplY3Rf
YnV0dGVyZmx5KTsKICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBu
b2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0YSgpLmlkZW50aWZpZXJOdW1iZXIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6Ci0gICAgICAgIHJl
YWQoSlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsK
ICAgICAgICAgcmVhZChKU09iamVjdF9idXR0ZXJmbHkpOwogICAgICAgICB3cml0ZShBYnN0cmFj
dEhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLmlkZW50
aWZpZXJOdW1iZXIpKTsKICAgICAgICAgaWYgKG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCku
d3JpdGVzU3RydWN0dXJlcygpKQotICAgICAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZSk7
CisgICAgICAgICAgICB3cml0ZShKU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICBpZiAobm9k
ZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS5yZWFsbG9jYXRlc1N0b3JhZ2UoKSkgewogICAgICAg
ICAgICAgd3JpdGUoSlNPYmplY3RfYnV0dGVyZmx5KTsKICAgICAgICAgICAgIGNsb2JiZXJpemVG
b3JBbGxvY2F0aW9uKHJlYWQsIHdyaXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0
OSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1B0cik7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVk
SW1tMzIod2Vha1N0cnVjdHVyZS0+aWQoKSkpOworICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdl
YWtTdHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworI2Vsc2UKKyAgICAgICAgcmV0
dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7CisjZW5kaWYKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAgYnJhbmNoU3RydWN0dXJl
UHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGxlZnQsIFRydXN0ZWRJbW0zMihzdHJ1Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgICAg
IHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsK
KyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFz
aWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKICAgICB7CiAgICAgICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJs
b2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIx
LDggQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVl
U291cmNlLnBheWxvYWRHUFIoKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0
cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2
YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDgoQXNzZW1i
bHlIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSwgc2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2ppdC5s
c2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAJKHJldmlzaW9uIDE2NDczOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsOSArMTE2LDkgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNv
bXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmdwcigpOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAg
ICAgICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxLCBhcnJheVByb2ZpbGUtPmFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIG1faml0LmxvYWQ4KEFzc2VtYmx5
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQo
KSksIHNjcmF0Y2gxKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKHZhbHVlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNo
MSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoMSwgYXJyYXlQcm9maWxl
LT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgICAgIG1faml0
LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjppbmRleGluZ1R5
cGVPZmZzZXQoKSksIHNjcmF0Y2gxKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7CiAgICAgICAgICAgICAgICAg
bV9qaXQubHNoaWZ0MzIoc2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICAgICAgICAgICAgICBtX2pp
dC5vcjMyKHNjcmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkocmV2aXNp
b24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCByZWlm
eUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycwogfQogCiAjaWYgRU5BQkxFKEdHQykKLXN0
YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVy
LCBHUFJSZWcgc2NyYXRjaDEsIEdQUlJlZyBzY3JhdGNoMikKK3N0YXRpYyB2b2lkIG9zcldyaXRl
QmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRjaCkK
IHsKLSAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGppdC5n
ZW5lcmljV3JpdGVCYXJyaWVyKG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIEFzc2Vt
Ymx5SGVscGVyczo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gaml0LmdlbmVyaWNXcml0ZUJh
cnJpZXIob3duZXIpOwogCiAgICAgLy8gV2UgbmVlZCB0aGVzZSBleHRyYSBzbG90cyBiZWNhdXNl
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSB3aWxsIHVzZSBwb2tlIG9uIHg4Ni4KICNpZiBD
UFUoWDg2KQpAQCAtMTcyLDggKzE3Miw4IEBAIHN0YXRpYyB2b2lkIG9zcldyaXRlQmFycmllcihD
Q2FsbEhlbHBlcnMKICNlbmRpZgogCiAgICAgaml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShvd25lcik7Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uT1NSV3JpdGVCYXJyaWVyKSksIHNjcmF0Y2gx
KTsKLSAgICBqaXQuY2FsbChzY3JhdGNoMSk7CisgICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob3BlcmF0aW9uT1NSV3JpdGVC
YXJyaWVyKSksIHNjcmF0Y2gpOworICAgIGppdC5jYWxsKHNjcmF0Y2gpOwogCiAjaWYgQ1BVKFg4
NikKICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZv
aWQqKSAqIDMpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwpAQCAtMTkw
LDcgKzE5MCw3IEBAIHZvaWQgYWRqdXN0QW5kSnVtcFRvVGFyZ2V0KENDYWxsSGVscGVycyYKICAg
ICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyA7IGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CiAgICAgICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29k
ZU9yaWdpbik7CiAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0
cihiYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLCBHUFJJbmZvOjpub25BcmdH
UFIwKTsgCi0gICAgICAgIG9zcldyaXRlQmFycmllcihqaXQsIEdQUkluZm86Om5vbkFyZ0dQUjAs
IEdQUkluZm86Om5vbkFyZ0dQUjEsIEdQUkluZm86Om5vbkFyZ0dQUjIpOworICAgICAgICBvc3JX
cml0ZUJhcnJpZXIoaml0LCBHUFJJbmZvOjpub25BcmdHUFIwLCBHUFJJbmZvOjpub25BcmdHUFIx
KTsKICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcHV0QnlWYWwoRXhlY1N0YXRlKiBlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgo
b2JqZWN0LCBleGVjLCBpbmRleCwgdmFsdWUsIHN0cmljdCk7CisgICAgICAgIG9iamVjdC0+bWV0
aG9kVGFibGUodm0pLT5wdXRCeUluZGV4KG9iamVjdCwgZXhlYywgaW5kZXgsIHZhbHVlLCBzdHJp
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMjIsMTIgKzIyMiwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvCiAKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNvbnN0
cnVjdG9yLCBpbnQzMl90IGlubGluZUNhcGFjaXR5KQogewotICAgIFZNKiB2bSA9ICZleGVjLT52
bSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKLSAgICBBU1NFUlQoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPm1l
dGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1
Y3RvciksIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisgICAgQVNTRVJUKGpz
Q2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5tZXRob2RUYWJsZSh2bSktPmdldENvbnN0
cnVjdERhdGEoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciksIGNvbnN0cnVjdERhdGEp
ID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmFsbG9j
YXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+c3RydWN0dXJlKCkpOwpAQCAtMzky
LDggKzM5Miw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGwKIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYXJyYXksIGludDMyX3QgaW5kZXgsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
ICAgICAKICAgICBpZiAoaW5kZXggPj0gMCkgewogICAgICAgICBhcnJheS0+cHV0QnlJbmRleElu
bGluZShleGVjLCBpbmRleCwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSksIHRydWUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsOCAr
MjQ3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAg
ICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdHUFIsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpOb25a
ZXJvLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb25aZXJvLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRH
UFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICAgICAgCiAg
ICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMy
KDApLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IG1faml0Lmp1bXAoKTsKQEAgLTMxMiwxMiArMzE0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5k
Lm5vZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBhcmdUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXls
b2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAg
YnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBpbnZlcnQgPyB0YWtlbiA6IG5vdFRh
a2VuKTsKKyAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAorICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCksIAorICAgICAgICAgICAgaW52ZXJ0ID8gdGFrZW4gOiBub3RU
YWtlbik7CiAgICAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxH
bG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIg
PSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVh
bCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8g
bm90VGFrZW4gOiB0YWtlbik7CiAgICAgfQpAQCAtMTEzNiwzOSArMTE0MSwzNCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAgICAgICAgIERGR19UWVBFX0NIRUNL
KAogICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKICAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgICAgICBHUFJSZWcgc3Ry
dWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigp
LCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIsIAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLCAKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09m
ZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9
CiAgICAgCkBAIC0xMjEzLDE5ICsxMjEzLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamUKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3Ry
dWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlR1BSLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJl
R1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApAQCAtMTI0MSwyMCArMTI0MCwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNw
ZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgSlNWYWx1
ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVHUFIs
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMlRhZ0dQ
Uiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0xMzIwLDE5ICsxMzE4LDE4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBs
ZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQog
ICAgIApAQCAtMTM0NywyMCArMTM0NCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVPYmplCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxv
YWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwg
cmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAg
ICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhvcDJQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyUGF5bG9hZEdQUiwgSlNDZWxs
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAgIApA
QCAtMTQ0MywxMCArMTQzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
T3JPdGhlCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2Fk
R1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAogICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygK
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCkBAIC0xNDU4LDcgKzE0NTQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVz
ZSwgCkBAIC0xNTczLDEwICsxNTY5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnIKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBh
eWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOworICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaEdQUik7CiAKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BS
KSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LApAQCAtMTU4NSw3ICsxNTgxLDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAg
ICAgICBzY3JhdGNoR1BSLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIAotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFu
Y2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRj
aEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpaZXJvLCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXls
b2FkR1BSKSwgbm9kZVVzZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTMwNzcs
NyArMzA3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5
UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFU
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBtX2ppdC5t
b3ZlKG9wMVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKQEAgLTMxMTAsNyArMzEwOSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7CiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0g
bV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMVBheWxvYWRH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWRkcmVzcyhvcDFQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0
KCkpLAogICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9h
ZEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwpA
QCAtMzQ3NiwxMSArMzQ3NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgdGhpc1ZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCB0ZW1wR1BSKTsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4
KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZz
ZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVQYXls
b2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKICAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihGaW5hbE9iamVjdFR5cGUpKSk7CiAgICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVl
UGF5bG9hZEdQUiwgdGVtcEdQUik7CiAgICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlVGFnR1BS
LCB0ZW1wVGFnR1BSKTsKQEAgLTM3ODcsMTIgKzM3ODQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChiYXNlLmdwcigpKSwgMCwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hXZWFrUHRyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCks
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAog
ICAgICAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhi
YXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsK
KyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmU7CiAgICAgICAg
ICAgICAKQEAgLTM4MjMsNyArMzgyMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwg
SklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc09LID0gbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29t
cGlsZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7CiAgICAgICAgIG1faml0LmJyZWFrcG9p
bnQoKTsKICAgICAgICAgaXNPSy5saW5rKCZtX2ppdCk7CiAjZWxzZQpAQCAtMzg0Nyw3ICszODQ0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQuc3Rv
cmVQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlVHJhbnNp
dGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7CisgICAgICAgIG1faml0LnN0b3JlUHRyKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZVRyYW5zaXRpb25EYXRh
KCkubmV3U3RydWN0dXJlKSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSk7CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC00MDUxLDggKzQwNDgsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZh
dWx0SGFzSW5zdGFuY2UnLgotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmUu
Z3ByKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdw
cigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwog
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQwODAsOCArNDA3
OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAg
ICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZh
bHVlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5ncHIo
KSk7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21waWxlcjo6Tm9uWmVybywgSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0
OCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgCisgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigw
KSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICAKQEAgLTQxMjQsOCArNDEyNSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
Tm90RXF1YWwsIHZhbHVlLnRhZ0dQUigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgbV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgCisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwg
CisgICAgICAgICAgICByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBk
b25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKICAgICAgICAgaXNOb3RDZWxsLmxpbmsoJm1f
aml0KTsKQEAgLTQxNzgsOCArNDE4MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlUmVncyh0YWdH
UFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAK
ICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwg
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhwYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGls
ZXI6OkFkZHJlc3ModGVtcEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RTdHJpbmcgPSBtX2ppdC5icmFuY2g4KAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocGF5bG9hZEdQ
UiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhKU1Zh
bHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywg
bm90U3RyaW5nKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52
bSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpAQCAtNDcwOCw3
ICs0NzEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZwogICAg
IGlmICghaXNLbm93bkNlbGwodmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICBKSVRDb21waWxl
cjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRlQmFycmllcihtX2ppdCwg
b3duZXJHUFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZGVm
aW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BSKTsK
ICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRj
aDIpOwogICAgIGRlZmluaXRlbHlOb3RNYXJrZWQubGluaygmbV9qaXQpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NywxMiArMjQ3LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICB9IGVsc2UgewogICAgICAgICBH
UFJUZW1wb3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQogICAg
ICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgYXJnR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogCi0gICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Ok5vblplcm8s
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywg
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAogICAgICAgICBtX2ppdC5tb3ZlKGludmVydCA/
IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0R1BSKTsKICAgICAgICAg
bm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKQEAgLTI2MSw2ICsyNjQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAgICAgIEdQ
UlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAg
ICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0Lmdw
cigpOwogICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJl
KGFyZ0dQUiwgcmVzdWx0R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0
T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJl
UHRyKGludmVydCA/IEpJVENvbXBpbGVyOjpOb3RFcXVhbCA6IEpJVENvbXBpbGVyOjpFcXVhbCwg
bG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BSKTsK
ICAgICB9CkBAIC0zMTEsMTYgKzMxNSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBoCiAgICAgfSBlbHNlIHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xv
YmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0
KHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBp
ZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGFyZ0dQUiwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7
Ci0gICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgaW52ZXJ0ID8gdGFr
ZW4gOiBub3RUYWtlbik7CisgICAgICAgIGJyYW5jaFRlc3Q4KEpJVENvbXBpbGVyOjpaZXJvLCAK
KyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIo
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIAorICAgICAgICAgICAgaW52ZXJ0ID8gdGFrZW4gOiBu
b3RUYWtlbik7CiAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxH
bG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIg
PSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5lbWl0TG9h
ZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJh
bmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUds
b2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgfQpAQCAtMTUx
OSw0MSArMTUyNywzNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxp
CiAgICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFs
aWQoKSkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0
cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUt
PmNoaWxkMigpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCAKLSAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgICAgICBHUFJSZWcg
c3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigpOwotCi0gICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09i
amVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0
cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAg
ICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBz
dHJ1Y3R1cmVHUFIpOwogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0
dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICAgICAgc3RydWN0dXJlR1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQ
UiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTE1NzYsMzcgKzE1NzksMjYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBv
cDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1
cmU7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CiAKICAgICBib29s
IG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQgPQogICAgICAgICBtYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpOwogCi0gICAgaWYgKCFtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7Ci0gICAgICAgIC8vIFRoZSBtYXNx
dWVyYWRlcyBhcyB1bmRlZmluZWQgY2FzZSB3aWxsIHVzZSB0aGUgc3RydWN0dXJlIHJlZ2lzdGVy
LCBzbyBhbGxvY2F0ZSBpdCBoZXJlLgotICAgICAgICAvLyBEbyB0aGlzIGF0IHRoZSB0b3Agb2Yg
dGhlIGZ1bmN0aW9uIHRvIGF2b2lkIGJyYW5jaGluZyBhcm91bmQgYSByZWdpc3RlciBhbGxvY2F0
aW9uLgotICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAg
c3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUpOwotICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBz
dHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgfQotCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBs
ZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlND
ZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAgfQogICAg
IApAQCAtMTYxOCwyMSArMTYxMCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0VG9PYmplCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRD
aGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hp
bGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAog
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgp
KSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
dm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisg
ICAgICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhv
cDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoUHRyKAorICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAogICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVj
dHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFn
c09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTE2NzksMzcgKzE2
NzAsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIEdQ
UlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIEdQUlRlbXBvcmFyeSBz
dHJ1Y3R1cmU7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CiAgICAg
Ci0gICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkID0KKyAgICBi
b29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQgPSAKICAgICAgICAgbWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKIAotICAgIGlmICgh
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewotICAgICAgICAvLyBUaGUg
bWFzcXVlcmFkZXMgYXMgdW5kZWZpbmVkIGNhc2Ugd2lsbCB1c2UgdGhlIHN0cnVjdHVyZSByZWdp
c3Rlciwgc28gYWxsb2NhdGUgaXQgaGVyZS4KLSAgICAgICAgLy8gRG8gdGhpcyBhdCB0aGUgdG9w
IG9mIHRoZSBmdW5jdGlvbiB0byBhdm9pZCBicmFuY2hpbmcgYXJvdW5kIGEgcmVnaXN0ZXIgYWxs
b2NhdGlvbi4KLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1Y3R1cmUodGhpcyk7Ci0gICAg
ICAgIHN0cnVjdHVyZS5hZG9wdChyZWFsU3RydWN0dXJlKTsKLSAgICAgICAgc3RydWN0dXJlR1BS
ID0gc3RydWN0dXJlLmdwcigpOwotICAgIH0KLQogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2Jq
ZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVy
ZVB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigK
KyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGls
ZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlR1BSLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAg
ICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQ
UiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAgICAg
fQogCkBAIC0xNzIxLDIxICsxNzAxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdo
dENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRD
aGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmln
aHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNw
ZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZUdQUiwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAgLTE4MzMsNiAr
MTgxMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1
cmU7CiAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IEludmFsaWRHUFJSZWc7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2g7CisgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBJbnZhbGlkR1BSUmVnOwog
CiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkID0KICAgICAg
ICAgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKQEAgLTE4
NDEsMzIgKzE4MjIsMzQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3Ro
ZQogICAgICAgICAvLyBUaGUgbWFzcXVlcmFkZXMgYXMgdW5kZWZpbmVkIGNhc2Ugd2lsbCB1c2Ug
dGhlIHN0cnVjdHVyZSByZWdpc3Rlciwgc28gYWxsb2NhdGUgaXQgaGVyZS4KICAgICAgICAgLy8g
RG8gdGhpcyBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiB0byBhdm9pZCBicmFuY2hpbmcgYXJv
dW5kIGEgcmVnaXN0ZXIgYWxsb2NhdGlvbi4KICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlYWxTdHJ1
Y3R1cmUodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU2NyYXRjaCh0aGlzKTsKICAg
ICAgICAgc3RydWN0dXJlLmFkb3B0KHJlYWxTdHJ1Y3R1cmUpOworICAgICAgICBzY3JhdGNoLmFk
b3B0KHJlYWxTY3JhdGNoKTsKICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdwcigp
OworICAgICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICB9CiAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBK
U1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zm
c2V0KCkpLCBzdHJ1Y3R1cmVHUFIpOwotCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1
cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICAg
ICAgICAgIHN0cnVjdHVyZUdQUiwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7CisgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVj
dHVyZS5nZXQoKSkpOwogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sIAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdz
T2Zmc2V0KCkpLCAKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1
ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAor
ICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBz
Y3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVVc2UsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCkBAIC0xOTg1LDMxICsxOTY4LDQx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKIHsKICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlVXNlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24p
OwogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzdHJ1
Y3R1cmU7CiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBzY3JhdGNoLmdwcigpOwotICAgIAorICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIg
PSBJbnZhbGlkR1BSUmVnOworCisgICAgaWYgKCFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludElzU3RpbGxWYWxpZCgpKSB7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZWFsU3RydWN0dXJl
KHRoaXMpOworICAgICAgICBzdHJ1Y3R1cmUuYWRvcHQocmVhbFN0cnVjdHVyZSk7CisgICAgICAg
IHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsKKyAgICB9CisKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKICAgICBpZiAobWFz
cXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpFcXVhbCwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFs
dWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgp
LT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsgICAgICAgICAgICAgICAgCiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwotCiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAo
flNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBt
X2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCAKLSAgICAgICAgICAgICAgICBzY3JhdGNoR1BSLAotICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OChKSVRDb21w
aWxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpaZXJv
LCAKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKTsKIAorICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2
YWx1ZUdQUiwgc3RydWN0dXJlR1BSLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9q
aXQpOwpAQCAtMzQxNyw3ICszNDEwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwot
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFH
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCAKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
CisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAg
ICAKICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIG1faml0
Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwpAQCAtMzQ0MywxMCArMzQzOSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2ppdC5icmFuY2hUZXN0NjQoCiAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgy
ID0gbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoMiA9IG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
OworICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksCisgICAgICAgICAgICAgICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDFH
UFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAg
ICAgICAgICAgICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAtMzY2NSw3ICszNjYxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
ICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRHUFIsIHN0b3JhZ2VHUFIpKTsKICAg
ICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBzdG9yYWdlR1BSKTsKICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpOwotICAg
ICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBJbW1QdHIo
c3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNl
cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRj
aDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNp
emVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zm
c2V0T2ZWZWN0b3JMZW5ndGgoKSkpOwpAQCAtMzgwMywxMSArMzc5OSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hU
ZXN0NjQoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGhpc1ZhbHVlR1BS
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgbV9qaXQubG9hZFB0cigKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBHUFIpOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCi0gICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRo
aXNWYWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCiAgICAgICAgICAgICBU
cnVzdGVkSW1tMzIoRmluYWxPYmplY3RUeXBlKSkpOwogICAgICAgICBtX2ppdC5tb3ZlKHRoaXNW
YWx1ZUdQUiwgdGVtcEdQUik7CiAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VKIGZ1bmN0aW9uOwpA
QCAtNDA5OCwyNCArNDA5MiwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGlmIChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSkgewog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBleGl0S2luZCwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIDAsCi0gICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFr
U3RydWN0dXJlKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCi0g
ICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhiYXNlLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdw
cigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RydWN0dXJlLmdwcigpKTsKLSAgICAg
ICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmU7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZS0+c3RydWN0dXJl
U2V0KCkuc2l6ZSgpIC0gMTsgKytpKQotICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0
LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUt
PnN0cnVjdHVyZVNldCgpW2ldKSk7CisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQu
YnJhbmNoV2Vha1N0cnVjdHVyZShKSVRDb21waWxlcjo6RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0
cnVjdHVyZVNldCgpW2ldKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGJhc2UuZ3ByKCkpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtQdHIo
Ci0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlLmdw
cigpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2hXZWFrU3RydWN0dXJlKAorICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgfQpAQCAtNDEz
MSwxMiArNDEyMSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIC8vIHdlIHNob3VsZG4ndCByZWFsbHkgbG9hZCBpdCBzaW5jZSB0aGF0IGNvdWxk
IGJlIGEgd2FzdGUuIEZvciBub3cgdGhvdWdoLAogICAgICAgICAvLyB3ZSdsbCBqdXN0IHJlbHkg
b24gdGhlIGZhY3QgdGhhdCB3aGVuIGEgd2F0Y2hwb2ludCBmaXJlcyB0aGVuIHRoYXQncwogICAg
ICAgICAvLyBxdWl0ZSBhIGhpbnQgYWxyZWFkeS4KLSAgICAgICAgCisKICAgICAgICAgbV9qaXQu
YWRkV2Vha1JlZmVyZW5jZShub2RlLT5zdHJ1Y3R1cmUoKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hQdHIoSklU
Q29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhvcDEuZ3ByKCksIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSk7Cisg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzT0sgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3Mob3AxLmdwcigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAg
ICAgICAgICAgIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgp
OwogICAgICAgICBpc09LLmxpbmsoJm1faml0KTsKICNlbHNlCkBAIC00MTU1LDE0ICs0MTQ4LDE4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7CisgICAgICAgIFN0cnVjdHVyZSogb2xkU3Ry
dWN0dXJlID0gbm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVy
ZTsKKyAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVUcmFu
c2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZTsKKwogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNv
bW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9w
bGFuLCBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZSk7CiAKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMSh0aGlzKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBtX2pp
dC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihub2RlLT5zdHJ1Y3R1cmVU
cmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3U3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOworICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5l
d1N0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CisgICAgICAgIG1faml0
LnN0b3JlMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihuZXdTdHJ1Y3R1cmUtPmlkKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTQzNDIsOCArNDMzOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAKICAgICAg
ICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScu
Ci0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJy
YW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJ1Y3R1cmUuZ3ByKCksIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2hUZXN0OCgKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCAKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CiAKICAgICAgICAgbm9SZXN1
bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDM3MSw4ICs0MzcwLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbm90TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgo
SklUQ29tcGlsZXI6Ok5vblplcm8sIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCisgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vblplcm8sIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAg
IG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTQ0MTksOCAr
NDQyMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoSklUQ29tcGlsZXI6Ok5vblplcm8sIHZhbHVlLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBt
X2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAK
KyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgCisgICAgICAgICAgICByZXN1
bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKICAgICAgICAgCkBAIC00NDU5LDggKzQ0NjIsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUeXBlT2Y6IHsKICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxh
dGlvbik7CiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwotICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKLSAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdw
cigpOwogICAgICAgICBHUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgZG9u
ZUp1bXBzOwpAQCAtNDQ3NCw4ICs0NDc1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2Uo
dmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGwsIGlzTm90Q2VsbCk7CiAKICAgICAg
ICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlT2JqZWN0KCkgfHwgbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewotICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHRlbXBHUFIpOwotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5n
ID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoU3RyaW5nVHlwZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5n
ID0gbV9qaXQuYnJhbmNoOCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWws
IAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0
cmluZ1R5cGUpKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
U3RyaW5nVXNlKQogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVTb3VyY2Uo
dmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmluZywgbm90U3RyaW5nKTsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3Mu
c3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpAQCAtNTAyNSw3ICs1MDI4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZwogICAgIGlmICghaXNLbm93bkNlbGwo
dmFsdWVVc2Uubm9kZSgpKSkKICAgICAgICAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdDY0
KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
KTsKIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmlj
V3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAgICBK
SVRDb21waWxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0gZ2VuZXJpY1dyaXRlQmFycmll
cihtX2ppdCwgb3duZXJHUFIpOwogICAgIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIob3duZXJH
UFIsIHNjcmF0Y2gxLCBzY3JhdGNoMik7CiAgICAgZGVmaW5pdGVseU5vdE1hcmtlZC5saW5rKCZt
X2ppdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk4LDkgKzY5OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICBjYXNlIEFy
cmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0gICAgICAgIG1faml0
LmxvYWRQdHIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgdGVtcEdQUik7Ci0gICAgICAgIG1faml0LmxvYWQ4
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBHUFIsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBl
T2Zmc2V0KCkpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBHUFIp
OwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgMCwKICAgICAgICAgICAgIGp1
bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUiwgbm9kZS0+YXJyYXlNb2RlKCkpKTsK
QEAgLTcwOSwxOCArNzA3LDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9k
ZSogbm8KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEFycmF5OjpBcmd1bWVudHM6
Ci0gICAgICAgIGV4cGVjdGVkQ2xhc3NJbmZvID0gQXJndW1lbnRzOjppbmZvKCk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoOCgK
KyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihB
cmd1bWVudHNUeXBlKSkpOworCisgICAgICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOworICAg
ICAgICByZXR1cm47CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZXhwZWN0ZWRDbGFzc0luZm8gPSBj
bGFzc0luZm9Gb3JUeXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCkpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZSwKKyAgICAgICAgICAgIG1faml0LmJyYW5j
aDgoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKG5vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBl
KCkpKSkpOworICAgICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBSRUxFQVNFX0FTU0VSVChleHBlY3RlZENsYXNzSW5mbyk7CiAg
ICAgCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Ci0gICAgbV9qaXQubG9hZFB0cigKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHRlbXAuZ3ByKCkpOworICAgIEdQUlRlbXBvcmFyeSB0ZW1wMih0aGlzKTsKKyAg
ICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShiYXNlUmVnLCB0ZW1wLmdwcigpLCB0ZW1wMi5ncHIo
KSk7CiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUsCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
QEAgLTc1MCwxNiArNzU5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUq
IG5vZGUKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgCiAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICBzbG93UGF0
aC5hcHBlbmQobV9qaXQuYnJhbmNoV2Vha1B0cigKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1f
aml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1
YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCiAgICAgICAgICAgICBub2RlLT5zdHJ1
Y3R1cmUoKSkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmxvYWRQdHIoCi0gICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgc3RydWN0dXJlR1BSKTsKLSAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQ4KAot
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgdGVtcEdQUik7CisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwg
dGVtcEdQUik7CiAgICAgICAgIAogICAgICAgICBzbG93UGF0aC5hcHBlbmQoanVtcFNsb3dGb3JV
bndhbnRlZEFycmF5TW9kZSh0ZW1wR1BSLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgIH0KQEAg
LTExMzEsMjQgKzExMzcsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xl
T2JqZQogICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUg
JiB+U3BlY09iamVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAg
ICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2Rl
LT5jaGlsZDEoKSwgCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAg
ICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYg
flNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKICAgICAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgCi0gICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0
cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQ
UiA9IHN0cnVjdHVyZS5ncHIoKTsKIAotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVy
ZUdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKG9wMUdQUiwgc3RydWN0dXJl
R1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCkBAIC0xMTYwLDEwICsxMTY3LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGls
ZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6
OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAotICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpzdHJ1Y3R1
cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0
dXJlKG9wMkdQUiwgc3RydWN0dXJlR1BSLCB0ZW1wLmdwcigpKTsKICAgICAgICAgaWYgKG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCkBAIC0xMTc1LDcg
KzExODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCi0gICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIAorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG9wMkdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQp
KSk7CiAgICAgfQogCkBAIC0yNTI0LDE4ICsyNTMxLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckYKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1
ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVl
UmVnLCBHUFJSZWcgcHJvdG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaFJlZywgR1BSUmVnIHNjcmF0
Y2gyUmVnKQogewogICAgIC8vIENoZWNrIHRoYXQgcHJvdG90eXBlIGlzIGFuIG9iamVjdC4KLSAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvdHlwZVJlZywgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwotICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qoc2Ny
YXRjaFJlZykpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJlZykpOwogICAgIAogICAg
IC8vIEluaXRpYWxpemUgc2NyYXRjaFJlZyB3aXRoIHRoZSB2YWx1ZSBiZWluZyBjaGVja2VkLgog
ICAgIG1faml0Lm1vdmUodmFsdWVSZWcsIHNjcmF0Y2hSZWcpOwogICAgIAogICAgIC8vIFdhbGsg
dXAgdGhlIHByb3RvdHlwZSBjaGFpbiBvZiB0aGUgdmFsdWUgKGluIHNjcmF0Y2hSZWcpLCBjb21w
YXJpbmcgdG8gcHJvdG90eXBlUmVnLgogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wKCZt
X2ppdCk7Ci0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
UmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CisgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUoc2NyYXRjaFJlZywgc2NyYXRjaFJlZywgc2NyYXRjaDJSZWcpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpLCBzY3JhdGNoUmVn
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3RhbmNlID0gbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoUmVnLCBwcm90b3R5cGVSZWcpOwpAQCAtMjU3
NCw5ICsyNTgwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4K
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVnIHByb3RvdHlwZVJl
ZyA9IHByb3RvdHlwZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNo
LmdwcigpOworICAgICAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAg
ICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFs
dWUuZ3ByKCk7CkBAIC0yNTkzLDcgKzI2MDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5zdGFuY2VPZihOCiAgICAgICAgIAogICAgICAgICBpc0NlbGwubGluaygmbV9qaXQpOwog
ICAgICAgICAKLSAgICAgICAgY29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3Qobm9kZSwgdmFsdWVS
ZWcsIHByb3RvdHlwZVJlZywgc2NyYXRjaFJlZyk7CisgICAgICAgIGNvbXBpbGVJbnN0YW5jZU9m
Rm9yT2JqZWN0KG5vZGUsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcsIHNjcmF0Y2hSZWcsIHNjcmF0
Y2gyUmVnKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogCkBAIC0yNjA5
LDEyICsyNjE3LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4K
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwogICAgIAogICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoMih0aGlzKTsKICAgICAKICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5ncHIo
KTsKICAgICBHUFJSZWcgcHJvdG90eXBlUmVnID0gcHJvdG90eXBlLmdwcigpOwogICAgIEdQUlJl
ZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJSZWcgPSBz
Y3JhdGNoMi5ncHIoKTsKICAgICAKLSAgICBjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdChub2Rl
LCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnKTsKKyAgICBjb21waWxlSW5zdGFu
Y2VPZkZvck9iamVjdChub2RlLCB2YWx1ZVJlZywgcHJvdG90eXBlUmVnLCBzY3JhdGNoUmVnLCBz
Y3JhdGNoMlJlZyk7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIGpzVmFsdWVSZXN1bHQoc2Ny
YXRjaFJlZywgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CkBAIC00MzYyLDEwICs0MzcyLDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICBjYXNlIFN0
cmluZ09yU3RyaW5nT2JqZWN0VXNlOiB7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIAot
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoUHRyKAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BSKTsKKyAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIAorICAgICAgICAgICAgcmVzdWx0R1BS
LAorICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAg
ICAgCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShub2RlLT5jaGls
ZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCkBAIC00MzkyLDEwICs0NDA0LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09uQ2UKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBuZWVkQ2FsbCA9IG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAogICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAg
ICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdl
dCgpKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgICAgIG1faml0LnZtKCktPnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQUiwgcmVz
dWx0R1BSKTsKICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBu
ZWVkQ2FsbC5saW5rKCZtX2ppdCk7CkBAIC00NTk2LDEwICs0NjA4LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChFZGcKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwogICAg
IERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChncHIp
LCBlZGdlLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaFN0cnVj
dHVyZVB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCAKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgICAgICBt
X2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlRmluYWxPYmplY3QoRWRnZSBlZGdlKQpAQCAtNDYwOCwxNCArNDYyMCwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGaW5hbE9iamVjCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2Up
OwotICAgIEdQUlRlbXBvcmFyeSBzdHJ1Y3R1cmUodGhpcyk7CiAgICAgR1BSUmVnIGdwciA9IG9w
ZXJhbmQuZ3ByKCk7Ci0gICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsK
LSAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZUdQUik7CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAg
ICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNGaW5hbE9i
amVjdCwgbV9qaXQuYnJhbmNoOCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAogICAgICAgICAg
ICAgVHJ1c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKIH0KIApAQCAtNDYzMiwxMCArNDY0
MSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoU3Ry
dWN0dXJlUHRyKAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgICAg
IG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CiAg
ICAgaWYgKG5lZWRzVHlwZUNoZWNrKGVkZ2UsIFNwZWNDZWxsIHwgU3BlY090aGVyKSkgewpAQCAt
NDY1NSwxMCArNDY2NCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RP
ck90CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9CiAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVlUmVn
cyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaFB0cigKKyAgICAgICAgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwg
ZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIo
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MocGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAg
ICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygmbV9qaXQp
OwogICAgIGlmIChuZWVkc1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsK
QEAgLTQ2NzgsMTAgKzQ2ODcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2Jq
ZWN0T3JPdAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRnZSwg
R1BSUmVnIGNlbGwpCiB7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hQdHIo
CisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3Ry
aW5nLCBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nSWRlbnRBbmRM
b2FkU3RvcmFnZShFZGdlIGVkZ2UsIEdQUlJlZyBzdHJpbmcsIEdQUlJlZyBzdG9yYWdlKQpAQCAt
NDczNCw3ICs0NzQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKEVk
ZwogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3QoRWRnZSBlZGdl
LCBHUFJSZWcgZ3ByKQogewotICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShl
ZGdlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
KTsKKyAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0KEVkZ2UgZWRnZSkKQEAgLTQ3
NjAsMTYgKzQ3NjksMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JT
dAogICAgIEdQUlJlZyBncHIgPSBvcGVyYW5kLmdwcigpOwogICAgIGlmICghbmVlZHNUeXBlQ2hl
Y2soZWRnZSwgU3BlY1N0cmluZyB8IFNwZWNTdHJpbmdPYmplY3QpKQogICAgICAgICByZXR1cm47
CisKKyAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlSUQodGhpcyk7CisgICAgR1BSUmVnIHN0cnVj
dHVyZUlER1BSID0gc3RydWN0dXJlSUQuZ3ByKCk7CisKKyAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoZ3ByLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVJREdQUik7IAorICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNo
U3RydWN0dXJlUHRyKAorICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsCisgICAgICAgIHN0cnVj
dHVyZUlER1BSLCAKKyAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsK
ICAgICAKLSAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwotICAgIEdQUlJlZyBzdHJ1
Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7Ci0gICAgCi0gICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzdHJ1Y3R1
cmVHUFIpOwotICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJh
bmNoUHRyKAotICAgICAgICBKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQUiwgVHJ1c3Rl
ZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICAKLSAgICBz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlR1BSKTsKKyAg
ICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlSURHUFIp
OwogICAgIAogICAgIGlzU3RyaW5nLmxpbmsoJm1faml0KTsKICAgICAKQEAgLTUwMzQsMTAgKzUw
NDQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZQogI2VuZGlm
CiAgICAgICAgIAogICAgICAgICBhZGRCcmFuY2goCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwKKyAgICAgICAgICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUu
Z2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAK
ICAgICAgICAgZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQ
UigpLCB0ZW1wR1BSKTsKQEAgLTUzMzQsMTAgKzUzNDQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaFN0cmluZyhObwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBhZGRCcmFu
Y2goCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hTdHJ1Y3R1cmVQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMVJlZ3MucGF5bG9h
ZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpKSwKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFSZWdzLnBh
eWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAgICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAgZGF0YS0+
ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAKICAgICAgICAgZW1pdFN3aXRjaFN0cmluZ09u
U3RyaW5nKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpKTsKQEAgLTU0MjYsMzAgKzU0MzYsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0b3JlQmFycmllcgogICAgIG5vUmVzdWx0
KG5vZGUpOwogfQogCi1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dy
aXRlQmFycmllcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG93bmVyLCBHUFJSZWcgc2NyYXRj
aDEsIEdQUlJlZyBzY3JhdGNoMikKK0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpn
ZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpCiB7Ci0g
ICAgaml0Lm1vdmUob3duZXIsIHNjcmF0Y2gxKTsKLSAgICBqaXQubW92ZShvd25lciwgc2NyYXRj
aDIpOwotCi0gICAgaml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihNYXJr
ZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRjaDEpOwotICAgIGppdC5hbmRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIofk1hcmtlZEJsb2NrOjpibG9ja01hc2spLCBzY3JhdGNoMik7
Ci0KLSAgICAvLyBTaGlmdCBpbmRleAotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0LnJzaGlm
dDY0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTWFya2VkQmxvY2s6OmF0b21TaGlmdEFt
b3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNoaWZ0QW1vdW50KSwgc2NyYXRjaDIpOwotI2Vs
c2UKLSAgICBqaXQucnNoaWZ0MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXJrZWRC
bG9jazo6YXRvbVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRBbW91bnQp
LCBzY3JhdGNoMik7Ci0jZW5kaWYKLQotICAgIC8vIEVtaXQgbG9hZCBhbmQgYnJhbmNoCi0gICAg
cmV0dXJuIGppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzY3JhdGNoMSwgc2NyYXRjaDIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc09u
ZSwgTWFya2VkQmxvY2s6Om9mZnNldE9mTWFya3MoKSkpOworICAgIHJldHVybiBqaXQuYnJhbmNo
VGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG93bmVy
LCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7CiB9CiAKIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1
bGF0aXZlSklUOjpnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBKU0NlbGwq
IG93bmVyKQogewotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IE1hcmtlZEJsb2NrOjpibG9ja0Zv
cihvd25lcik7Ci0gICAgc2l6ZV90IG1hcmtJbmRleCA9IChyZWludGVycHJldF9jYXN0PHNpemVf
dD4ob3duZXIpICYgfk1hcmtlZEJsb2NrOjpibG9ja01hc2spID4+IChNYXJrZWRCbG9jazo6YXRv
bVNoaWZ0QW1vdW50ICsgTWFya2VkQmxvY2s6Om1hcmtCeXRlU2hpZnRBbW91bnQpOwotICAgIHVp
bnQ4X3QqIGFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihyZWludGVycHJldF9j
YXN0PGNoYXIqPihibG9jaykgKyBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSArIG1hcmtJ
bmRleDsKKyAgICB1aW50OF90KiBhZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
b3duZXIpICsgSlNDZWxsOjpnY0RhdGFPZmZzZXQoKTsKICAgICByZXR1cm4gaml0LmJyYW5jaFRl
c3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWJzb2x1dGVBZGRyZXNz
KGFkZHJlc3MpKTsKIH0KIApAQCAtNTUwOSwxNCArNTUwMywxNCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjp3cml0ZUJhcnJpZXIoR1BSUmVnCiAgICAgaWYgKEhlYXA6OmlzTWFya2VkKHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1h
cmtlZCA9IGdlbmVyaWNXcml0ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BSLCBzY3JhdGNoMSwgc2Ny
YXRjaDIpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5l
cmljV3JpdGVCYXJyaWVyKG1faml0LCBvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmll
ckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICBkZWZpbml0ZWx5Tm90
TWFya2VkLmxpbmsoJm1faml0KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJy
aWVyKEdQUlJlZyBvd25lckdQUiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCiB7
Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IGdlbmVyaWNXcml0
ZUJhcnJpZXIobV9qaXQsIG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOworICAgIEpJVENv
bXBpbGVyOjpKdW1wIGRlZmluaXRlbHlOb3RNYXJrZWQgPSBnZW5lcmljV3JpdGVCYXJyaWVyKG1f
aml0LCBvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwg
c2NyYXRjaDEsIHNjcmF0Y2gyKTsKICAgICBkZWZpbml0ZWx5Tm90TWFya2VkLmxpbmsoJm1faml0
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjk2LDcgKzI5Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0b3JlVG9Xcml0ZUJhcnJpZXJCdWZmZXIoR1BSUmVnIGNlbGwsIEdQUlJl
ZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKTsKICAgICB2b2lkIHN0b3JlVG9Xcml0ZUJhcnJp
ZXJCdWZmZXIoSlNDZWxsKiwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpOwogCi0g
ICAgc3RhdGljIEpJVENvbXBpbGVyOjpKdW1wIGdlbmVyaWNXcml0ZUJhcnJpZXIoQ0NhbGxIZWxw
ZXJzJiBqaXQsIEdQUlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIp
OworICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVtcCBnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxs
SGVscGVycyYgaml0LCBHUFJSZWcgb3duZXIpOwogICAgIHN0YXRpYyBKSVRDb21waWxlcjo6SnVt
cCBnZW5lcmljV3JpdGVCYXJyaWVyKENDYWxsSGVscGVycyYgaml0LCBKU0NlbGwqIG93bmVyKTsK
ICAgICB2b2lkIHdyaXRlQmFycmllcihHUFJSZWcgb3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BS
UmVnIHNjcmF0Y2gyKTsKICAgICB2b2lkIHdyaXRlQmFycmllcihHUFJSZWcgb3duZXIsIEpTQ2Vs
bCogdmFsdWUsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyKTsKQEAgLTczOSw3ICs3
MzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSosIGJvb2wgaW52ZXJ0ID0gZmFsc2UpOwogICAgIGJvb2wgbm9uU3BlY3VsYXRpdmVT
dHJpY3RFcShOb2RlKiwgYm9vbCBpbnZlcnQgPSBmYWxzZSk7CiAgICAgCi0gICAgdm9pZCBjb21w
aWxlSW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJv
dG90eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZyk7CisgICAgdm9pZCBjb21waWxl
SW5zdGFuY2VPZkZvck9iamVjdChOb2RlKiwgR1BSUmVnIHZhbHVlUmVnLCBHUFJSZWcgcHJvdG90
eXBlUmVnLCBHUFJSZWcgc2NyYXRjaEFuZFJlc3VsdFJlZywgR1BSUmVnIHNjcmF0Y2gyUmVnKTsK
ICAgICB2b2lkIGNvbXBpbGVJbnN0YW5jZU9mKE5vZGUqKTsKICAgICAKICAgICBwdHJkaWZmX3Qg
Y2FsbGVlRnJhbWVPZmZzZXQoaW50IG51bUFyZ3MpCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gc2xvd1BhdGg7CiAgICAgfQotICAgIAorCiAg
ICAgLy8gQWxsb2NhdG9yIGZvciBhIGNlbGwgb2YgYSBzcGVjaWZpYyBzaXplLgogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAvLyBTdHJ1Y3R1cmVUeXBlIGNhbiBiZSBHUFIg
b3IgSW1tUHRyLgogICAgIHZvaWQgZW1pdEFsbG9jYXRlSlNDZWxsKEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBhbGxvY2F0b3JHUFIsIFN0cnVjdHVyZVR5cGUgc3RydWN0dXJlLApAQCAtMjEyMCw3
ICsyMTIwLDcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhbGxvY2F0b3JHUFIsIE1hcmtlZEFsbG9jYXRvcjo6b2Zm
c2V0T2ZGcmVlTGlzdEhlYWQoKSkpOwogCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVj
dCdzIFN0cnVjdHVyZS4KLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0dXJlLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsK
KyAgICAgICAgbV9qaXQuZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKHN0cnVjdHVyZSwg
cmVzdWx0R1BSLCBzY3JhdGNoR1BSKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0b3IgZm9yIGFu
IG9iamVjdCBvZiBhIHNwZWNpZmljIHNpemUuCkBAIC0zMDQ1LDggKzMwNDUsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplCiAgICAgaWYgKCFtX3N0YXRlLmZvck5v
ZGUoZWRnZSkubV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQo
c3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAg
IG1faml0LmJyYW5jaFB0cigKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWws
IHN0cnVjdHVyZUxvY2F0aW9uLCBUcnVzdGVkSW1tUHRyKHN0cmluZ09iamVjdFN0cnVjdHVyZSkp
KTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKKyAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxvY2F0aW9uLCBzdHJpbmdPYmplY3RT
dHJ1Y3R1cmUpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJBUElTaGltcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJERkdMb25nTGl2
ZWRTdGF0ZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIEFic3RyYWN0SGVhcFJlcG9zaXRvcnk6OkFic3Ry
YWN0SGVhcFJlcG8KICAgICBGT1JfRUFDSF9BQlNUUkFDVF9GSUVMRChBQlNUUkFDVF9GSUVMRF9J
TklUSUFMSVpBVElPTikKICN1bmRlZiBBQlNUUkFDVF9GSUVMRF9JTklUSUFMSVpBVElPTgogICAg
IAotICAgICwgSlNDZWxsX2ZyZWVMaXN0TmV4dChKU0NlbGxfc3RydWN0dXJlKQorICAgICwgSlND
ZWxsX2ZyZWVMaXN0TmV4dChKU0NlbGxfc3RydWN0dXJlSUQpCiAgICAgCiAjZGVmaW5lIElOREVY
RURfQUJTVFJBQ1RfSEVBUF9JTklUSUFMSVpBVElPTihuYW1lLCBvZmZzZXQsIHNpemUpICwgbmFt
ZShjb250ZXh0LCAmcm9vdCwgI25hbWUsIG9mZnNldCwgc2l6ZSkKICAgICBGT1JfRUFDSF9JTkRF
WEVEX0FCU1RSQUNUX0hFQVAoSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0lOSVRJQUxJWkFUSU9OKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X21vZGUsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZk1vZGUoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X3ZlY3Rvciwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mVmVjdG9yKCkpIFwKLSAgICBtYWNybyhKU0NlbGxf
c3RydWN0dXJlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSBcCisgICAgbWFjcm8oSlNDZWxs
X3N0cnVjdHVyZUlELCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKKyAgICBtYWNybyhK
U0NlbGxfdHlwZUluZm9GbGFncywgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpIFwKKyAg
ICBtYWNybyhKU0NlbGxfdHlwZUluZm9UeXBlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSBcCisgICAgbWFjcm8oSlNDZWxsX2luZGV4aW5nVHlwZSwgSlNDZWxsOjppbmRleGluZ1R5cGVP
ZmZzZXQoKSkgXAorICAgIG1hY3JvKEpTQ2VsbF9nY0RhdGEsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0
KCkpIFwKICAgICBtYWNybyhKU0Z1bmN0aW9uX2V4ZWN1dGFibGUsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZSgpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9zY29wZSwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpIFwKICAgICBtYWNybyhKU09iamVjdF9idXR0ZXJmbHks
IEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSkgXApAQCAtNjIsMTEgKzY2LDkgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKE1hcmtlZEJsb2NrX21hcmtCaXRz
LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSBcCiAgICAgbWFjcm8oU3RyaW5nSW1wbF9k
YXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJpbmdJbXBsX2hh
c2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVj
dHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCiAgICAg
bWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdUeXBlLCBTdHJ1Y3R1
cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX3R5cGVJbmZv
RmxhZ3MsIFN0cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSBcCi0gICAgbWFjcm8oU3Ry
dWN0dXJlX3R5cGVJbmZvVHlwZSwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSkKIAog
I2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNy
byhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNp
emVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTQwLDEyICsxNTQwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGV4aXRLaW5kID0gQmFkQ2FjaGU7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUg
c3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUp
OworICAgICAgICBMVmFsdWUgc3RydWN0dXJlSUQgPSBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fbm9kZS0+c3Ry
dWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAg
ICAgICAgICAgICBleGl0S2luZCwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAotICAgICAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKVswXSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmVJ
RCwgd2Vha1N0cnVjdHVyZShtX25vZGUtPnN0cnVjdHVyZVNldCgpWzBdKSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTU1NSwxNCArMTU1NSwxNCBAQCBw
cml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRT
dHJ1Y3R1cmUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkNoZWNrU3RydWN0dXJlIG5leHRTdHJ1
Y3R1cmUiKSk7CiAgICAgICAgICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICAgICAgbV9v
dXQuZXF1YWwoc3RydWN0dXJlLCB3ZWFrUG9pbnRlcihtX25vZGUtPnN0cnVjdHVyZVNldCgpW2ld
KSksCisgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1
cmUobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSkpLAogICAgICAgICAgICAgICAgIHVuc3VyZShj
b250aW51YXRpb24pLCB1bnN1cmUobmV4dFN0cnVjdHVyZSkpOwogICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obmV4dFN0cnVjdHVyZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHNw
ZWN1bGF0ZSgKICAgICAgICAgICAgIGV4aXRLaW5kLCBqc1ZhbHVlVmFsdWUoY2VsbCksIDAsCi0g
ICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1cmUsIHdlYWtQb2ludGVyKG1fbm9kZS0+
c3RydWN0dXJlU2V0KCkubGFzdCgpKSkpOworICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3Ry
dWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7
CiAgICAgICAgIAogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTYwMiwxMCArMTYwMiwx
MCBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayB1bmV4cGVjdGVkU3RydWN0dXJlID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJBcnJheWlmeVRvU3RydWN0dXJlIHVuZXhwZWN0ZWQgc3Ry
dWN0dXJlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIkFycmF5aWZ5VG9TdHJ1Y3R1cmUgY29udGludWF0aW9uIikpOwogICAgICAg
ICAKLSAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0NlbGxfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZUlEID0gbV9vdXQu
bG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZSwg
d2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpLAorICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpLAog
ICAgICAgICAgICAgcmFyZWx5KHVuZXhwZWN0ZWRTdHJ1Y3R1cmUpLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbikpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyh1bmV4cGVjdGVkU3RydWN0dXJlLCBjb250aW51YXRpb24pOwpAQCAtMTY0NiwxMCAr
MTY0Niw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmUpOwogICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICBCYWRJbmRleGlu
Z1R5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgMCwKLSAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFs
KHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZUlELCB3ZWFrU3RydWN0dXJlKG1fbm9kZS0+c3Ry
dWN0dXJlKCkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTY1
OCwxMCArMTY1NywxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVB1dFN0cnVjdHVyZSgp
CiAgICAgewogICAgICAgICBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5ub3RpZnlDb21waWxp
bmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1fZ3JhcGgubV9wbGFuLCBjb2RlQmxvY2soKSwgbV9ub2Rl
KTsKLSAgICAgICAgCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKAotICAgICAgICAgICAgd2Vha1Bv
aW50ZXIobV9ub2RlLT5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSksCi0g
ICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1
Y3R1cmUpOworCisgICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbV9ub2RlLT5zdHJ1
Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlOworICAgICAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IG1fbm9kZS0+c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdT
dHJ1Y3R1cmU7CisgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOworICAg
ICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09
IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CisgICAgICAgIEFT
U0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5ld1N0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkpOworCisgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsgCisgICAgICAgIG1fb3V0LnN0b3JlMzIoCisgICAgICAgICAgICB3ZWFrU3Ry
dWN0dXJlKG5ld1N0cnVjdHVyZSksCisgICAgICAgICAgICBjZWxsLCBtX2hlYXBzLkpTQ2VsbF9z
dHJ1Y3R1cmVJRCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVBoYW50b21QdXRTdHJ1
Y3R1cmUoKQpAQCAtMjQ2Nyw3ICsyNDczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwogICAg
ICAgICAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihh
bGxvY2F0ZU9iamVjdCgKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciks
IG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRo
KSk7CisgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihhbGxvY2F0b3IpLCBzdHJ1Y3R1cmUs
IG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIApAQCAtMjY0NCw3ICsyNjUwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5zdWIoZW5kT2ZTdG9yYWdl
LCBwYXlsb2FkU2l6ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Qg
PSBhbGxvY2F0ZU9iamVjdDxKU0FycmF5PigKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIGZhaWxDYXNlKTsKKyAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUsIGJ1dHRlcmZseSwgZmFpbENhc2UpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX291dC5zdG9yZTMyKHB1YmxpY0xlbmd0aCwgYnV0dGVyZmx5LCBtX2hlYXBzLkJ1dHRlcmZs
eV9wdWJsaWNMZW5ndGgpOwogICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgs
IGJ1dHRlcmZseSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKQEAgLTI3NDEsMTgg
KzI3NDcsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0cmluZ09y
U3RyaW5nT2JqZWN0VXNlOiB7CiAgICAgICAgICAgICBMVmFsdWUgY2VsbCA9IGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9h
ZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgTFZhbHVl
IHN0cnVjdHVyZUlEID0gbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90U3RyaW5nID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJUb1N0cmluZyBTdHJpbmdPclN0cmluZ09iamVjdCBub3Qg
c3RyaW5nIGNhc2UiKSk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBG
VExfTkVXX0JMT0NLKG1fb3V0LCAoIlRvU3RyaW5nIFN0cmluZ09yU3RyaW5nT2JqZWN0IGNvbnRp
bnVhdGlvbiIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2lt
cGxlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNlbGwpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNo
KAotICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnRQ
dHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgICAgICBtX291dC5l
cXVhbChzdHJ1Y3R1cmVJRCwgbV9vdXQuY29uc3RJbnQzMih2bSgpLnN0cmluZ1N0cnVjdHVyZS0+
aWQoKSkpLAogICAgICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90
U3RyaW5nKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0
ID0gbV9vdXQuYXBwZW5kVG8obm90U3RyaW5nLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAg
c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKG1fbm9kZS0+Y2hpbGQxKCksIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJRCht
X25vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9j
ayB1bmJveGVkUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0Lmxv
YWRQdHIoY2VsbCwgbV9oZWFwcy5KU1dyYXBwZXJPYmplY3RfaW50ZXJuYWxWYWx1ZSkpOwogICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMjc4OCw4ICsyNzk0LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBpc1N0cmluZ1ByZWRpY2F0ZTsKICAgICAgICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSB7CiAg
ICAgICAgICAgICAgICAgaXNTdHJpbmdQcmVkaWNhdGUgPSBtX291dC5lcXVhbCgKLSAgICAgICAg
ICAgICAgICAgICAgbV9vdXQubG9hZFB0cih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
KSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1
Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIGlzU3RyaW5nUHJlZGljYXRlID0gbV9vdXQuYm9vbGVhbkZhbHNl
OwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nUHJlZGljYXRlLCB1bnN1cmUoY29u
dGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwpAQCAtMjg2NCw3ICsyODcwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoCiAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cigmYWxsb2NhdG9yKSwKLSAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpKSwKKyAgICAgICAgICAg
IHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgpLAogICAgICAgICAgICAgc2xvd1BhdGgpOwogICAg
ICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgcmVzdWx0LCBt
X2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKQEAgLTMwODEsMTEgKzMwODcsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKS5zaXpl
KCk7IGotLTspIHsKICAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSgKLSAg
ICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKVtqXSks
IGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKVtqXSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24o
Ci0gICAgICAgICAgICBtX291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZSksIGNhc2VzLCBleGl0LCBXZWlnaHQoMCkpOworICAgICAgICAgICAgbV9vdXQubG9hZDMyKGJh
c2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwgY2FzZXMsIGV4aXQsIFdlaWdodCgwKSk7
CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lm1fbmV4dEJs
b2NrOwogICAgICAgICAKQEAgLTMxNDcsMTAgKzMxNTMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAg
ICAgY2FzZXMuYXBwZW5kKAotICAgICAgICAgICAgICAgIFN3aXRjaENhc2Uod2Vha1BvaW50ZXIo
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CisgICAgICAg
ICAgICAgICAgU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkp
LCBibG9ja3NbaV0sIFdlaWdodCgxKSkpOwogICAgICAgICB9CiAgICAgICAgIG1fb3V0LnN3aXRj
aEluc3RydWN0aW9uKAotICAgICAgICAgICAgbV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpT
Q2VsbF9zdHJ1Y3R1cmUpLCBjYXNlcywgZXhpdCwgV2VpZ2h0KDApKTsKKyAgICAgICAgICAgIG1f
b3V0LmxvYWQzMihiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGNhc2VzLCBleGl0
LCBXZWlnaHQoMCkpOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBt
X291dC5tX25leHRCbG9jazsKICAgICAgICAgCkBAIC0zMTcyLDggKzMxNzgsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdG9yYWdlID0gc3RvcmFnZUZv
clRyYW5zaXRpb24oCiAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHZhcmlhbnQub2Zmc2V0KCks
IHZhcmlhbnQub2xkU3RydWN0dXJlKCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgICAgIG1fb3V0LnN0b3JlUHRyKAotICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRl
cih2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
KTsKKworICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlKCktPnR5cGVJbmZvKCku
aW5saW5lVHlwZUZsYWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5p
bmxpbmVUeXBlRmxhZ3MoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpKTsKKyAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAg
ICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpLCBiYXNl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHN0b3JlUHJvcGVydHkodmFsdWUsIHN0b3JhZ2UsIGRhdGEuaWRlbnRp
Zmllck51bWJlciwgdmFyaWFudC5vZmZzZXQoKSk7CkBAIC0zOTQyLDE0ICszOTUyLDE0IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihjZWxs
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAog
ICAgICAgICAgICAganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLCBmaWx0ZXIsCi0gICAgICAgICAg
ICBtX291dC5lcXVhbChzdHJ1Y3R1cmUsIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3Ry
dWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlSUQsIG1f
b3V0LmNvbnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAgIHNw
ZWN1bGF0ZSgKICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZS5u
b2RlKCksCiAgICAgICAgICAgICBtX291dC50ZXN0Tm9uWmVybzgoCi0gICAgICAgICAgICAgICAg
bV9vdXQubG9hZDgoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb0ZsYWdzKSwK
KyAgICAgICAgICAgICAgICBtX291dC5sb2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5m
b0ZsYWdzKSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkpKTsKICAgICB9CiAgICAgCkBAIC0zOTgxLDggKzM5OTEsOCBAQCBwcml2YXRlOgog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5waGkobV9vdXQuYm9vbGVhbiwgZmFzdFJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOwogICAgIH0KLSAgICAKLSAgICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1ZSBhbGxvY2F0
b3IsIExWYWx1ZSBzdHJ1Y3R1cmUsIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorCisgICAgTFZhbHVl
IGFsbG9jYXRlQ2VsbChMVmFsdWUgYWxsb2NhdG9yLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTEJh
c2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBzdWNjZXNzID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJvYmplY3QgYWxsb2NhdGlvbiBzdWNjZXNzIikpOwogICAg
ICAgICAKQEAgLTM5OTcsMTMgKzQwMDcsMTcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0
LmxvYWRQdHIocmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9mcmVlTGlzdE5leHQpLAogICAgICAgICAg
ICAgYWxsb2NhdG9yLCBtX2hlYXBzLk1hcmtlZEFsbG9jYXRvcl9mcmVlTGlzdEhlYWQpOwogICAg
ICAgICAKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIoc3RydWN0dXJlLCByZXN1bHQsIG1faGVhcHMu
SlNDZWxsX3N0cnVjdHVyZSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQz
MihzdHJ1Y3R1cmUtPmlkKCkpLCByZXN1bHQsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsK
KyAgICAgICAgbV9vdXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OChzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICBt
X291dC5zdG9yZTgobV9vdXQuY29uc3RJbnQ4KHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkp
LCByZXN1bHQsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIG1fb3V0LnN0
b3JlOChtX291dC5jb25zdEludDgoc3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFn
cygpKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKKyAgICAgICAgbV9v
dXQuc3RvcmU4KG1fb3V0LmNvbnN0SW50OCgwKSwgcmVzdWx0LCBtX2hlYXBzLkpTQ2VsbF9nY0Rh
dGEpOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAg
ICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoCi0gICAgICAgIExWYWx1ZSBhbGxvY2F0b3IsIExWYWx1
ZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorICAg
ICAgICBMVmFsdWUgYWxsb2NhdG9yLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRl
cmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gYWxsb2NhdGVDZWxsKGFsbG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgICAg
IG1fb3V0LnN0b3JlUHRyKGJ1dHRlcmZseSwgcmVzdWx0LCBtX2hlYXBzLkpTT2JqZWN0X2J1dHRl
cmZseSk7CkBAIC00MDExLDcgKzQwMjUsNyBAQCBwcml2YXRlOgogICAgIH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+Ci0gICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExW
YWx1ZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQor
ICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1
dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvcjsKICAgICAgICAgc2l6ZV90IHNpemUgPSBDbGFzc1R5cGU6OmFsbG9j
YXRpb25TaXplKDApOwpAQCAtNDA4MCw3ICs0MDk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGVuZE9mU3RvcmFnZSwgbV9vdXQuY29uc3RJbnRQdHIoc2l6ZW9mKEpTVmFsdWUpICogdmVjdG9y
TGVuZ3RoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gYWxsb2NhdGVPYmpl
Y3Q8SlNBcnJheT4oCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBi
dXR0ZXJmbHksIHNsb3dQYXRoKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBz
bG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50
MzIobnVtRWxlbWVudHMpLCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0
aCk7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMih2ZWN0b3JMZW5ndGgp
LCBidXR0ZXJmbHksIG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CkBAIC00MjE5LDgg
KzQyMzMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAg
ICAgICAgICAganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5sb2FkUHRyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2Vs
bF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIodm0o
KS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTQyMzEsMTggKzQyNDUsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IExCYXNpY0Jsb2NrIG1hc3F1ZXJhZGVzQ2FzZSA9CiAgICAgICAgICAgICAgICAgRlRMX05FV19C
TE9DSyhtX291dCwgKCJFcXVhbE51bGxPclVuZGVmaW5lZCBtYXNxdWVyYWRlcyBjYXNlIikpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0Lmxv
YWRQdHIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuRmFsc2Up
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAogICAgICAgICAgICAg
ICAgIG1fb3V0LnRlc3ROb25aZXJvOCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDgo
c3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb0ZsYWdzKSwKKyAgICAgICAgICAg
ICAgICAgICAgbV9vdXQubG9hZDgodmFsdWUsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3Mp
LAogICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDgoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpLAogICAgICAgICAgICAgICAgIHJhcmVseShtYXNxdWVyYWRlc0Nhc2UpLCB1c3VhbGx5
KGNvbnRpbnVhdGlvbikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRU
byhtYXNxdWVyYWRlc0Nhc2UsIHByaW1pdGl2ZUNhc2UpOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZSh2YWx1ZSk7CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcigKICAgICAgICAgICAg
ICAgICBtX291dC5lcXVhbCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKQEAgLTUw
MDMsOCArNTAxNyw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGlzT2JqZWN0KExWYWx1ZSBjZWxs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgbV9v
dXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAg
ICAgIG1fb3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAg
ICAgICAgICBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAg
ICAgfQogICAgIAogICAgIExWYWx1ZSBpc05vdFN0cmluZyhMVmFsdWUgY2VsbCkKQEAgLTUwMTUs
OCArNTAyOSw4IEBAIHByaXZhdGU6CiAgICAgTFZhbHVlIGlzU3RyaW5nKExWYWx1ZSBjZWxsKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgbV9vdXQubG9h
ZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmUpLAotICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgICAgIG1f
b3V0LmxvYWQzMihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCisgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSk7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBpc05vdE9iamVjdChMVmFsdWUgY2VsbCkKQEAgLTUwMzAsOSArNTA0
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNl
IEFycmF5OjpEb3VibGU6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6IHsKLSAgICAg
ICAgICAgIExWYWx1ZSBpbmRleGluZ1R5cGUgPSBtX291dC5sb2FkOCgKLSAgICAgICAgICAgICAg
ICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAgICAg
ICAgICAgICAgbV9oZWFwcy5TdHJ1Y3R1cmVfaW5kZXhpbmdUeXBlKTsKKyAgICAgICAgICAgIExW
YWx1ZSBpbmRleGluZ1R5cGUgPSBtX291dC5sb2FkOChjZWxsLCBtX2hlYXBzLkpTQ2VsbF9pbmRl
eGluZ1R5cGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKGFycmF5TW9kZS5h
cnJheUNsYXNzKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6Ok9yaWdpbmFsQXJyYXk6CkBA
IC01MDYwLDcgKzUwNzIsOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBoYXNDbGFzc0luZm8oY2VsbCwgY2xh
c3NJbmZvRm9yVHlwZShhcnJheU1vZGUudHlwZWRBcnJheVR5cGUoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fb3V0LmVxdWFsKAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4KGNlbGwsIG1f
aGVhcHMuSlNDZWxsX3R5cGVJbmZvVHlwZSksIAorICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50OCh0eXBlRm9yVHlwZWRBcnJheVR5cGUoYXJyYXlNb2RlLnR5cGVkQXJyYXlUeXBlKCkpKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC01MDY4LDcgKzUwODIsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgbV9vdXQubG9h
ZFB0cigKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgbG9hZFN0cnVjdHVyZShjZWxsKSwKICAgICAg
ICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV9jbGFzc0luZm8pLAogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnRQdHIoY2xhc3NJbmZvKSk7CiAgICAgfQpAQCAtNTA3Niw5ICs1MDkwLDcgQEAg
cHJpdmF0ZToKICAgICBMVmFsdWUgaXNUeXBlKExWYWx1ZSBjZWxsLCBKU1R5cGUgdHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAgICAgICAgICAgIG1fb3V0LmxvYWQ4
KAotICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlKSwKLSAgICAgICAgICAgICAgICBtX2hlYXBzLlN0cnVjdHVyZV90eXBlSW5mb1R5cGUp
LAorICAgICAgICAgICAgbV9vdXQubG9hZDgoY2VsbCwgbV9oZWFwcy5KU0NlbGxfdHlwZUluZm9U
eXBlKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50OCh0eXBlKSk7CiAgICAgfQogICAgIApA
QCAtNTE2NSwxMyArNTE3NywxMyBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBub3RT
dHJpbmcgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlNwZWN1bGF0ZSBTdHJpbmdPclN0cmluZ09i
amVjdCBub3Qgc3RyaW5nIGNhc2UiKSk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3BlY3VsYXRlIFN0cmluZ09yU3RyaW5nT2JqZWN0
IGNvbnRpbnVhdGlvbiIpKTsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBt
X291dC5sb2FkUHRyKGxvd0NlbGwoZWRnZSksIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSk7Cisg
ICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVJRCA9IG1fb3V0LmxvYWQzMihsb3dDZWxsKGVkZ2UpLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgIG1fb3V0LmJyYW5jaCgKLSAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZSwgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKSwKKyAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZUlE
LCBtX291dC5jb25zdEludDMyKHZtKCkuc3RyaW5nU3RydWN0dXJlLT5pZCgpKSksCiAgICAgICAg
ICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwogICAgICAgICAK
ICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcs
IGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVy
ZShlZGdlLCBzdHJ1Y3R1cmUpOworICAgICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1
Y3R1cmVJRChlZGdlLCBzdHJ1Y3R1cmVJRCk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOwpAQCAtNTE4MSwxMCArNTE5MywxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yQ2VsbChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAg
IHsKLSAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKGVkZ2UsIG1fb3V0
LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSk7CisgICAgICAgIHNwZWN1
bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKGVkZ2UsIG1fb3V0LmxvYWQzMihjZWxsLCBt
X2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCkpOwogICAgIH0KICAgICAKLSAgICB2b2lkIHNwZWN1
bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShFZGdlIGVkZ2UsIExWYWx1ZSBzdHJ1Y3R1cmUp
CisgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJRChFZGdlIGVkZ2Us
IExWYWx1ZSBzdHJ1Y3R1cmVJRCkKICAgICB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlID0KICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CkBAIC01MTk0LDIy
ICs1MjA2LDIzIEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCiAgICAg
ICAgICAgICBOb3RTdHJpbmdPYmplY3QsIG5vVmFsdWUoKSwgMCwKLSAgICAgICAgICAgIG1fb3V0
Lm5vdEVxdWFsKHN0cnVjdHVyZSwgd2Vha1BvaW50ZXIoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkp
OworICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlSUQsIHdlYWtTdHJ1Y3R1cmUo
c3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0
ZU5vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKICAgICB7Ci0gICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZSk7CiAgICAgICAgIEZUTF9UWVBFX0NIRUNLKAogICAgICAgICAgICAganNWYWx1ZVZhbHVl
KGNlbGwpLCBlZGdlLCBTcGVjT2JqZWN0LCAKLSAgICAgICAgICAgIG1fb3V0LmVxdWFsKHN0cnVj
dHVyZSwgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKSk7Cisg
ICAgICAgICAgICBtX291dC5lcXVhbCgKKyAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2Vs
bCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAorICAgICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUtPmlkKCkpKSk7CiAgICAgICAgIGlmIChtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRlKAogICAgICAgICAgICAgQmFkVHlw
ZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBlZGdlLm5vZGUoKSwKICAgICAgICAgICAgIG1fb3V0LnRl
c3ROb25aZXJvOCgKLSAgICAgICAgICAgICAgICBtX291dC5sb2FkOChzdHJ1Y3R1cmUsIG1faGVh
cHMuU3RydWN0dXJlX3R5cGVJbmZvRmxhZ3MpLAorICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQ4
KGNlbGwsIG1faGVhcHMuSlNDZWxsX3R5cGVJbmZvRmxhZ3MpLAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50OChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogICAgIH0KICAgICAKQEAg
LTUyNjQsMTAgKzUyNzcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIExWYWx1ZSBsb2FkTWFya0J5
dGUoTFZhbHVlIGJhc2UpCiAgICAgewotICAgICAgICBMVmFsdWUgbWFya2VkQmxvY2sgPSBtX291
dC5iaXRBbmQoYmFzZSwgbV9vdXQuY29uc3RJbnQ2NChNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSk7
Ci0gICAgICAgIExWYWx1ZSBiYXNlT2Zmc2V0ID0gbV9vdXQuYml0QW5kKGJhc2UsIG1fb3V0LmNv
bnN0SW50NjQofk1hcmtlZEJsb2NrOjpibG9ja01hc2spKTsKLSAgICAgICAgTFZhbHVlIG1hcmtC
eXRlSW5kZXggPSBtX291dC5sU2hyKGJhc2VPZmZzZXQsIG1fb3V0LmNvbnN0SW50NjQoTWFya2Vk
QmxvY2s6OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2NrOjptYXJrQnl0ZVNoaWZ0QW1vdW50
KSk7Ci0gICAgICAgIHJldHVybiBtX291dC5sb2FkOChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5N
YXJrZWRCbG9ja19tYXJrQml0cywgbWFya2VkQmxvY2ssIG1hcmtCeXRlSW5kZXgsIFNjYWxlT25l
LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSk7CisgICAgICAgIHJldHVybiBtX291dC5s
b2FkOChiYXNlLCBtX2hlYXBzLkpTQ2VsbF9nY0RhdGEpOwogICAgIH0KIAogICAgIHZvaWQgZW1p
dFN0b3JlQmFycmllcihMVmFsdWUgYmFzZSwgTFZhbHVlIHZhbHVlLCBFZGdlIHZhbHVlRWRnZSkK
QEAgLTU3MzIsMTIgKzU3NDIsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGgu
bV9wbGFuLndlYWtSZWZlcmVuY2VzLmFkZExhemlseSh0YXJnZXQpOwogICAgIH0KLSAgICAKKwor
ICAgIExWYWx1ZSBsb2FkU3RydWN0dXJlKExWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIExW
YWx1ZSB0YWJsZUluZGV4ID0gbV9vdXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1
Y3R1cmVJRCk7CisgICAgICAgIExWYWx1ZSB0YWJsZUJhc2UgPSBtX291dC5nZXQobV9vdXQuY29u
c3RJbnRQdHIodm0oKS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5iYXNlKCkpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3V0LmdldChtX291dC5iYXNlSW5kZXgodGFibGVCYXNlLCB0YWJsZUluZGV4LCBT
Y2FsZUVpZ2h0KSk7CisgICAgfQorCiAgICAgTFZhbHVlIHdlYWtQb2ludGVyKEpTQ2VsbCogcG9p
bnRlcikKICAgICB7CiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2UocG9pbnRlcik7CiAgICAgICAg
IHJldHVybiBtX291dC5jb25zdEludFB0cihwb2ludGVyKTsKICAgICB9CisKKyAgICBMVmFsdWUg
d2Vha1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIGFkZFdl
YWtSZWZlcmVuY2Uoc3RydWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50MzIo
c3RydWN0dXJlLT5pZCgpKTsKKyAgICB9CiAgICAgCiAgICAgVHlwZWRQb2ludGVyIGFkZHJlc3NG
b3IoTFZhbHVlIGJhc2UsIGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw5ICsxMDYsOSBAQCBz
dGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAgICAgICAgaWYgKGV4aXQubV9raW5kID09IEJhZENh
Y2hlIHx8IGV4aXQubV9raW5kID09IEJhZEluZGV4aW5nVHlwZSkgewogICAgICAgICAgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZTsKICAg
ICAgICAgICAgIGlmIChBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IGppdC5iYXNlbGluZUNv
ZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+Z2V0QXJyYXlQcm9maWxlKGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCkpIHsKLSAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIEdQUklu
Zm86OnJlZ1QxKTsKLSAgICAgICAgICAgICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDEs
IGFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAg
ICAgICAgaml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCBT
dHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgICAg
ICAgICAgICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKKyAgICAg
ICAgICAgICAgICBqaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICAgICAgICAgIGppdC5sb2FkOChN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgSlNDZWxsOjppbmRleGluZ1R5
cGVPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgICAgICAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMik7CiAgICAgICAg
ICAgICAgICAgaml0LmxzaGlmdDMyKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMik7CiAg
ICAgICAgICAgICAgICAgaml0Lm9yMzIoR1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNzZW1ibGVyOjpB
YnNvbHV0ZUFkZHJlc3MoYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZBcnJheU1vZGVzKCkpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTY0NzM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjY3LDYgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICBMVmFsdWUgbG9hZDY0KExWYWx1ZSBiYXNl
LCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1cm4gbG9hZDY0KGFkZHJlc3MoYmFz
ZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0
cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1cm4gbG9hZFB0cihhZGRyZXNzKGJhc2UsIGZpZWxkKSk7
IH0KICAgICBMVmFsdWUgbG9hZERvdWJsZShMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVs
ZCYgZmllbGQpIHsgcmV0dXJuIGxvYWREb3VibGUoYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9Cisg
ICAgdm9pZCBzdG9yZTgoTFZhbHVlIHZhbHVlLCBMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RG
aWVsZCYgZmllbGQpIHsgc3RvcmU4KHZhbHVlLCBhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAg
ICB2b2lkIHN0b3JlMzIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RG
aWVsZCYgZmllbGQpIHsgc3RvcmUzMih2YWx1ZSwgYWRkcmVzcyhiYXNlLCBmaWVsZCkpOyB9CiAg
ICAgdm9pZCBzdG9yZTY0KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIGJhc2UsIGNvbnN0IEFic3RyYWN0
RmllbGQmIGZpZWxkKSB7IHN0b3JlNjQodmFsdWUsIGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQog
ICAgIHZvaWQgc3RvcmVQdHIoTFZhbHVlIHZhbHVlLCBMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJh
Y3RGaWVsZCYgZmllbGQpIHsgc3RvcmVQdHIodmFsdWUsIGFkZHJlc3MoYmFzZSwgZmllbGQpKTsg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBc3NlcnRpb25zLmgJKHJldmlz
aW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQXNzZXJ0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJ
T04pCiAjZGVmaW5lIEFTU0VSVF9HQ19PQkpFQ1RfTE9PS1NfVkFMSUQoY2VsbCkgZG8geyBcCiAg
ICAgUkVMRUFTRV9BU1NFUlQoY2VsbCk7XAotICAgIFJFTEVBU0VfQVNTRVJUKGNlbGwtPnVudmFs
aWRhdGVkU3RydWN0dXJlKCktPnVudmFsaWRhdGVkU3RydWN0dXJlKCkgPT0gY2VsbC0+dW52YWxp
ZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKS0+dW52YWxpZGF0ZWRTdHJ1
Y3R1cmUoKSk7IFwKKyAgICBSRUxFQVNFX0FTU0VSVChjZWxsLT5zdHJ1Y3R1cmUoKS0+c3RydWN0
dXJlKCkgPT0gY2VsbC0+c3RydWN0dXJlKCktPnN0cnVjdHVyZSgpLT5zdHJ1Y3R1cmUoKSk7IFwK
IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhvYmplY3Qs
IGNsYXNzSW5mbykgZG8ge1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDM3LDYgKzQzNyw3IEBAIHZvaWQgSGVhcDo6Z2V0Q29uc2VydmF0
aXZlUmVnaXN0ZXJSb290cygKICAgICBKU0NlbGwqKiByZWdpc3RlclJvb3RzID0gc3RhY2tSb290
cy5yb290cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tSb290Q291bnQ7IGkr
KykgewogICAgICAgICBzZXRNYXJrZWQocmVnaXN0ZXJSb290c1tpXSk7CisgICAgICAgIHJlZ2lz
dGVyUm9vdHNbaV0tPm1hcmsoKTsKICAgICAgICAgcm9vdHMuYWRkKHJlZ2lzdGVyUm9vdHNbaV0p
OwogICAgIH0KIH0KQEAgLTg1Nyw2ICs4NTgsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoKQogCiAg
ICAgewogICAgICAgICBHQ1BIQVNFKFN0b3BBbGxvY2F0aW9uKTsKKyAgICAgICAgbV9zdHJ1Y3R1
cmVJRFRhYmxlLmZsdXNoT2xkVGFibGVzKCk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc3RvcEFs
bG9jYXRpbmcoKTsKICAgICAgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29s
bGVjdGlvbikKICAgICAgICAgICAgIG1fc3RvcmFnZVNwYWNlLmRpZFN0YXJ0RnVsbENvbGxlY3Rp
b24oKTsKQEAgLTExMTAsOCArMTExMiwxMSBAQCB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25z
dCBKU0NlbGwqIGZyCiB7CiAjaWYgRU5BQkxFKEdHQykKICAgICBBU1NFUlRfR0NfT0JKRUNUX0xP
T0tTX1ZBTElEKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oZnJvbSkpOwotICAgIGlmICghZnJvbSB8fCAh
aXNNYXJrZWQoZnJvbSkpCisgICAgaWYgKCFmcm9tIHx8ICFmcm9tLT5pc01hcmtlZCgpKSB7Cisg
ICAgICAgIEFTU0VSVCghZnJvbSB8fCAhaXNNYXJrZWQoZnJvbSkpOwogICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEFTU0VSVChpc01hcmtlZChmcm9tKSk7CiAgICAgYWRkVG9SZW1lbWJlcmVk
U2V0KGZyb20pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJvbSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKICNpbmNsdWRlICJXZWFr
SGFuZGxlT3duZXIuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJCdWZmZXIuaCIKICNpbmNsdWRl
ICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCkBAIC0yMDEsNiArMjAyLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRGVmZXJyZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fZGVmZXJyYWxEZXB0aCB8fCBPcHRpb25zOjpkaXNhYmxlR0MoKTsgfQogCisgICAgICAgIEJs
b2NrQWxsb2NhdG9yJiBibG9ja0FsbG9jYXRvcigpOworICAgICAgICBTdHJ1Y3R1cmVJRFRhYmxl
JiBzdHJ1Y3R1cmVJRFRhYmxlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmVJRFRhYmxlOyB9CisKICNp
ZiBVU0UoQ0YpCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgcmVsZWFzZVNvb24o
UmV0YWluUHRyPFQ+JiYpOwogI2VuZGlmCkBAIC0yNTksNyArMjYzLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNTdGFj
ayYgc3RhY2soKTsKLSAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7CiAg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluY3JlbWVudERlZmVycmFs
RGVwdGgoKTsKICAgICAgICAgdm9pZCBkZWNyZW1lbnREZWZlcnJhbERlcHRoKCk7CkBAIC0yODAs
NiArMjgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBIZWFwT3BlcmF0
aW9uIG1fb3BlcmF0aW9uSW5Qcm9ncmVzczsKICAgICAgICAgQmxvY2tBbGxvY2F0b3IgbV9ibG9j
a0FsbG9jYXRvcjsKKyAgICAgICAgU3RydWN0dXJlSURUYWJsZSBtX3N0cnVjdHVyZUlEVGFibGU7
CiAgICAgICAgIE1hcmtlZFNwYWNlIG1fb2JqZWN0U3BhY2U7CiAgICAgICAgIENvcGllZFNwYWNl
IG1fc3RvcmFnZVNwYWNlOwogICAgICAgICBHQ0luY29taW5nUmVmQ291bnRlZFNldDxBcnJheUJ1
ZmZlcj4gbV9hcnJheUJ1ZmZlcnM7CkBAIC0zOTMsMTggKzM5Nyw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSGVhcDo6d3JpdGVCYXJyaWVyKGNv
bnN0IEpTQ2VsbCogZnJvbSwgSlNDZWxsKiB0bykKLSAgICB7Ci0jaWYgRU5BQkxFKFdSSVRFX0JB
UlJJRVJfUFJPRklMSU5HKQotICAgICAgICBXcml0ZUJhcnJpZXJDb3VudGVyczo6Y291bnRXcml0
ZUJhcnJpZXIoKTsKLSNlbmRpZgotICAgICAgICBpZiAoIWZyb20gfHwgIWlzTWFya2VkKGZyb20p
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIXRvIHx8IGlzTWFya2VkKHRvKSkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYWRkVG9SZW1lbWJlcmVkU2V0KGZyb20pOwot
ICAgIH0KLQogICAgIGlubGluZSB2b2lkIEhlYXA6OndyaXRlQmFycmllcihjb25zdCBKU0NlbGwq
IGZyb20sIEpTVmFsdWUgdG8pCiAgICAgewogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJ
TElORykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2
aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDIwICsyNDQsMjIgQEAgaW5saW5lIHZvaWQqIE1hcmtl
ZFNwYWNlOjphbGxvY2F0ZVdpdGhObwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgTWFya2VkU3BhY2U6OmZvckVhY2hCbG9j
ayhGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJlY2lz
ZUNvdW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByZWNpc2VDb3VudDsg
KytpKQogICAgICAgICBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hC
bG9jayhmdW5jdG9yKTsKLSAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFs
bG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX2ltbW9ydGFsU3Ry
dWN0dXJlRGVzdHJ1Y3RvclNwYWNlLnByZWNpc2VBbGxvY2F0b3JzW2ldLmZvckVhY2hCbG9jayhm
dW5jdG9yKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNv
dW50OyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltcHJlY2lzZUNvdW50OyAr
K2kpCiAgICAgICAgIG1fbm9ybWFsU3BhY2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNo
QmxvY2soZnVuY3Rvcik7Ci0gICAgICAgIG1fbm9ybWFsRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lz
ZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgICAgICBtX2ltbW9ydGFs
U3RydWN0dXJlRGVzdHJ1Y3RvclNwYWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwotICAgIH0KLQogICAgIG1fbm9ybWFsU3BhY2UubGFyZ2VBbGxvY2F0b3Iu
Zm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVj
aXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3BhY2UucHJlY2lzZUFs
bG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW1wcmVjaXNlQ291bnQ7ICsraSkKKyAgICAgICAgbV9ub3JtYWxEZXN0cnVjdG9yU3Bh
Y2UuaW1wcmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgbV9u
b3JtYWxEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmVjaXNlQ291bnQ7ICsraSkKKyAgICAg
ICAgbV9pbW1vcnRhbFN0cnVjdHVyZURlc3RydWN0b3JTcGFjZS5wcmVjaXNlQWxsb2NhdG9yc1tp
XS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbXBy
ZWNpc2VDb3VudDsgKytpKQorICAgICAgICBtX2ltbW9ydGFsU3RydWN0dXJlRGVzdHJ1Y3RvclNw
YWNlLmltcHJlY2lzZUFsbG9jYXRvcnNbaV0uZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwogICAgIG1f
aW1tb3J0YWxTdHJ1Y3R1cmVEZXN0cnVjdG9yU3BhY2UubGFyZ2VBbGxvY2F0b3IuZm9yRWFjaEJs
b2NrKGZ1bmN0b3IpOwogCiAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMTY0NzM4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAKICAgICBNYXJrU3RhY2tBcnJheSYgbWFy
a1N0YWNrKCkgeyByZXR1cm4gbV9zdGFjazsgfQogCisgICAgVk0mIHZtKCk7CisgICAgY29uc3Qg
Vk0mIHZtKCkgY29uc3Q7CiAgICAgSGVhcCogaGVhcCgpIGNvbnN0OwogCiAgICAgdm9pZCBhcHBl
bmQoQ29uc2VydmF0aXZlUm9vdHMmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9ySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA4LDkgKzEwOCwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OmludGVy
bmFsCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAgdmFsaWRhdGUoY2VsbCk7CiAjZW5k
aWYKLSAgICBpZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChjZWxsKSB8fCAhY2VsbC0+c3RydWN0
dXJlKCkpCisgICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQoY2VsbCkgfHwgIWNlbGwtPnN0
cnVjdHVyZSgpKSB7CisgICAgICAgIEFTU0VSVChjZWxsLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKKyAgICBjZWxsLT5tYXJrKCk7CiAgICAgbV9ieXRlc1Zpc2l0ZWQg
Kz0gTWFya2VkQmxvY2s6OmJsb2NrRm9yKGNlbGwpLT5jZWxsU2l6ZSgpOwogICAgICAgICAKICAg
ICBNQVJLX0xPR19DSElMRCgqdGhpcywgY2VsbCk7CkBAIC0yNzksNiArMjgyLDE2IEBAIGlubGlu
ZSBIZWFwKiBTbG90VmlzaXRvcjo6aGVhcCgpIGNvbnN0CiAgICAgcmV0dXJuICZzaGFyZWREYXRh
KCkubV92bS0+aGVhcDsKIH0KIAoraW5saW5lIFZNJiBTbG90VmlzaXRvcjo6dm0oKQoreworICAg
IHJldHVybiAqc2hhcmVkRGF0YSgpLm1fdm07Cit9CisKK2lubGluZSBjb25zdCBWTSYgU2xvdFZp
c2l0b3I6OnZtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKnNoYXJlZERhdGEoKS5tX3ZtOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFNsb3RWaXNpdG9ySW5saW5lc19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlz
aW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw5ICsyODYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBwYXlsb2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4ob3BlcmFuZCkpOwog
ICAgIH0KIAotICAgIEp1bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BSUmVnIHN0cnVjdHVyZVJlZykK
KyAgICBKdW1wIGJyYW5jaElmQ2VsbE5vdE9iamVjdChHUFJSZWcgY2VsbFJlZykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0cnVjdHVyZVJlZywgU3RydWN0
dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Cisg
ICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKGNlbGxSZWcsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOwogICAgIH0KIAog
ICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRjaEdQUihHUFJSZWcgcHJlc2VydmUxID0gSW52
YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVz
ZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmU0ID0gSW52YWxpZEdQUlJlZykK
QEAgLTM4NywyMSArMzg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgaml0QXNzZXJ0QXJndW1lbnRD
b3VudFNhbmUoKSB7IH0KICNlbmRpZgogCi0gICAgSnVtcCBnZW5lcmljV3JpdGVCYXJyaWVyKEdQ
UlJlZyBvd25lciwgR1BSUmVnIHNjcmF0Y2gxLCBHUFJSZWcgc2NyYXRjaDIpCisgICAgSnVtcCBn
ZW5lcmljV3JpdGVCYXJyaWVyKEdQUlJlZyBvd25lcikKICAgICB7Ci0gICAgICAgIG1vdmUob3du
ZXIsIHNjcmF0Y2gxKTsKLSAgICAgICAgbW92ZShvd25lciwgc2NyYXRjaDIpOwotICAgIAotICAg
ICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cihNYXJrZWRCbG9jazo6YmxvY2tNYXNrKSwgc2NyYXRj
aDEpOwotICAgICAgICBhbmRQdHIoVHJ1c3RlZEltbVB0cih+TWFya2VkQmxvY2s6OmJsb2NrTWFz
ayksIHNjcmF0Y2gyKTsKLSAgICAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICByc2hpZnQ2
NChUcnVzdGVkSW1tMzIoTWFya2VkQmxvY2s6OmF0b21TaGlmdEFtb3VudCArIE1hcmtlZEJsb2Nr
OjptYXJrQnl0ZVNoaWZ0QW1vdW50KSwgc2NyYXRjaDIpOwotI2Vsc2UKLSAgICAgICAgcnNoaWZ0
MzIoVHJ1c3RlZEltbTMyKE1hcmtlZEJsb2NrOjphdG9tU2hpZnRBbW91bnQgKyBNYXJrZWRCbG9j
azo6bWFya0J5dGVTaGlmdEFtb3VudCksIHNjcmF0Y2gyKTsKLSNlbmRpZgotICAgIAotICAgICAg
ICByZXR1cm4gYnJhbmNoVGVzdDgoWmVybywgQmFzZUluZGV4KHNjcmF0Y2gxLCBzY3JhdGNoMiwg
VGltZXNPbmUsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZk1hcmtzKCkpKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3Mob3duZXIsIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCkp
KTsKICAgICB9CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIGNvbnZlcnQgYmV0d2VlbiBkb3VibGVz
LCBhbmQgZG91YmxlcyBib3hlZCBhbmQgSlNWYWx1ZXMuCkBAIC01NTksNiArNTQ3LDc5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CiAgICAgfQogCisgICAgdm9pZCBlbWl0TG9hZFN0cnVj
dHVyZShSZWdpc3RlcklEIHNvdXJjZSwgUmVnaXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEIHNjcmF0
Y2gpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzb3VyY2UsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIGRlc3Qp
OworICAgICAgICBsb2FkUHRyKHZtKCktPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmJhc2UoKSwg
c2NyYXRjaCk7CisgICAgICAgIGxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzY3Jh
dGNoLCBkZXN0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGRlc3QpOworI2Vsc2UKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHNjcmF0Y2gpOworICAgICAgICBsb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHNvdXJjZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7
CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0TG9hZFN0cnVjdHVyZShBc3Nl
bWJseUhlbHBlcnMmIGppdCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lz
dGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaml0Lmxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBkZXN0KTsKKyAgICAgICAgaml0LmxvYWRQdHIoaml0LnZtKCktPmhlYXAuc3RydWN0
dXJlSURUYWJsZSgpLmJhc2UoKSwgc2NyYXRjaCk7CisgICAgICAgIGppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgZGVzdCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQpLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShzY3JhdGNoKTsKKyAg
ICAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgZGVzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGVt
aXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhUcnVzdGVkSW1tUHRyIHN0cnVjdHVyZSwgUmVn
aXN0ZXJJRCBkZXN0LCBSZWdpc3RlcklEKQorICAgIHsKKyAgICAgICAgZW1pdFN0b3JlU3RydWN0
dXJlV2l0aFR5cGVJbmZvKCp0aGlzLCBzdHJ1Y3R1cmUsIGRlc3QpOworICAgIH0KKworICAgIHZv
aWQgZW1pdFN0b3JlU3RydWN0dXJlV2l0aFR5cGVJbmZvKFJlZ2lzdGVySUQgc3RydWN0dXJlLCBS
ZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKKyAgICB7CisjaWYgVVNFKEpTVkFM
VUU2NCkKKyAgICAgICAgbG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZSwg
U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgIHN0b3Jl
NjQoc2NyYXRjaCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSk7CisjZWxzZQorICAgICAgICAvLyBTdG9yZSBhbGwgdGhlIGluZm8gZmxh
Z3MgdXNpbmcgYSBzaW5nbGUgMzItYml0IHdpZGUgbG9hZCBhbmQgc3RvcmUuCisgICAgICAgIGxv
YWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmUsIFN0cnVjdHVyZTo6aW5kZXhp
bmdUeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAgICAgICAgc3RvcmUzMihzY3JhdGNoLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgpKSk7
CisKKyAgICAgICAgLy8gU3RvcmUgdGhlIFN0cnVjdHVyZUlECisgICAgICAgIHN0b3JlUHRyKHN0
cnVjdHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBlbWl0U3RvcmVT
dHJ1Y3R1cmVXaXRoVHlwZUluZm8oQXNzZW1ibHlIZWxwZXJzJiBqaXQsIFRydXN0ZWRJbW1QdHIg
c3RydWN0dXJlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBjb25zdCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0cnVjdHVyZSo+KHN0cnVjdHVy
ZS5tX3ZhbHVlKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBqaXQuc3RvcmU2NChUcnVz
dGVkSW1tNjQoc3RydWN0dXJlUHRyLT5pZEJsb2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgSnVtcCBjb3JyZWN0U3RydWN0dXJlID0gaml0LmJyYW5jaDMyKEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhkZXN0LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoc3RydWN0dXJlUHRyLT5pZCgpKSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGNvcnJlY3RTdHJ1Y3R1cmUubGluaygmaml0KTsKKworICAgICAgICBKdW1wIGNv
cnJlY3RJbmRleGluZ1R5cGUgPSBqaXQuYnJhbmNoOChFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoZGVzdCwgSlNDZWxsOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihz
dHJ1Y3R1cmVQdHItPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIGppdC5icmVha3BvaW50KCk7
CisgICAgICAgIGNvcnJlY3RJbmRleGluZ1R5cGUubGluaygmaml0KTsKKworICAgICAgICBKdW1w
IGNvcnJlY3RUeXBlID0gaml0LmJyYW5jaDgoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGRlc3QsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoc3RydWN0
dXJlUHRyLT50eXBlSW5mbygpLnR5cGUoKSkpOworICAgICAgICBqaXQuYnJlYWtwb2ludCgpOwor
ICAgICAgICBjb3JyZWN0VHlwZS5saW5rKCZqaXQpOworCisgICAgICAgIEp1bXAgY29ycmVjdEZs
YWdzID0gaml0LmJyYW5jaDgoRXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZVB0ci0+
dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSkpOworICAgICAgICBqaXQuYnJlYWtwb2ludCgp
OworICAgICAgICBjb3JyZWN0RmxhZ3MubGluaygmaml0KTsKKyNlbmRpZgorI2Vsc2UKKyAgICAg
ICAgLy8gRG8gYSAzMi1iaXQgd2lkZSBzdG9yZSB0byBpbml0aWFsaXplIHRoZSBjZWxsJ3MgZmll
bGRzLgorICAgICAgICBqaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoc3RydWN0dXJlUHRyLT5vYmpl
Y3RJbml0aWFsaXphdGlvbkJsb2IoKSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGRlc3QsIEpT
Q2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkpKTsKKyAgICAgICAgaml0LnN0b3JlUHRyKHN0cnVj
dHVyZSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZGVzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIHdyaXRlQmFycmllcihHUFJSZWcg
b3duZXIsIEdQUlJlZyBzY3JhdGNoMSwgR1BSUmVnIHNjcmF0Y2gyLCBXcml0ZUJhcnJpZXJVc2VL
aW5kIHVzZUtpbmQpCiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0ob3duZXIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIGVtaXRMb2FkRG91YmxlKGludCBp
bmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKICAgICAgICAgdm9pZCBlbWl0TG9hZEludDMyVG9E
b3VibGUoaW50IGluZGV4LCBGUFJlZ2lzdGVySUQgdmFsdWUpOwotICAgICAgICBKdW1wIGVtaXRK
dW1wSWZOb3RPYmplY3QoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVSZWcpOworICAgICAgICBKdW1wIGVt
aXRKdW1wSWZDZWxsTm90T2JqZWN0KFJlZ2lzdGVySUQgY2VsbFJlZyk7CiAKICAgICAgICAgSnVt
cCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soSlNDZWxsKiwgU3RydWN0dXJlKiwgU3RydWN0
dXJlU3R1YkluZm8qLCBSZWdpc3RlcklEIHNjcmF0Y2gpOwogICAgICAgICB2b2lkIGFkZFN0cnVj
dHVyZVRyYW5zaXRpb25DaGVjayhKU0NlbGwqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CkBAIC0zMTQs
NyArMzE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9k
ZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlclZhbHVlLCBTaG91bGRG
aWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFsdWUgcmVnaXN0ZXIgaW4gd3JpdGUg
YmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCByZWdpc3RlcnMKICAgICAgICAgLy8g
c28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBlaXRoZXIgb2YgdGhlIHNjcmF0Y2ggcmVnaXN0
ZXJzLgotICAgICAgICBKdW1wIGNoZWNrTWFya1dvcmQoUmVnaXN0ZXJJRCBvd25lciwgUmVnaXN0
ZXJJRCBzY3JhdGNoMSwgUmVnaXN0ZXJJRCBzY3JhdGNoMik7CisgICAgICAgIEp1bXAgY2hlY2tN
YXJrV29yZChSZWdpc3RlcklEIG93bmVyKTsKICAgICAgICAgSnVtcCBjaGVja01hcmtXb3JkKEpT
Q2VsbCogb3duZXIpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3du
ZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0
V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJN
b2RlKTsKQEAgLTMyOCw4ICszMjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKFZhbHVlUHJvZmlsZSopOwogICAgICAgICB2b2lkIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICB2b2lk
IGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKLSAgICAgICAgdm9pZCBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlKFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBSZWdpc3RlcklEIHNj
cmF0Y2gsIEFycmF5UHJvZmlsZSopOwotICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVGb3JCeXRlY29kZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlLCBS
ZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICB2b2lk
IGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVy
SUQgaW5kZXhpbmdUeXBlLCBBcnJheVByb2ZpbGUqKTsKKyAgICAgICAgdm9pZCBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdpdGhDZWxsKFJlZ2lzdGVySUQgY2VsbCwgUmVn
aXN0ZXJJRCBpbmRleGluZ1R5cGUsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgICAgICB2
b2lkIGVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNpYWxDYXNlKEFycmF5UHJvZmlsZSop
OwogICAgICAgICB2b2lkIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxDYXNlKEFy
cmF5UHJvZmlsZSopOwogICAgICAgICAKQEAgLTM2OSw2ICszNjksOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIGVudW0gRmluYWxPYmplY3RNb2RlIHsgTWF5QmVGaW5hbCwg
S25vd25Ob3RGaW5hbCB9OwogCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBKdW1wIGJy
YW5jaFN0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uLCBUIGxlZnRIYW5kU2lkZSwgU3RydWN0
dXJlKik7CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBib29sIGdldE9wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBj
b25zdGFudCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82
NC5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsOCArNzAsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMoSW5zCiAKICAgICBlbWl0TG9hZChyZXN1bHQsIHJl
Z1QxLCByZWdUMCk7CiAgICAgSnVtcCBub3RKU0NlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgbm90
T2JqZWN0ID0gZW1pdEp1bXBJZk5vdE9iamVjdChyZWdUMik7CisgICAgSnVtcCBub3RPYmplY3Qg
PSBlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMCk7CiAKICAgICBjaGVja1N0YWNrUG9pbnRl
ckFsaWdubWVudCgpOwogICAgIGVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC0yNjYsOCArMjY1
LDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGwoT3Bjb2RlSUQgb3Bjb2RlSQogICAgICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2FsbCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKICAgICAg
ICAgICAgIGVtaXRMb2FkKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwLCByZWdUMSk7CiAgICAgICAgICAgICBKdW1wIGRvbmUg
PSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgICAgICBzdG9yZVB0cihyZWdUMSwgaW5zdHJ1Y3Rp
b25bT1BDT0RFX0xFTkdUSChvcF9jYWxsKSAtIDJdLnUuYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZM
YXN0U2VlblN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOworICAgICAgICAgICAgc3RvcmVQ
dHIocmVnVDEsIGluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2FsbCkgLSAyXS51LmFycmF5
UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgICAgIGRv
bmUubGluayh0aGlzKTsKICAgICAgICAgfQogICAgIApAQCAtMzQyLDcgKzM0MSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGwKICAgICBKdW1wTGlzdCBzbG93Q2Fz
ZXM7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7Ci0gICAgc2xvd0Nhc2VzLmFwcGVuZChicmFu
Y2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOworICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkU3RydWN0dXJlKSkpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Z1bmN0aW9u
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSksIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRFeGVjdXRhYmxl
KSkpOwogICAgIAogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zmc2V0
T2ZTY29wZUNoYWluKCkpLCByZWdUMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw4ICsxODgsOCBAQCB2b2lkIEpJVDo6
Y29tcGlsZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBv
cF9jYWxsICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewogICAgICAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJ
bmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgICAgICBKdW1wIGRvbmUgPSBlbWl0SnVt
cElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwg
SlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAgICAgIHN0b3JlUHRy
KHJlZ1QwLCBpbnN0cnVjdGlvbltPUENPREVfTEVOR1RIKG9wX2NhbGwpIC0gMl0udS5hcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlKCkpOworICAgICAgICAgICAgbG9hZDMy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKKyAg
ICAgICAgICAgIHN0b3JlMzIocmVnVDAsIGluc3RydWN0aW9uW09QQ09ERV9MRU5HVEgob3BfY2Fs
bCkgLSAyXS51LmFycmF5UHJvZmlsZS0+YWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsK
ICAgICAgICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICAgICAgfQogICAgIApAQCAtMjYwLDcg
KzI2MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNsb3N1cmVDYWxsKENhbGwKICAgICBK
dW1wTGlzdCBzbG93Q2FzZXM7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaFRlc3RQdHIo
Tm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3RlcikpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQo
YnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbVB0cihleHBlY3RlZFN0cnVjdHVyZSkpKTsKKyAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFN0cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsKICAgICBzbG93Q2FzZXMu
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlKCkpLCBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkRXhlY3V0YWJsZSkpKTsK
ICAgICAKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTRnVuY3Rpb246Om9mZnNldE9mU2Nv
cGVDaGFpbigpKSwgcmVnVDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCB2b2lkIEpJVEJ5SWRHZW5lcmF0b3I6
OmZpbmFsaXplKExpbmtCdWZmCiAKIHZvaWQgSklUQnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0
UGF0aENoZWNrcyhNYWNyb0Fzc2VtYmxlciYgaml0LCBHUFJSZWcgYnV0dGVyZmx5KQogewotICAg
IG1fc3RydWN0dXJlQ2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKAorICAg
IG1fc3RydWN0dXJlQ2hlY2sgPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MobV9iYXNlLnBheWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0g
ICAgICAgIG1fc3RydWN0dXJlSW1tLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSkpOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhtX2Jhc2UucGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLAorICAgICAgICBtX3N0cnVjdHVyZUltbSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigwKSk7CiAgICAgCiAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkID0gaml0LmNvbnZlcnRp
YmxlTG9hZFB0cigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlLnBheWxv
YWRHUFIoKSwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgYnV0dGVyZmx5KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZVJlZ3MgbV9iYXNlOwogICAgIEpTVmFsdWVSZWdzIG1fdmFs
dWU7CiAgICAgCi0gICAgTWFjcm9Bc3NlbWJsZXI6OkRhdGFMYWJlbFB0ciBtX3N0cnVjdHVyZUlt
bTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RGF0YUxhYmVsMzIgbV9zdHJ1Y3R1cmVJbW07CiAgICAg
TWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zdHJ1Y3R1cmVDaGVjazsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q29udmVydGlibGVMb2FkTGFiZWwgbV9wcm9wZXJ0eVN0b3JhZ2VMb2FkOwog
ICAgIEFzc2VtYmxlckxhYmVsIG1fbG9hZE9yU3RvcmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRgogCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0TG9hZENoYXJhY3RlclN0cmluZyhSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcykKIHsKLSAgICBmYWlsdXJlcy5hcHBlbmQoYnJh
bmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHNyYywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1
cmVzLmFwcGVuZChicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3Moc3JjLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICBmYWlsdXJlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHNyYywgVGh1bmtIZWxwZXJzOjpqc1N0cmluZ0xlbmd0aE9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKDEpKSk7CiAgICAgbG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzcmMsIFRodW5r
SGVscGVyczo6anNTdHJpbmdWYWx1ZU9mZnNldCgpKSwgZHN0KTsKICAgICBmYWlsdXJlcy5hcHBl
bmQoYnJhbmNoVGVzdDMyKFplcm8sIGRzdCkpOwpAQCAtNTU3LDcgKzU1Nyw3IEBAIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKIAogQUxXQVlTX0lOTElORSBKSVQ6Okp1
bXAgSklUOjpjaGVja1N0cnVjdHVyZShSZWdpc3RlcklEIHJlZywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7Ci0gICAgcmV0dXJuIGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWcsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgIHJl
dHVybiBicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIEFkZHJlc3MocmVnLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklU
OjpsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyLCBpbnQgdlJlZykKQEAgLTYwNSw5ICs2MDUsOSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
SklUOjplbWl0SnVtcFNsb3dUb0hvCiAgICAganVtcC5saW5rVG8obV9sYWJlbHNbbV9ieXRlY29k
ZU9mZnNldCArIHJlbGF0aXZlT2Zmc2V0XSwgdGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklU
OjpKdW1wIEpJVDo6ZW1pdEp1bXBJZk5vdE9iamVjdChSZWdpc3RlcklEIHN0cnVjdHVyZVJlZykK
K0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkNlbGxOb3RPYmplY3QoUmVn
aXN0ZXJJRCBjZWxsUmVnKQogewotICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNzKHN0
cnVjdHVyZVJlZywgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0z
MihPYmplY3RUeXBlKSk7CisgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJl
ZywgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7CiB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC02NzgsMTEgKzY3OCwxMSBA
QCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBbGxvY2F0ZUpTT2JqZWN0KFJlCiAgICAgbG9hZFB0cihB
ZGRyZXNzKHJlc3VsdCksIHNjcmF0Y2gpOwogICAgIHN0b3JlUHRyKHNjcmF0Y2gsIEFkZHJlc3Mo
YWxsb2NhdG9yLCBNYXJrZWRBbGxvY2F0b3I6Om9mZnNldE9mRnJlZUxpc3RIZWFkKCkpKTsKIAot
ICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0cnVjdHVyZQotICAgIHN0b3JlUHRyKHN0
cnVjdHVyZSwgQWRkcmVzcyhyZXN1bHQsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKLQog
ICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlcgog
ICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEFkZHJlc3MocmVzdWx0LCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpKTsKKworICAgIC8vIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIHN0
cnVjdHVyZQorICAgIGVtaXRTdG9yZVN0cnVjdHVyZVdpdGhUeXBlSW5mbyhzdHJ1Y3R1cmUsIHJl
c3VsdCwgc2NyYXRjaCk7CiB9CiAKIGlubGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSkKQEAgLTcxOCwyMiArNzE4LDE5IEBAIGlu
bGluZSB2b2lkIEpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgKICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKG1fYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRB
cnJheVByb2ZpbGluZ1NpdGUoUmVnaXN0ZXJJRCBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUsIFJl
Z2lzdGVySUQgc2NyYXRjaCwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUpCitpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChSZWdpc3RlcklEIGNlbGwsIFJl
Z2lzdGVySUQgaW5kZXhpbmdUeXBlLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oc2NyYXRjaCk7IC8vIFdlIGhhZCBmb3VuZCB0aGlzIHNjcmF0Y2ggcmVn
aXN0ZXIgdXNlZnVsIGhlcmUgYmVmb3JlLCBzbyBJIHdpbGwga2VlcCBpdCBmb3Igbm93LgotICAg
IAotICAgIFJlZ2lzdGVySUQgc3RydWN0dXJlID0gc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlOwot
ICAgIFJlZ2lzdGVySUQgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBlOwot
ICAgIAotICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpCi0gICAgICAgIHN0b3JlUHRyKHN0
cnVjdHVyZSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZSgpKTsKKyAg
ICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhjZWxsLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBpbmRleGlu
Z1R5cGUpOworICAgICAgICBzdG9yZTMyKGluZGV4aW5nVHlwZSwgYXJyYXlQcm9maWxlLT5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgIH0KIAotICAgIGxvYWQ4KEFkZHJlc3Mo
c3RydWN0dXJlLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgaW5kZXhpbmdUeXBl
KTsKKyAgICBsb2FkOChBZGRyZXNzKGNlbGwsIEpTQ2VsbDo6aW5kZXhpbmdUeXBlT2Zmc2V0KCkp
LCBpbmRleGluZ1R5cGUpOwogfQogCi1pbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVGb3JCeXRlY29kZUluZGV4KFJlZ2lzdGVySUQgc3RydWN0dXJlQW5kSW5kZXhpbmdUeXBl
LCBSZWdpc3RlcklEIHNjcmF0Y2gsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitpbmxpbmUgdm9p
ZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4V2l0aENlbGwoUmVn
aXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIGluZGV4aW5nVHlwZSwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKIHsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHN0cnVjdHVyZUFuZEluZGV4aW5n
VHlwZSwgc2NyYXRjaCwgbV9jb2RlQmxvY2stPmdldE9yQWRkQXJyYXlQcm9maWxlKGJ5dGVjb2Rl
SW5kZXgpKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwoY2VsbCwgaW5kZXhp
bmdUeXBlLCBtX2NvZGVCbG9jay0+Z2V0T3JBZGRBcnJheVByb2ZpbGUoYnl0ZWNvZGVJbmRleCkp
OwogfQogCiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRBcnJheVByb2ZpbGVTdG9yZVRvSG9sZVNwZWNp
YWxDYXNlKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlKQpAQCAtMTA4Miw2ICsxMDc5LDI2IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW0KIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSklUOjpKdW1wIEpJVDo6
YnJhbmNoU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uLCBUIGxlZnRIYW5k
U2lkZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0SGFuZFNpZGUsIFRydXN0ZWRJbW0zMihzdHJ1
Y3R1cmUtPmlkKCkpKTsKKyNlbHNlCisgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kaXRpb24sIGxl
ZnRIYW5kU2lkZSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK01hY3JvQXNzZW1ibGVyOjpKdW1wIGJyYW5jaFN0cnVjdHVyZShN
YWNyb0Fzc2VtYmxlciYgaml0LCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kaXRpb24sIFQgbGVmdEhhbmRTaWRlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgIHJldHVybiBqaXQuYnJhbmNoMzIoY29uZGl0aW9uLCBsZWZ0SGFu
ZFNpZGUsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7Cisj
ZWxzZQorICAgIHJldHVybiBqaXQuYnJhbmNoUHRyKGNvbmRpdGlvbiwgbGVmdEhhbmRTaWRlLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyNlbmRpZgorfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ3
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMCw4ICsyMTAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jaGVja19o
YXNfaW5zdGFuY2UoSW5zCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2VWYWwp
OwogICAgIAogICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAnSW1wbGVtZW50c0hhc0luc3RhbmNl
Jy4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdU
MCwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0OCha
ZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlKSkpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0y
MzAsOCArMjI5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5zdGFuY2VvZihJbnN0cnVjdGlvbgog
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChwcm90byk7CiAgICAgCiAgICAgLy8gQ2hl
Y2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qx
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDMpOwotICAgIGFkZFNsb3dDYXNlKGVt
aXRKdW1wSWZOb3RPYmplY3QocmVnVDMpKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmQ2Vs
bE5vdE9iamVjdChyZWdUMSkpOwogCiAgICAgLy8gT3B0aW1pc3RpY2FsbHkgbG9hZCB0aGUgcmVz
dWx0IHRydWUsIGFuZCBzdGFydCBsb29waW5nLgogICAgIC8vIEluaXRpYWxseSwgcmVnVDEgc3Rp
bGwgY29udGFpbnMgcHJvdG8gYW5kIHJlZ1QyIHN0aWxsIGNvbnRhaW5zIHZhbHVlLgpAQCAtMjQx
LDcgKzIzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24KIAog
ICAgIC8vIExvYWQgdGhlIHByb3RvdHlwZSBvZiB0aGUgY2VsbCBpbiByZWdUMi4gIElmIHRoaXMg
aXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAgICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpZiB3ZSd2
ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhlbiBkcm9wIG91dCBvZiB0aGUgbG9vcCwgaWYgbm90
IGdvIGFnYWluLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgU3Ry
dWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFz
Qml0cy5wYXlsb2FkKSksIHJlZ1QyKTsKICAgICBKdW1wIGlzSW5zdGFuY2UgPSBicmFuY2hQdHIo
RXF1YWwsIHJlZ1QyLCByZWdUMSk7CiAgICAgYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QyKS5s
aW5rVG8obG9vcCwgdGhpcyk7CkBAIC0yOTcsMTIgKzI5NSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pc191bmRlZmluZWQoSW5zdHJ1Y3RpCiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAog
ICAgIGlzQ2VsbC5saW5rKHRoaXMpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDEsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5v
blplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRydXN0ZWRJbW0z
MigwKSwgcmVnVDApOwogICAgIEp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGp1bXAo
KTsKICAgICAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1Qx
KTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHJlZ1QxKTsKICAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QwLCByZWdUMSwg
cmVnVDApOwpAQCAtMzQxLDggKzMzOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3N0cmluZyhJ
bnN0cnVjdGlvbioKICAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBKdW1w
IGlzTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkNlbGxUYWcpKTsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6
c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3Mo
cmVnVDEsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3Ry
aW5nVHlwZSksIHJlZ1QwKTsKKyAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVn
VDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAKICAgICBpc05vdENlbGwubGluayh0
aGlzKTsKQEAgLTM4MSw3ICszNzgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUo
SW5zdHJ1Y3RpCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwogCiAgICAgSnVtcCBp
c0ltbSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWws
IEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1Q
dHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOwogICAgIGlzSW1tLmxpbmsodGhpcyk7
CiAKICAgICBpZiAoZHN0ICE9IHNyYykKQEAgLTUwMSw5ICs0OTgsOCBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9qZXFfbnVsbChJbnN0cnVjdGlvbiogCiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwog
Ci0gICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBjaGVjayBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJy
YW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDAp
OwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJnZXQpOwogICAgIEp1bXAgbWFzcXVl
cmFkZXNHbG9iYWxPYmplY3RJc0ZvcmVpZ24gPSBqdW1wKCk7CkBAIC01MjcsOSArNTIzLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKEluc3RydWN0aW9uKgogCiAgICAgSnVtcCBpc0lt
bWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKIAotICAgIC8vIEZpcnN0LCBoYW5kbGUgSlNDZWxsIGNhc2VzIC0gY2hlY2sg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCBiaXQgb24gdGhlIHN0cnVjdHVyZS4KLSAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAg
YWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnR5cGVJ
bmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSks
IHRhcmdldCk7CisgICAgYWRkSnVtcChicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKSksIHRhcmdldCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIHJlZ1QwKSwgdGFyZ2V0KTsKICAgICBKdW1wIHdhc05vdEltbWVkaWF0ZSA9IGp1bXAoKTsK
QEAgLTU4Myw4ICs1NzgsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24q
IGN1CiAgICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGdldFNsb3dDYXNlKGl0ZXIpKTsgLy8gdGFncyBu
b3QgZXF1YWwKIAogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gdGFncyBlcXVhbCBhbmQgSlND
ZWxsCi0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOwotICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBnZW5lcmljQ2Fz
ZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkpKTsKKyAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNz
KHJlZ1QyLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0t
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKIAogICAgIC8vIFN0cmluZyBjYXNlLgogICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCByZWdUMCwgcmVnVDIpOwpAQCAt
NjI3LDggKzYyMiw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1Y3Rpb24qIGMK
ICAgICBnZW5lcmljQ2FzZS5hcHBlbmQoZ2V0U2xvd0Nhc2UoaXRlcikpOyAvLyB0YWdzIG5vdCBl
cXVhbAogCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyB0YWdzIGVxdWFsIGFuZCBKU0NlbGwK
LSAgICBnZW5lcmljQ2FzZS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1Qw
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7Ci0gICAgZ2VuZXJpY0Nhc2UuYXBwZW5kKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRydXN0ZWRJ
bW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGdlbmVyaWNDYXNlLmFw
cGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkp
OworICAgIGdlbmVyaWNDYXNlLmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVn
VDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIobV92bS0+c3Ry
aW5nU3RydWN0dXJlLmdldCgpKSkpOwogCiAgICAgLy8gU3RyaW5nIGNhc2UuCiAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIHJlZ1QwLCByZWdUMik7CkBAIC02NTgs
OCArNjUzLDggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKgogCiAg
ICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBib3RoIGFyZSBzdHJpbmdzLgogICAgIEp1bXAg
bm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKTsKLSAgICBKdW1wIGZpcnN0Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0
cihtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQ
dHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBKdW1wIGZpcnN0
Tm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBUcnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhyZWdUMiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJpbmdT
dHJ1Y3R1cmUuZ2V0KCkpKSk7CiAgICAgbm90Q2VsbC5saW5rKHRoaXMpOwogICAgIGZpcnN0Tm90
U3RyaW5nLmxpbmsodGhpcyk7CiAKQEAgLTcxMCwxMiArNzA1LDEyIEBAIHZvaWQgSklUOjplbWl0
X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qIGMKICAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdU
MCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBKdW1wIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5jaFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDIsIFN0
cnVjdHVyZTo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpKTsKKyAgICBKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IGJyYW5j
aFRlc3Q4KE5vblplcm8sIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKTsKICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgcmVnVDEpOwogICAgIEp1bXAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IGp1bXAoKTsKIAogICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgcmVnVDIpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkpLCByZWdUMCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDIpOwogICAgIGNvbXBhcmUzMihFcXVhbCwgcmVnVDAs
IHJlZ1QyLCByZWdUMSk7CkBAIC03NDEsMTIgKzczNiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwog
ICAgIEp1bXAgaXNJbW1lZGlhdGUgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgSnVtcCBpc01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1
cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0
OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tMzIoMSksIHJlZ1QxKTsKICAgICBKdW1wIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
Z1QyKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjb21wYXJlMzIoTm90RXF1YWwsIHJlZ1QwLCBy
ZWdUMiwgcmVnVDEpOwpAQCAtNzg1LDEwICs3ODAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRf
cG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAg
ICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQogICAgICAgICBp
c05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGJhc2UpICE9IG1f
Y29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
IHsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgcmVnVDIpOwotICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoZW1pdEp1bXBJZk5vdE9i
amVjdChyZWdUMikpOwotICAgIH0KKyAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGJhc2UpICE9IG1f
Y29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
CisgICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdU
MCkpOwogCiAgICAgLy8gV2UgY291bGQgaW5saW5lIHRoZSBjYXNlIHdoZXJlIHlvdSBoYXZlIGEg
dmFsaWQgY2FjaGUsIGJ1dAogICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0IHNlZW0gdG8gYmUgaG90
LgpAQCAtODQxLDcgKzgzNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRfcG5hbWUoSW5zdHJ1
Y3Rpb24KICAgICBsb2FkUHRyKHBheWxvYWRGb3IoYmFzZSksIHJlZ1QwKTsKIAogICAgIC8vIFRl
c3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjYWxsSGFzUHJvcGVydHku
YXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwg
T0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJl
KSkpKSk7CiAKICAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KQEAgLTg1Miw3ICs4
NDUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXh0X3BuYW1lKEluc3RydWN0aW9uCiAgICAgTGFi
ZWwgY2hlY2tQcm90b3R5cGUodGhpcyk7CiAgICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFu
Y2gzMihFcXVhbCwgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6Ok51bGxUYWcpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6
OnByb3RvdHlwZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVnVDIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBw
ZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMpKSk7CiAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7CiAgICAgYnJhbmNo
VGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNrUHJvdG90eXBlLCB0
aGlzKTsKQEAgLTEwOTEsOCArMTA4NCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoSW5z
dHJ1Y3Rpb24qIGMKICAgICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CiAK
ICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSkpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBhZGRTbG93Q2FzZShicmFuY2g4KE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1
c3RlZEltbTMyKEZpbmFsT2JqZWN0VHlwZSkpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKGNhY2hl
ZFN0cnVjdHVyZSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QyKSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jaGVja19oYXNfaW5zdGFuY2UoSW5zCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKHJlZ1QwLCBiYXNlVmFsKTsKIAogICAgIC8vIENoZWNrIHRoYXQgYmFzZVZhbCAn
SW1wbGVtZW50c0hhc0luc3RhbmNlJy4KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVz
dDgoWmVybywgQWRkcmVzcyhyZWdUMCwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKKyAgICBhZGRT
bG93Q2FzZShicmFuY2hUZXN0OChaZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZv
RmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
KSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9pbnN0YW5jZW9mKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCkBAIC0xMzgsOCArMTM3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5z
dGFuY2VvZihJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdU
MSwgcHJvdG8pOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0Ci0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVn
VDMpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RPYmplY3QocmVnVDMpKTsKKyAgICBh
ZGRTbG93Q2FzZShlbWl0SnVtcElmQ2VsbE5vdE9iamVjdChyZWdUMSkpOwogICAgIAogICAgIC8v
IE9wdGltaXN0aWNhbGx5IGxvYWQgdGhlIHJlc3VsdCB0cnVlLCBhbmQgc3RhcnQgbG9vcGluZy4K
ICAgICAvLyBJbml0aWFsbHksIHJlZ1QxIHN0aWxsIGNvbnRhaW5zIHByb3RvIGFuZCByZWdUMiBz
dGlsbCBjb250YWlucyB2YWx1ZS4KQEAgLTE0OSw3ICsxNDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pbnN0YW5jZW9mKEluc3RydWN0aW9uCiAKICAgICAvLyBMb2FkIHRoZSBwcm90b3R5cGUgb2Yg
dGhlIG9iamVjdCBpbiByZWdUMi4gIElmIHRoaXMgaXMgZXF1YWwgdG8gcmVnVDEgLSBXSU4hCiAg
ICAgLy8gT3RoZXJ3aXNlLCBjaGVjayBpZiB3ZSd2ZSBoaXQgbnVsbCAtIGlmIHdlIGhhdmUgdGhl
biBkcm9wIG91dCBvZiB0aGUgbG9vcCwgaWYgbm90IGdvIGFnYWluLgotICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBlbWl0
TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QzKTsKICAgICBsb2FkNjQoQWRkcmVzcyhy
ZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1QyKTsKICAgICBKdW1wIGlz
SW5zdGFuY2UgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCByZWdUMSk7CiAgICAgZW1pdEp1bXBJ
ZkpTQ2VsbChyZWdUMikubGlua1RvKGxvb3AsIHRoaXMpOwpAQCAtMTc0LDEyICsxNzIsMTIgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKEluc3RydWN0aQogICAgIEp1bXAgZG9uZSA9
IGp1bXAoKTsKICAgICAKICAgICBpc0NlbGwubGluayh0aGlzKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgSnVtcCBp
c01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJl
Z1QxLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSk7CisgICAgSnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBicmFuY2hUZXN0OChOb25aZXJvLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnR5cGVJbmZvRmxh
Z3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSk7CiAgICAg
bW92ZShUcnVzdGVkSW1tMzIoMCksIHJlZ1QwKTsKICAgICBKdW1wIG5vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgPSBqdW1wKCk7CiAKICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0
aGlzKTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgcmVnVDApOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIHJlZ1QxKTsKICAgICBjb21wYXJlUHRyKEVxdWFsLCByZWdUMCwgcmVnVDEsIHJlZ1QwKTsK
QEAgLTIyMSw4ICsyMTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19zdHJpbmcoSW5zdHJ1Y3Rp
b24qCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAg
aXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAgICAgCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDEpOwotICAg
IGNvbXBhcmU4KEVxdWFsLCBBZGRyZXNzKHJlZ1QxLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpLCByZWdUMCk7CisgICAgY29tcGFyZTgo
RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1QwKTsKICAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRl
KHJlZ1QwKTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCkBAIC0yNzcsOCArMjc0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKElucwogICAgIC8vIFJldHVy
biB0aGUgcmVzdWx0IGluICVlYXguCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiAgICAgSnVtcCBub3RK
U0NlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJldHVyblZhbHVlR1BSKTsKLSAgICBsb2FkUHRy
KEFkZHJlc3MocmV0dXJuVmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdU
Mik7Ci0gICAgSnVtcCBub3RPYmplY3QgPSBlbWl0SnVtcElmTm90T2JqZWN0KHJlZ1QyKTsKKyAg
ICBKdW1wIG5vdE9iamVjdCA9IGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJldHVyblZhbHVlR1BS
KTsKIAogICAgIC8vIFJldHVybi4KICAgICBlbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwpAQCAtMzAy
LDcgKzI5OCw5IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3ByaW1pdGl2ZShJbnN0cnVjdGkKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHNyYywgcmVnVDApOwogICAgIAogICAgIEp1bXAgaXNJ
bW0gPSBlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQ
dHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKKyAgICBhZGRTbG93
Q2FzZShicmFuY2hTdHJ1Y3R1cmUoTm90RXF1YWwsIAorICAgICAgICBBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCAKKyAgICAgICAgbV92bS0+c3RyaW5nU3RydWN0
dXJlLmdldCgpKSk7CiAgICAgaXNJbW0ubGluayh0aGlzKTsKIAogICAgIGlmIChkc3QgIT0gc3Jj
KQpAQCAtMzUzLDggKzM1MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2plcV9udWxsKEluc3RydWN0
aW9uKiAKICAgICBKdW1wIGlzSW1tZWRpYXRlID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7
CiAKICAgICAvLyBGaXJzdCwgaGFuZGxlIEpTQ2VsbCBjYXNlcyAtIGNoZWNrIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgYml0IG9uIHRoZSBzdHJ1Y3R1cmUuCi0gICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCkpOworICAgIEp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
YnJhbmNoVGVzdDgoWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOworICAgIGVtaXRM
b2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVnVDEpOwogICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFu
Y2hQdHIoRXF1YWwsIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCByZWdUMCksIHRhcmdldCk7CiAgICAgSnVtcCBtYXNxdWVyYWRlc0dsb2JhbE9iamVjdElz
Rm9yZWlnbiA9IGp1bXAoKTsKQEAgLTM3Niw4ICszNzQsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
bmVxX251bGwoSW5zdHJ1Y3Rpb24qCiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZO
b3RKU0NlbGwocmVnVDApOwogCiAgICAgLy8gRmlyc3QsIGhhbmRsZSBKU0NlbGwgY2FzZXMgLSBj
aGVjayBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIGJpdCBvbiB0aGUgc3RydWN0dXJlLgotICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKTsK
LSAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6
dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQpKSwgdGFyZ2V0KTsKKyAgICBhZGRKdW1wKGJyYW5jaFRlc3Q4KFplcm8sIEFkZHJlc3MocmVn
VDAsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKSwgdGFyZ2V0KTsKKyAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMCwg
cmVnVDIsIHJlZ1QxKTsKICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpKSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRy
ZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVnVDApLCB0YXJn
ZXQpOwogICAgIEp1bXAgd2FzTm90SW1tZWRpYXRlID0ganVtcCgpOwpAQCAtNDcyLDEwICs0NzAs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKEluc3RydWN0aW9uCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CiAgICAgaWYgKCFtX2NvZGVCbG9jay0+aXNL
bm93bk5vdEltbWVkaWF0ZShiYXNlKSkKICAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApKTsKLSAgICBpZiAoYmFzZSAhPSBtX2NvZGVCbG9jay0+dGhp
c1JlZ2lzdGVyKCkub2Zmc2V0KCkgfHwgbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0g
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSks
IHJlZ1QyKTsKLSAgICAgICAgaXNOb3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZOb3RPYmplY3Qo
cmVnVDIpKTsKLSAgICB9CisgICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3Rl
cigpLm9mZnNldCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgaXNO
b3RPYmplY3QuYXBwZW5kKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7CiAKICAgICAv
LyBXZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwg
YnV0CiAgICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCkBAIC01MjksNyAr
NTI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbgogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOwogCiAgICAgLy8gVGVzdCBiYXNlJ3Mg
c3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9m
ZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJlKHJlZ1QwLCByZWdUMiwgcmVn
VDMpOwogICAgIGNhbGxIYXNQcm9wZXJ0eS5hcHBlbmQoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdU
MiwgQWRkcmVzcyhBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpKTsKIAogICAgIC8vIFRlc3QgYmFzZSdzIHBy
b3RvdHlwZSBjaGFpbgpAQCAtNTQwLDcgKzUzNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX25leHRf
cG5hbWUoSW5zdHJ1Y3Rpb24KICAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKICAgICBs
b2FkNjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1Qy
KTsKICAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDIp
KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCByZWdUMik7CisgICAgZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDIsIHJlZ1QyLCByZWdUMSk7CiAg
ICAgY2FsbEhhc1Byb3BlcnR5LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRy
ZXNzKHJlZ1QzKSkpOwogICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0cnVjdHVyZSop
KSwgcmVnVDMpOwogICAgIGJyYW5jaFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhyZWdUMykpLmxp
bmtUbyhjaGVja1Byb3RvdHlwZSwgdGhpcyk7CkBAIC03MTAsMTIgKzcwNiwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9lcV9udWxsKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRKdW1wSWZOb3RK
U0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
ID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjp0eXBlSW5m
b0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwor
ICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywg
QWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZEltbTMyKDApLCBy
ZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0ganVtcCgpOwog
CiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAgZW1pdExvYWRT
dHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7CiAgICAgY29t
cGFyZVB0cihFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC03NDIsMTIgKzczOCwxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihzcmMxLCByZWdUMCk7CiAgICAgSnVtcCBpc0ltbWVkaWF0ZSA9IGVtaXRK
dW1wSWZOb3RKU0NlbGwocmVnVDApOwogCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOwotICAgIEp1bXAgaXNNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gYnJhbmNoVGVzdDgoTm9uWmVybywgQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJl
Ojp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCkpOworICAgIEp1bXAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gYnJhbmNoVGVzdDgo
Tm9uWmVybywgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpOwogICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDEpLCByZWdUMCk7CiAgICAgSnVtcCB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
anVtcCgpOwogCiAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CisgICAg
ZW1pdExvYWRTdHJ1Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMSk7CiAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIHJlZ1QwKTsKICAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZWdUMik7
CiAgICAgY29tcGFyZVB0cihOb3RFcXVhbCwgcmVnVDAsIHJlZ1QyLCByZWdUMCk7CkBAIC04MTUs
MTEgKzgxMSwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKiBjCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwotICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1Qw
KTsKIAotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIFN0
cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RU
eXBlKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEs
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoRmluYWxPYmplY3RU
eXBlKSkpOwogICAgIGxvYWRQdHIoY2FjaGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xv
d0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QyKSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIs
IFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBhZGRTbG93Q2Fz
ZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9m
ZnNldCgpKSwgcmVnVDIpKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2NhbGxlZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpAQCAtODkzLDYgKzg5MCw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd19vcF90b190aGlzKEluc3RydWN0aW8KICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKKyAgICBs
aW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3RvX3RoaXMpOwogICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVhbGxvY2F0ZVN0CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAg
ICBBU1NFUlQoc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpID4gYmFzZS0+c3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCkgPiBiYXNlLT5zdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsK
ICAgICBBU1NFUlQoIXZtLmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpLmZhc3RQYXRoU2hvdWxkU3Vj
Y2VlZChzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBzaXplb2YoSlNWYWx1ZSkpKTsK
ICAgICBiYXNlLT5zZXRTdHJ1Y3R1cmVBbmRSZWFsbG9jYXRlU3RvcmFnZUlmTmVjZXNzYXJ5KHZt
LCBzdHJ1Y3R1cmUpOwogICAgIGJhc2UtPnB1dERpcmVjdCh2bSwgb2Zmc2V0LCBKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUpKTsKQEAgLTQ0Nyw2ICs0NDcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUmVhbGxvY2F0ZVN0CiAKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFs
dWUpCiB7CisgICAgVk0mIHZtID0gY2FsbEZyYW1lLT52bSgpOwogICAgIGlmIChMSUtFTFkoc3Vi
c2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNV
SW50MzIoKTsKICAgICAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC00NTQsNyAr
NDU1LDcgQEAgc3RhdGljIHZvaWQgcHV0QnlWYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbQogICAgICAg
ICAgICAgaWYgKG9iamVjdC0+Y2FuU2V0SW5kZXhRdWlja2x5KGkpKQogICAgICAgICAgICAgICAg
IG9iamVjdC0+c2V0SW5kZXhRdWlja2x5KGNhbGxGcmFtZS0+dm0oKSwgaSwgdmFsdWUpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0
QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxl
KHZtKS0+cHV0QnlJbmRleChvYmplY3QsIGNhbGxGcmFtZSwgaSwgdmFsdWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBiYXNlVmFsdWUucHV0QnlJbmRleChjYWxsRnJhbWUsIGksIHZhbHVlLCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgfSBlbHNlIGlmIChpc05hbWUoc3Vic2Ny
aXB0KSkgewpAQCAtNTA0LDkgKzUwNSw5IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbChFeGUKICAgICAgICAgQnlWYWxJbmZvJiBieVZhbEluZm8gPSBleGVjLT5jb2RlQmxv
Y2soKS0+Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCgh
YnlWYWxJbmZvLnN0dWJSb3V0aW5lKTsKIAotICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRl
eGluZyhvYmplY3QtPnN0cnVjdHVyZSgpKSkgeworICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJ
bmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSh2bSkpKSB7CiAgICAgICAgICAgICAvLyBBdHRlbXB0
IHRvIG9wdGltaXplLgotICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFy
cmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIEpJ
VEFycmF5TW9kZSBhcnJheU1vZGUgPSBqaXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5z
dHJ1Y3R1cmUodm0pKTsKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUgIT0gYnlWYWxJbmZvLmFy
cmF5TW9kZSkgewogICAgICAgICAgICAgICAgIEpJVDo6Y29tcGlsZVB1dEJ5VmFsKCZ2bSwgZXhl
Yy0+Y29kZUJsb2NrKCksICZieVZhbEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9B
RERSRVNTKSwgYXJyYXlNb2RlKTsKICAgICAgICAgICAgICAgICBkaWRPcHRpbWl6ZSA9IHRydWU7
CkBAIC01MjAsNyArNTIxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
KEV4ZQogICAgICAgICAgICAgLy8gd2hlcmUgd2Ugc2VlIG5vbi1pbmRleC1pbnRlcmNlcHRpbmcg
b2JqZWN0cywgdGhpcyBnaXZlcyAxMCBpdGVyYXRpb25zIHdvcnRoIG9mCiAgICAgICAgICAgICAv
LyBvcHBvcnR1bml0eSBmb3IgdXMgdG8gb2JzZXJ2ZSB0aGF0IHRoZSBnZXRfYnlfdmFsIG1heSBi
ZSBwb2x5bW9ycGhpYy4KICAgICAgICAgICAgIGlmICgrK2J5VmFsSW5mby5zbG93UGF0aENvdW50
ID49IDEwCi0gICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5pbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvKCkpIHsKKyAgICAgICAgICAgICAgICB8fCBvYmplY3QtPnN0cnVjdHVyZSh2bSktPnR5cGVJ
bmZvKCkuaW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElz
Tm90WmVybygpKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1p
emUuCiAgICAgICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKGV4ZWMtPmNv
ZGVCbG9jaygpKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRv
RnVuY3Rpb24oUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBGdW5jdGlvblB0
cihvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKQEAgLTU1MCw5ICs1NTEsOSBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWCiAgICAgICAgIEJ5VmFsSW5mbyYgYnlW
YWxJbmZvID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Z2V0QnlWYWxJbmZvKGJ5dGVjb2RlT2Zm
c2V0IC0gMSk7CiAgICAgICAgIEFTU0VSVCghYnlWYWxJbmZvLnN0dWJSb3V0aW5lKTsKICAgICAg
ICAgCi0gICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0dXJl
KCkpKSB7CisgICAgICAgIGlmIChoYXNPcHRpbWl6YWJsZUluZGV4aW5nKG9iamVjdC0+c3RydWN0
dXJlKHZtKSkpIHsKICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gb3B0aW1pemUuCi0gICAgICAg
ICAgICBKSVRBcnJheU1vZGUgYXJyYXlNb2RlID0gaml0QXJyYXlNb2RlRm9yU3RydWN0dXJlKG9i
amVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9
IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpOwogICAgICAg
ICAgICAgaWYgKGFycmF5TW9kZSAhPSBieVZhbEluZm8uYXJyYXlNb2RlKSB7CiAgICAgICAgICAg
ICAgICAgSklUOjpjb21waWxlRGlyZWN0UHV0QnlWYWwoJnZtLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLCAmYnlWYWxJbmZvLCBSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIGFy
cmF5TW9kZSk7CiAgICAgICAgICAgICAgICAgZGlkT3B0aW1pemUgPSB0cnVlOwpAQCAtNTY2LDcg
KzU2Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVYKICAgICAg
ICAgICAgIC8vIHdoZXJlIHdlIHNlZSBub24taW5kZXgtaW50ZXJjZXB0aW5nIG9iamVjdHMsIHRo
aXMgZ2l2ZXMgMTAgaXRlcmF0aW9ucyB3b3J0aCBvZgogICAgICAgICAgICAgLy8gb3Bwb3J0dW5p
dHkgZm9yIHVzIHRvIG9ic2VydmUgdGhhdCB0aGUgZ2V0X2J5X3ZhbCBtYXkgYmUgcG9seW1vcnBo
aWMuCiAgICAgICAgICAgICBpZiAoKytieVZhbEluZm8uc2xvd1BhdGhDb3VudCA+PSAxMAotICAg
ICAgICAgICAgICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW50ZXJjZXB0
c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybygpKSB7Cisg
ICAgICAgICAgICAgICAgfHwgb2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpLmludGVy
Y2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkg
ewogICAgICAgICAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAg
ICAgICAgICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcihjYWxsRnJhbWUtPmNvZGVCbG9j
aygpKTsKICAgICAgICAgICAgICAgICByZXBhdGNoQnVmZmVyLnJlbGlua0NhbGxlclRvRnVuY3Rp
b24oUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpLCBGdW5jdGlvblB0cihvcGVy
YXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMpKTsKQEAgLTc4MSwxMSArNzgyLDEyIEBAIHN0YXRp
YyBib29sIGF0dGVtcHRUb09wdGltaXplQ2xvc3VyZUNhbGwKICAgICBpZiAoIWNhbGxlZUFzRnVu
Y3Rpb25DZWxsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCisgICAgVk0mIHZtID0gZXhl
Y0NhbGxlZS0+dm0oKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKICAgICBKU0Z1bmN0aW9uKiBvbGRDYWxsZWUgPSBj
YWxsTGlua0luZm8uY2FsbGVlLmdldCgpOwogICAgIAogICAgIGlmICghb2xkQ2FsbGVlCi0gICAg
ICAgIHx8IG9sZENhbGxlZS0+c3RydWN0dXJlKCkgIT0gY2FsbGVlLT5zdHJ1Y3R1cmUoKQorICAg
ICAgICB8fCBvbGRDYWxsZWUtPnN0cnVjdHVyZSh2bSkgIT0gY2FsbGVlLT5zdHJ1Y3R1cmUodm0p
CiAgICAgICAgIHx8IG9sZENhbGxlZS0+ZXhlY3V0YWJsZSgpICE9IGNhbGxlZS0+ZXhlY3V0YWJs
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0xMzYxLDIyICsxMzYzLDIyIEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Qcm9maWxlV2lsbEMKIAogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DaGVja0hhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZVZhbCkKIHsKLSAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWwg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2VWYWwpOwogCiAgICAgaWYgKGJhc2VWYWwuaXNP
YmplY3QoKSkgewogICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWwpOwotICAgICAgICBBU1NFUlQoIWJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
LmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSk7Ci0gICAgICAgIGlmIChiYXNlT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgewotICAg
ICAgICAgICAgYm9vbCByZXN1bHQgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5jdXN0b21I
YXNJbnN0YW5jZShiYXNlT2JqZWN0LCBleGVjLCB2YWx1ZSk7CisgICAgICAgIEFTU0VSVCghYmFz
ZU9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlKCkpOworICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUlu
Zm8oKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkgeworICAgICAgICAgICAgYm9vbCByZXN1bHQg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKGJhc2VPYmpl
Y3QsIGV4ZWMsIHZhbHVlKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKHJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgdm0tPnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZUludmFsaWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIs
IGJhc2VWYWwpKTsKKyAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkUGFy
YW1ldGVyRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogfQogCkBAIC0xNDY3LDkgKzE0NjksOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgIEJ5VmFsSW5mbyYg
YnlWYWxJbmZvID0gZXhlYy0+Y29kZUJsb2NrKCktPmdldEJ5VmFsSW5mbyhieXRlY29kZU9mZnNl
dCAtIDEpOwogICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby5zdHViUm91dGluZSk7CiAgICAgICAg
IAotICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVyZSgp
KSkgeworICAgICAgICBpZiAoaGFzT3B0aW1pemFibGVJbmRleGluZyhvYmplY3QtPnN0cnVjdHVy
ZSh2bSkpKSB7CiAgICAgICAgICAgICAvLyBBdHRlbXB0IHRvIG9wdGltaXplLgotICAgICAgICAg
ICAgSklUQXJyYXlNb2RlIGFycmF5TW9kZSA9IGppdEFycmF5TW9kZUZvclN0cnVjdHVyZShvYmpl
Y3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIEpJVEFycmF5TW9kZSBhcnJheU1vZGUgPSBq
aXRBcnJheU1vZGVGb3JTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsKICAgICAgICAg
ICAgIGlmIChhcnJheU1vZGUgIT0gYnlWYWxJbmZvLmFycmF5TW9kZSkgewogICAgICAgICAgICAg
ICAgIEpJVDo6Y29tcGlsZUdldEJ5VmFsKCZ2bSwgZXhlYy0+Y29kZUJsb2NrKCksICZieVZhbElu
Zm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSwgYXJyYXlNb2RlKTsKICAg
ICAgICAgICAgICAgICBkaWRPcHRpbWl6ZSA9IHRydWU7CkBAIC0xNDgzLDcgKzE0ODUsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgICAgICAgICAvLyB3
aGVyZSB3ZSBzZWUgbm9uLWluZGV4LWludGVyY2VwdGluZyBvYmplY3RzLCB0aGlzIGdpdmVzIDEw
IGl0ZXJhdGlvbnMgd29ydGggb2YKICAgICAgICAgICAgIC8vIG9wcG9ydHVuaXR5IGZvciB1cyB0
byBvYnNlcnZlIHRoYXQgdGhlIGdldF9ieV92YWwgbWF5IGJlIHBvbHltb3JwaGljLgogICAgICAg
ICAgICAgaWYgKCsrYnlWYWxJbmZvLnNsb3dQYXRoQ291bnQgPj0gMTAKLSAgICAgICAgICAgICAg
ICB8fCBvYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLmludGVyY2VwdHNHZXRPd25Qcm9w
ZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8oKSkgeworICAgICAgICAgICAg
ICAgIHx8IG9iamVjdC0+c3RydWN0dXJlKHZtKS0+dHlwZUluZm8oKS5pbnRlcmNlcHRzR2V0T3du
UHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvKCkpIHsKICAgICAgICAg
ICAgICAgICAvLyBEb24ndCBldmVyIHRyeSB0byBvcHRpbWl6ZS4KICAgICAgICAgICAgICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICAg
ICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rQ2FsbGVyVG9GdW5jdGlvbihSZXR1cm5BZGRyZXNz
UHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIEZ1bmN0aW9uUHRyKG9wZXJhdGlvbkdldEJ5VmFsR2Vu
ZXJpYykpOwpAQCAtMTU0Nyw3ICsxNTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZQogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVj
KTsKIAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNl
KS50b09iamVjdChleGVjKTsKLSAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwgZXhlYywgKmlkZW50aWZpZXIpOworICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3Bl
cnR5KGJhc2VPYmosIGV4ZWMsICppZGVudGlmaWVyKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSk7CiAgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCiAgICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CkBA
IC0xNTU5LDcgKzE1NjEsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UE5h
bWVzCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iai0+c3Ry
dWN0dXJlKCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmotPnN0cnVjdHVyZSh2bSk7
CiAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0
cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOwogICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVy
YXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCiAgICAgICAgIGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgb2JqKTsKQEAg
LTE2ODksMTAgKzE2OTEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZQogICAgIH0KIAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5
IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93
IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgotICAgIGlmIChzbG90LmlzQ2FjaGVhYmxl
VmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gc2NvcGUgJiYgc2NvcGUtPnN0cnVjdHVyZSgp
LT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKKyAgICBpZiAoc2xvdC5pc0NhY2hl
YWJsZVZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IHNjb3BlICYmIHNjb3BlLT5zdHJ1Y3R1
cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgaWYgKG1v
ZGVBbmRUeXBlLnR5cGUoKSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBtb2RlQW5kVHlwZS50eXBlKCkg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICBD
b25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICBwY1s1XS51LnN0cnVjdHVyZS5zZXQoZXhlYy0+dm0oKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc2NvcGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzVdLnUuc3RydWN0
dXJlLnNldChleGVjLT52bSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzY29wZS0+
c3RydWN0dXJlKHZtKSk7CiAgICAgICAgICAgICBwY1s2XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNjQ3
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0
cmluZ0dldEJ5VmFsU3R1YkdlbmUKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAg
IEp1bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5v
dEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3Rl
ZEltbVB0cih2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVu
ZChKU0M6OmJyYW5jaFN0cnVjdHVyZShqaXQsIE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCB2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAg
ICAgCiAgICAgLy8gTG9hZCBzdHJpbmcgbGVuZ3RoIHRvIHJlZ1QxLCBhbmQgc3RhcnQgdGhlIHBy
b2Nlc3Mgb2YgbG9hZGluZyB0aGUgZGF0YSBwb2ludGVyIGludG8gcmVnVDAKICAgICBqaXQubG9h
ZDMyKEFkZHJlc3MocmVnVDAsIFRodW5rSGVscGVyczo6anNTdHJpbmdMZW5ndGhPZmZzZXQoKSks
IHJlZ1QxKTsKQEAgLTEzMiw4ICsxMzIsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFs
KEluc3RydWN0aW9uCiAgICAgCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QzLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgZW1pdEFycmF5UHJvZmls
aW5nU2l0ZShyZWdUMSwgcmVnVDMsIHByb2ZpbGUpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMCwgcmVnVDEsIHByb2ZpbGUpOwogICAgIGFuZDMyKFRydXN0ZWRJbW0z
MihJbmRleGluZ1NoYXBlTWFzayksIHJlZ1QxKTsKIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlw
ZTsKQEAgLTIzNSw3ICsyMzQsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjCiAKICAgICBKdW1wIG5vbkNlbGwgPSBqdW1wKCk7CiAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBiYXNlIGFycmF5IGNoZWNrCi0gICAgSnVtcCBub3RTdHJpbmcgPSBicmFuY2hQdHIo
Tm90RXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBUcnVz
dGVkSW1tUHRyKG1fdm0tPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOworICAgIEp1bXAgbm90U3Ry
aW5nID0gYnJhbmNoU3RydWN0dXJlKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVt
aXROYWtlZENhbGwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3Ip
LmNvZGUoKSk7CiAgICAgSnVtcCBmYWlsZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlZ1QwKTsK
ICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwpAQCAtMjc2LDggKzI3NSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICAKICAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJl
Z1QxKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QxLCByZWdUMywgcHJvZmlsZSk7
CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgcHJvZmls
ZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVnVDEpOwog
ICAgIAogICAgIFBhdGNoYWJsZUp1bXAgYmFkVHlwZTsKQEAgLTQ3NSwxMCArNDczLDggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2FkKGJhc2Us
IHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJl
Z1QxKTsKIAotICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYm
IHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAs
IEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgICAgIGVtaXRBcnJheVBy
b2ZpbGluZ1NpdGVGb3JCeXRlY29kZUluZGV4KHJlZ1QyLCByZWdUMywgbV9ieXRlY29kZU9mZnNl
dCk7Ci0gICAgfQorICAgIGlmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3Ro
ICYmIHNob3VsZEVtaXRQcm9maWxpbmcoKSkKKyAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0
ZUZvckJ5dGVjb2RlSW5kZXhXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIG1fYnl0ZWNvZGVPZmZzZXQp
OwogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVy
cygpLApAQCAtNjM0LDcgKzYzMCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJ
bnN0cnVjdGkKICAgICBlbWl0TG9hZFBheWxvYWQoaXRlciwgcmVnVDEpOwogICAgIAogICAgIC8v
IFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0Yo
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9jYWNoZWRTdHJ1Y3R1cmUpKSkpOwogICAgIGxvYWQz
MihhZGRyZXNzRm9yKGkpLCByZWdUMyk7CiAgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdU
Myk7CkBAIC03MzEsNyArNzI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNo
ZWNrKGludAogewogICAgIGVtaXRMb2FkKHNjb3BlLCByZWdUMSwgcmVnVDApOwogICAgIGxvYWRQ
dHIoc3RydWN0dXJlU2xvdCwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RF
cXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlZ1QyKSk7
CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEdl
dEdsb2JhbFByb3BlcnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTY0
NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDEwIEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnN0cmlu
Z0dldEJ5VmFsU3R1YkdlbmUKIHsKICAgICBKU0ludGVyZmFjZUpJVCBqaXQodm0pOwogICAgIEp1
bXBMaXN0IGZhaWx1cmVzOwotICAgIGZhaWx1cmVzLmFwcGVuZChqaXQuYnJhbmNoUHRyKE5vdEVx
dWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZElt
bVB0cih2bS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgIGZhaWx1cmVzLmFwcGVuZChK
U0M6OmJyYW5jaFN0cnVjdHVyZShqaXQsCisgICAgICAgIE5vdEVxdWFsLCAKKyAgICAgICAgQWRk
cmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgCisgICAgICAgIHZtLT5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKIAogICAgIC8vIExvYWQgc3RyaW5nIGxlbmd0aCB0byBy
ZWdUMiwgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcgdGhlIGRhdGEgcG9pbnRlciBp
bnRvIHJlZ1QwCiAgICAgaml0LmxvYWQzMihBZGRyZXNzKHJlZ1QwLCBUaHVua0hlbHBlcnM6Ompz
U3RyaW5nTGVuZ3RoT2Zmc2V0KCkpLCByZWdUMik7CkBAIC0xMDYsOCArMTA5LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIHplcm9FeHRlbmQzMlRvUHRy
KHJlZ1QxLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2UpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIHJlZ1QyKTsKLSAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlKHJlZ1QyLCByZWdUMywg
cHJvZmlsZSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdU
MiwgcHJvZmlsZSk7CiAgICAgYW5kMzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwg
cmVnVDIpOwogCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtMjA0LDcgKzIwNiw5IEBA
IHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAgICBsaW5rU2xvd0Nh
c2VJZk5vdEpTQ2VsbChpdGVyLCBiYXNlKTsgLy8gYmFzZSBjZWxsIGNoZWNrCiAgICAgSnVtcCBu
b25DZWxsID0ganVtcCgpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYmFzZSBhcnJheSBj
aGVjawotICAgIEp1bXAgbm90U3RyaW5nID0gYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJl
Z1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihtX3ZtLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICBKdW1wIG5vdFN0cmluZyA9IGJyYW5jaFN0cnVjdHVy
ZShOb3RFcXVhbCwgCisgICAgICAgIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSksIAorICAgICAgICBtX3ZtLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIGVt
aXROYWtlZENhbGwoQ29kZUxvY2F0aW9uTGFiZWwobV92bS0+Z2V0Q1RJU3R1YihzdHJpbmdHZXRC
eVZhbFN0dWJHZW5lcmF0b3IpLmNvZGUoKSkpOwogICAgIEp1bXAgZmFpbGVkID0gYnJhbmNoVGVz
dDY0KFplcm8sIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDAp
OwpAQCAtMjc1LDcgKzI3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9wbmFtZShJbnN0
cnVjdGkKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwogCiAg
ICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVnVDIpOworICAgIGVtaXRMb2FkU3RydWN0dXJl
KHJlZ1QwLCByZWdUMiwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVh
bCwgcmVnVDIsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7CiAgICAgbG9hZDMyKGFkZHJlc3NGb3IoaSks
IHJlZ1QzKTsKICAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKQEAgLTMxNiw4ICsz
MjAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgLy8g
U2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihyZWdU
MSwgcmVnVDEpOwogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
cmVnVDIpOwotICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGUocmVnVDIsIHJlZ1QzLCBwcm9maWxl
KTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCBwcm9m
aWxlKTsKICAgICBhbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZWdUMik7
CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBiYWRUeXBlOwpAQCAtNTEzLDEwICs1MTYsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgCiAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCi0gICAgaWYgKCpp
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZUZvckJ5dGVj
b2RlSW5kZXgocmVnVDEsIHJlZ1QyLCBtX2J5dGVjb2RlT2Zmc2V0KTsKLSAgICB9CisgICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKQorICAgICAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlRm9yQnl0ZWNvZGVJbmRleFdp
dGhDZWxsKHJlZ1QwLCByZWdUMSwgbV9ieXRlY29kZU9mZnNldCk7CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCkBAIC02OTMsNyArNjk0
LDkgQEAgdm9pZCBKSVQ6OmVtaXRMb2FkV2l0aFN0cnVjdHVyZUNoZWNrKGludAogewogICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc2NvcGUsIHJlZ1QwKTsKICAgICBsb2FkUHRyKHN0cnVjdHVy
ZVNsb3QsIHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZWdUMSkpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDEpKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhy
ZWdUMSwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDEpOworICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMSkpOwogfQogCiB2b2lkIEpJVDo6ZW1pdEdldEdsb2JhbFByb3Bl
cnR5KHVpbnRwdHJfdCogb3BlcmFuZFNsb3QpCkBAIC03NTQsNiArNzU3LDggQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2dldF9mcm9tX3Njb3BlKElucwogICAgIGlmIChyZXNvbHZlVHlwZSA9PSBH
bG9iYWxWYXIgfHwgcmVzb2x2ZVR5cGUgPT0gQ2xvc3VyZVZhcikKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKKyAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3BlcmF0aW9uKFdp
dGhQcm9maWxlLCBvcGVyYXRpb25HZXRGcm9tU2NvcGUsIGRzdCwgY3VycmVudEluc3RydWN0aW9u
KTsKIH0KQEAgLTg1NSw2ICs4NjAsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X3RvX3Nj
b3BlKEluc3RyCiAgICAgaWYgKChyZXNvbHZlVHlwZSA9PSBHbG9iYWxWYXIgfHwgcmVzb2x2ZVR5
cGUgPT0gR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcykKICAgICAgICAgJiYgY3VycmVu
dEluc3RydWN0aW9uWzVdLnUud2F0Y2hwb2ludFNldC0+c3RhdGUoKSAhPSBJc0ludmFsaWRhdGVk
KQogICAgICAgICBsaW5rQ291bnQrKzsKKyAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKQorICAgICAgICBsaW5rQ291bnQrKzsKICAgICBpZiAoIWxpbmtDb3VudCkKICAgICAgICAg
cmV0dXJuOwogICAgIHdoaWxlIChsaW5rQ291bnQtLSkKQEAgLTg3MiwyNSArODc5LDE0IEBAIHZv
aWQgSklUOjplbWl0X29wX2luaXRfZ2xvYmFsX2NvbnN0KEluc3QKIAogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKLUpJVDo6SnVtcCBKSVQ6OmNoZWNrTWFya1dvcmQoUmVnaXN0ZXJJRCBvd25l
ciwgUmVnaXN0ZXJJRCBzY3JhdGNoMSwgUmVnaXN0ZXJJRCBzY3JhdGNoMikKK0pJVDo6SnVtcCBK
SVQ6OmNoZWNrTWFya1dvcmQoUmVnaXN0ZXJJRCBvd25lcikKIHsKLSAgICBtb3ZlKG93bmVyLCBz
Y3JhdGNoMSk7Ci0gICAgbW92ZShvd25lciwgc2NyYXRjaDIpOwotCi0gICAgYW5kUHRyKFRydXN0
ZWRJbW1QdHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gxKTsKLSAgICBhbmRQdHIo
VHJ1c3RlZEltbVB0cih+TWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHNjcmF0Y2gyKTsKLQotICAg
IHJzaGlmdDMyKFRydXN0ZWRJbW0zMigzICsgNCksIHNjcmF0Y2gyKTsKLQotICAgIHJldHVybiBi
cmFuY2hUZXN0OChaZXJvLCBCYXNlSW5kZXgoc2NyYXRjaDEsIHNjcmF0Y2gyLCBUaW1lc09uZSwg
TWFya2VkQmxvY2s6Om9mZnNldE9mTWFya3MoKSkpOworICAgIHJldHVybiBicmFuY2hUZXN0OCha
ZXJvLCBBZGRyZXNzKG93bmVyLCBKU0NlbGw6OmdjRGF0YU9mZnNldCgpKSk7CiB9CiAKIEpJVDo6
SnVtcCBKSVQ6OmNoZWNrTWFya1dvcmQoSlNDZWxsKiBvd25lcikKIHsKLSAgICBNYXJrZWRCbG9j
ayogYmxvY2sgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3Iob3duZXIpOwotICAgIHNpemVfdCBpbmRl
eCA9IChyZWludGVycHJldF9jYXN0PHNpemVfdD4ob3duZXIpICYgfk1hcmtlZEJsb2NrOjpibG9j
a01hc2spID4+ICgzICsgNCk7Ci0gICAgdm9pZCogYWRkcmVzcyA9IChyZWludGVycHJldF9jYXN0
PGNoYXIqPihibG9jaykgKyBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZNYXJrcygpKSArIGluZGV4Owot
CisgICAgdWludDhfdCogYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG93bmVy
KSArIEpTQ2VsbDo6Z2NEYXRhT2Zmc2V0KCk7CiAgICAgcmV0dXJuIGJyYW5jaFRlc3Q4KFplcm8s
IEFic29sdXRlQWRkcmVzcyhhZGRyZXNzKSk7CiB9CiAKQEAgLTkwOCw3ICs5MDQsNyBAQCB2b2lk
IEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lCiAgICAgaWYgKG1vZGUgPT0gU2hv
dWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwgPSBicmFuY2hUZXN0
NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CiAKLSAgICBKdW1wIG93bmVyTm90
TWFya2VkID0gY2hlY2tNYXJrV29yZChyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKKyAgICBKdW1wIG93
bmVyTm90TWFya2VkID0gY2hlY2tNYXJrV29yZChyZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25VbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCByZWdUMCk7CiAgICAgb3duZXJOb3RN
YXJrZWQubGluayh0aGlzKTsKIApAQCAtOTU3LDcgKzk1Myw3IEBAIHZvaWQgSklUOjplbWl0V3Jp
dGVCYXJyaWVyKHVuc2lnbmVkIG93bmUKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
QW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKIAotICAgIEp1bXAgb3duZXJOb3RN
YXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QxLCByZWdUMCwgcmVnVDIpOworICAgIEp1bXAgb3du
ZXJOb3RNYXJrZWQgPSBjaGVja01hcmtXb3JkKHJlZ1QxKTsKICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIHJlZ1QxKTsKICAgICBvd25lck5vdE1h
cmtlZC5saW5rKHRoaXMpOwogCkBAIC0xMDEzLDcgKzEwMDksNyBAQCBKSVQ6Okp1bXAgSklUOjph
ZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlCiAgICAgICAgIHN0cnVjdHVyZS0+YWRkVHJhbnNpdGlv
bldhdGNocG9pbnQoc3R1YkluZm8tPmFkZFdhdGNocG9pbnQobV9jb2RlQmxvY2spKTsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3Jh
dGNoKTsKLSAgICAgICAgSnVtcCBvayA9IGJyYW5jaFB0cihFcXVhbCwgQWRkcmVzcyhzY3JhdGNo
LCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsK
KyAgICAgICAgSnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShFcXVhbCwgQWRkcmVzcyhzY3JhdGNo
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzdHJ1Y3R1cmUpOwogICAgICAgICBicmVh
a3BvaW50KCk7CiAgICAgICAgIG9rLmxpbmsodGhpcyk7CiAjZW5kaWYKQEAgLTEwMjIsNyArMTAx
OCw3IEBAIEpJVDo6SnVtcCBKSVQ6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGUKICAgICB9CiAg
ICAgCiAgICAgbW92ZShUcnVzdGVkSW1tUHRyKG9iamVjdCksIHNjcmF0Y2gpOwotICAgIHJldHVy
biBicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3Moc2NyYXRjaCwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgcmV0dXJuIGJyYW5jaFN0
cnVjdHVyZShOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCBzdHJ1Y3R1cmUpOwogfQogCiB2b2lkIEpJVDo6YWRkU3RydWN0dXJlVHJhbnNpdGlv
bkNoZWNrKEpTQ2VsbCogb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBSZWdpc3RlcklEIHNjcmF0
Y2gpCkBAIC0xMTgwLDggKzExNzYsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVk
QXJyYXlHZXRCCiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQ
dHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7Ci0g
ICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNo
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9G
b3JUeXBlKHR5cGUpKSk7CisgICAgbG9hZDgoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMy
KE5vdEVxdWFsLCBzY3JhdGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5
cGUpKSk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2gzMihBYm92ZU9yRXF1YWwsIHByb3Bl
cnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkp
OwogICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZW
ZWN0b3IoKSksIGJhc2UpOwogICAgIApAQCAtMTI1MCw5ICsxMjQ2LDkgQEAgSklUOjpKdW1wTGlz
dCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlHZQogI2VuZGlmCiAgICAgCiAgICAgSnVtcExpc3Qg
c2xvd0Nhc2VzOwotICAgIAotICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlLCBKU0NlbGw6OnN0cnVj
dHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm9Gb3JUeXBlKHR5cGUpKSk7CisKKyAgICBsb2FkOChB
ZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBzY3JhdGNoKTsKKyAg
ICBiYWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoMzIoTm90RXF1YWwsIHNjcmF0Y2gsIFRydXN0ZWRJ
bW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkpKTsKICAgICBzbG93Q2FzZXMuYXBwZW5k
KGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcHJvcGVydHksIEFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGJhc2Us
IEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZlZlY3RvcigpKSwgYmFzZSk7CiAgICAgCkBAIC0x
MzA0LDggKzEzMDAsOCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRC
CiAgICAgCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIAotICAgIGxvYWRQdHIoQWRkcmVz
cyhiYXNlLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgZWFybHlTY3JhdGNoKTsKLSAgICBi
YWRUeXBlID0gcGF0Y2hhYmxlQnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKGVhcmx5U2NyYXRj
aCwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoY2xhc3NJbmZv
Rm9yVHlwZSh0eXBlKSkpOworICAgIGxvYWQ4KEFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5m
b1R5cGVPZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7CisgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJy
YW5jaDMyKE5vdEVxdWFsLCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRB
cnJheVR5cGUodHlwZSkpKTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHBy
b3BlcnR5LCBBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSk7CiAgICAgZW1pdEFycmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7
CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwpAQCAtMTM3Niw4ICsxMzcyLDggQEAgSklUOjpKdW1w
TGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogICAgIEp1bXBMaXN0IHNsb3dD
YXNlczsKICAgICAKLSAgICBsb2FkUHRyKEFkZHJlc3MoYmFzZSwgSlNDZWxsOjpzdHJ1Y3R1cmVP
ZmZzZXQoKSksIGVhcmx5U2NyYXRjaCk7Ci0gICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhlYXJseVNjcmF0Y2gsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tUHRyKGNsYXNzSW5mb0ZvclR5cGUodHlwZSkpKTsKKyAgICBsb2Fk
OChBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBlYXJseVNjcmF0
Y2gpOworICAgIGJhZFR5cGUgPSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3Jh
dGNoLCBUcnVzdGVkSW1tMzIodHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CiAgICAgSnVt
cCBpbkJvdW5kcyA9IGJyYW5jaDMyKEJlbG93LCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0Fy
cmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkpOwogICAgIGVtaXRBcnJheVByb2ZpbGVP
dXRPZkJvdW5kc1NwZWNpYWxDYXNlKHByb2ZpbGUpOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlz
aW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpOwogI2VuZGlmCiAKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShS
ZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlKTsKKyAgICAg
ICAgSnVtcCBlbWl0SnVtcElmTm90VHlwZShSZWdpc3RlcklEIGJhc2VSZWcsIEpTVHlwZSk7CiAK
ICAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJFbnRyeSwgUmVnaXN0ZXJJRCB0bywgUmVnaXN0ZXJJRCBmcm9tID0gY2FsbEZy
YW1lUmVnaXN0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihSZWdp
c3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKQEAgLTIyNCwxMCAr
MjI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogI2VuZGlmCiAKLSAgICBBTFdBWVNfSU5M
SU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmTm90VHlw
ZShSZWdpc3RlcklEIGJhc2VSZWcsIFJlZ2lzdGVySUQgc2NyYXRjaFJlZywgSlNUeXBlIHR5cGUp
CisgICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6
ZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUgdHlwZSkKICAgICB7
Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNl
dCgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRy
ZXNzKHNjcmF0Y2hSZWcsIFN0cnVjdHVyZTo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIodHlwZSkpOworICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwgQWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUp
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVu
dHJ5LCBSZWdpc3RlcklEIHRvLCBSZWdpc3RlcklEIGZyb20pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAK
ICNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgog
I2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2lu
Y2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljUHV0QnlJZExpc3QuaCIKQEAgLTEw
Myw3ICsxMDUsNyBAQCBzdGF0aWMgdm9pZCByZXBhdGNoQnlJZFNlbGZBY2Nlc3MoVk0mIHZtCiAg
ICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LCBzbG93UGF0aEZ1bmN0aW9uKTsKIAogICAgIC8vIFBhdGNoIHRoZSBzdHJ1Y3R1cmUgY2hlY2sg
JiB0aGUgb2Zmc2V0IG9mIHRoZSBsb2FkLgotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHVi
SW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQoLShpbnRwdHJfdClz
dHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwgc3RydWN0dXJlKTsKKyAgICByZXBh
dGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMy
QXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0cnVjdHVyZS0+aWQoKSkpOwogICAgIHJlcGF0Y2hCdWZm
ZXIuc2V0TG9hZEluc3RydWN0aW9uSXNBY3RpdmUoc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9u
LmNvbnZlcnRpYmxlTG9hZEF0T2Zmc2V0KHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvU3RvcmFn
ZUxvYWQpLCBpc091dE9mTGluZU9mZnNldChvZmZzZXQpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIGlmIChjb21wYWN0KQpAQCAtMTMxLDEwICsxMzMsMTAgQEAgc3RhdGljIHZvaWQgYWRkU3Ry
dWN0dXJlVHJhbnNpdGlvbkNoZWNrKAogICAgICAgICAvLyBJZiB3ZSBleGVjdXRlIHRoaXMgY29k
ZSwgdGhlIG9iamVjdCBtdXN0IGhhdmUgdGhlIHN0cnVjdHVyZSB3ZSBleHBlY3QuIEFzc2VydAog
ICAgICAgICAvLyB0aGlzIGluIGRlYnVnIG1vZGVzLgogICAgICAgICBqaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgb2sgPSBqaXQuYnJhbmNoUHRyKAorICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBvayA9IGJyYW5jaFN0cnVjdHVyZShqaXQsCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
KyAgICAgICAgICAgIHN0cnVjdHVyZSk7CiAgICAgICAgIGppdC5icmVha3BvaW50KCk7CiAgICAg
ICAgIG9rLmxpbmsoJmppdCk7CiAjZW5kaWYKQEAgLTE0MywxMCArMTQ1LDEwIEBAIHN0YXRpYyB2
b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKICAgICAKICAgICBqaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihvYmplY3QpLCBzY3JhdGNoR1BSKTsKICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKAotICAgICAgICBqaXQuYnJhbmNoUHRyKAorICAgICAgICBicmFuY2hT
dHJ1Y3R1cmUoaml0LAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0
dXJlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjaygKQEAg
LTE2NSwxMCArMTY3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
aygKIAogc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKFJlcGF0Y2hCdWZmZXImIHJlcGF0Y2hC
dWZmZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHRhcmdldCkKIHsKLSAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNl
UGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKCkpIHsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6
OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgewogICAgICAgICBy
ZXBhdGNoQnVmZmVyLnJlcGxhY2VXaXRoSnVtcCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6
OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3MoCi0gICAgICAgICAg
ICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KAor
ICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaDMyV2l0aFBh
dGNoT25BZGRyZXNzKAorICAgICAgICAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
bi5kYXRhTGFiZWwzMkF0T2Zmc2V0KAogICAgICAgICAgICAgICAgICAgICAtKGludHB0cl90KXN0
dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpKSwKICAgICAgICAgICAgIENvZGVMb2Nh
dGlvbkxhYmVsKHRhcmdldCkpOwogICAgICAgICByZXR1cm47CkBAIC0yNDksNyArMjUxLDEwIEBA
IHN0YXRpYyBQcm90b0NoYWluR2VuZXJhdGlvblJlc3VsdCBnZW5lcmEKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNhc2VzOwogICAgIAotICAgIGZhaWx1cmVDYXNl
cy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAgICAgICBzdHJ1Y3R1cmUpKTsKIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgaWYgKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkK
QEAgLTM4MCw4ICszODUsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRl
KiBlCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFpbHVyZUNh
c2VzOwogICAgICAgIAotICAgICAgICBzdHViSml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOyAK
LSAgICAgICAgc3R1YkppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoR1BS
LCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc2NyYXRjaEdQUik7CisgICAgICAg
IHN0dWJKaXQubG9hZDgoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpp
bmRleGluZ1R5cGVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7CiAgICAgICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFw
ZU1hc2spKSk7CiAgICAgICAgIApAQCAtNTczLDcgKzU3NywxMCBAQCBzdGF0aWMgYm9vbCB0cnlC
dWlsZEdldEJ5SURMaXN0KEV4ZWNTdGF0CiAgICAgICAgIAogICAgICAgICBDQ2FsbEhlbHBlcnMg
c3R1YkppdCh2bSwgY29kZUJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHdyb25nU3RydWN0ID0gc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVy
ZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdyb25nU3RydWN0ID0gYnJhbmNoU3RydWN0dXJl
KHN0dWJKaXQsCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIAorICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSwgCisgICAgICAgICAgICBzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAg
Ly8gVGhlIHN0cmF0ZWd5IHdlIHVzZSBmb3Igc3R1YnMgaXMgYXMgZm9sbG93czoKICAgICAgICAg
Ly8gMSkgQ2FsbCBERkcgaGVscGVyIHRoYXQgY2FsbHMgdGhlIGdldHRlci4KQEAgLTgxNyw3ICs4
MjQsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgd3JpdGVCYXJyaWVyCiAgICAgQVNT
RVJUKG93bmVyICE9IHNjcmF0Y2gxKTsKICAgICBBU1NFUlQob3duZXIgIT0gc2NyYXRjaDIpOwog
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZGVmaW5pdGVseU5vdE1hcmtlZCA9IERGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmdlbmVyaWNXcml0ZUJhcnJpZXIoaml0LCBvd25lciwgc2NyYXRjaDEsIHNj
cmF0Y2gyKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkZWZpbml0ZWx5Tm90TWFya2VkID0g
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY1dyaXRlQmFycmllcihqaXQsIG93bmVyKTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsID0gc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihq
aXQsIG93bmVyLCBzY3JhdGNoMSwgc2NyYXRjaDIsIGFsbG9jYXRvcik7CiAgICAgZGVmaW5pdGVs
eU5vdE1hcmtlZC5saW5rKCZqaXQpOwogICAgIHJldHVybiBjYWxsOwpAQCAtODU4LDEwICs4NjUs
MTAgQEAgc3RhdGljIHZvaWQgZW1pdFB1dFJlcGxhY2VTdHViKAogCiAgICAgYWxsb2NhdG9yLnBy
ZXNlcnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKHN0dWJKaXQpOwogCi0gICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgYmFkU3RydWN0dXJlID0gc3R1YkppdC5icmFuY2hQdHIoCisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgYmFkU3RydWN0dXJlID0gYnJhbmNoU3RydWN0dXJlKHN0dWJKaXQsCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0gICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAor
ICAgICAgICBzdHJ1Y3R1cmUpOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBpZiAoaXNJbmxp
bmVPZmZzZXQoc2xvdC5jYWNoZWRPZmZzZXQoKSkpCkBAIC05NzUsNyArOTgyLDEwIEBAIHN0YXRp
YyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAgICAgIAogICAgIEFTU0VSVChv
bGRTdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkp
OwogICAgIAotICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIob2xk
U3RydWN0dXJlKSkpOworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKHN0
dWJKaXQsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IAorICAgICAgICBvbGRTdHJ1Y3R1cmUpKTsKICAgICAKICAgICBhZGRTdHJ1Y3R1cmVUcmFuc2l0
aW9uQ2hlY2soCiAgICAgICAgIG9sZFN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlKCksIGV4ZWMt
PmNvZGVCbG9jaygpLCBzdHViSW5mbywgc3R1YkppdCwgZmFpbHVyZUNhc2VzLApAQCAtMTAyNiw3
ICsxMDM2LDEwIEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRUcmFuc2l0aW9uU3R1YigKICAgICAgICAg
c2NyYXRjaEdQUjFIYXNTdG9yYWdlID0gdHJ1ZTsKICAgICB9CiAKLSAgICBzdHViSml0LnN0b3Jl
UHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpKTsKKyAgICBB
U1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpKTsKKyAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlubGlu
ZVR5cGVGbGFncygpID09IHN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7
CisgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSk7CisgICAgc3R1YkppdC5zdG9yZTMyKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0dXJlLT5pZCgpKSksIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQo
KSkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYgKGlzSW5saW5lT2Zmc2V0KHNsb3QuY2Fj
aGVkT2Zmc2V0KCkpKQogICAgICAgICBzdHViSml0LnN0b3JlNjQodmFsdWVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2Uo
KSArIG9mZnNldEluSW5saW5lU3RvcmFnZShzbG90LmNhY2hlZE9mZnNldCgpKSAqIHNpemVvZihK
U1ZhbHVlKSkpOwpAQCAtMTI3MSw3ICsxMjg0LDcgQEAgc3RhdGljIGJvb2wgdHJ5QnVpbGRQdXRC
eUlkTGlzdChFeGVjU3RhdAogICAgICAgICAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMzQ2LDEwICsxMzU5LDEwIEBAIHN0
YXRpYyBib29sIHRyeVJlcGF0Y2hJbigKICAgICAgICAgICAgIG5lZWRUb1Jlc3RvcmVTY3JhdGNo
ID0gZmFsc2U7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZmFp
bHVyZUNhc2VzOwotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHN0dWJKaXQuYnJhbmNoUHRy
KAorICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaFN0cnVjdHVyZShzdHViSml0LAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksCi0g
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKSk7Cisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3RydWN0dXJlKSk7CiAKICAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5uZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMoKSkKQEAg
LTE1MDAsMTAgKzE1MTMsMTAgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoCiAjZW5kaWYKICAgICAK
ICAgICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAgIHN0dWJKaXQuYnJhbmNoUHRyKAorICAgICAg
ICBicmFuY2hTdHJ1Y3R1cmUoc3R1YkppdCwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Tm90
RXF1YWwsCi0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwKLSAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y2FsbGVlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAorICAgICAgICAgICAgc3Ry
dWN0dXJlKSk7CiAgICAgCiAgICAgc2xvd1BhdGguYXBwZW5kKAogICAgICAgICBzdHViSml0LmJy
YW5jaFB0cigKQEAgLTE1NzMsMTYgKzE1ODYsMTYgQEAgdm9pZCBsaW5rQ2xvc3VyZUNhbGwoCiB2
b2lkIHJlc2V0R2V0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoQnVmZmVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiB7CiAgICAgcmVwYXRjaENhbGwocmVwYXRjaEJ1ZmZlciwgc3R1
YkluZm8uY2FsbFJldHVybkxvY2F0aW9uLCBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotICAg
IENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0ciBzdHJ1Y3R1cmVMYWJlbCA9IHN0dWJJbmZvLmNhbGxS
ZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWxQdHJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBh
dGNoLmRlbHRhQ2hlY2tJbW1Ub0NhbGwpOwotICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVt
cFJlcGxhY2VQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goKSkgewotICAgICAgICByZXBhdGNo
QnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KAotICAgICAgICAgICAgUmVwYXRjaEJ1ZmZlcjo6c3RhcnRPZlBhdGNoYWJsZUJyYW5jaFB0cldp
dGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1cmVMYWJlbCksCisgICAgQ29kZUxvY2F0aW9uRGF0YUxh
YmVsMzIgc3RydWN0dXJlTGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxh
YmVsMzJBdE9mZnNldCgtKGludHB0cl90KXN0dWJJbmZvLnBhdGNoLmRlbHRhQ2hlY2tJbW1Ub0Nh
bGwpOworICAgIGlmIChNYWNyb0Fzc2VtYmxlcjo6Y2FuSnVtcFJlcGxhY2VQYXRjaGFibGVCcmFu
Y2gzMldpdGhQYXRjaCgpKSB7CisgICAgICAgIHJlcGF0Y2hCdWZmZXIucmV2ZXJ0SnVtcFJlcGxh
Y2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaCgKKyAgICAgICAgICAgIFJlcGF0Y2hC
dWZmZXI6OnN0YXJ0T2ZQYXRjaGFibGVCcmFuY2gzMldpdGhQYXRjaE9uQWRkcmVzcyhzdHJ1Y3R1
cmVMYWJlbCksCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcygKICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRD4oc3R1YkluZm8u
cGF0Y2guYmFzZUdQUiksCi0gICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQo
KSksCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPih1bnVzZWRQb2ludGVyKSk7
CisgICAgICAgICAgICAgICAgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKKyAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KHVudXNlZFBvaW50ZXIpKTsKICAgICB9Ci0gICAgcmVw
YXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxhYmVsLCByZWludGVycHJldF9jYXN0PHZvaWQq
Pih1bnVzZWRQb2ludGVyKSk7CisgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0cnVjdHVyZUxh
YmVsLCBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2ludGVyKSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICByZXBhdGNoQnVmZmVyLnJlcGF0Y2goc3R1YkluZm8uY2FsbFJldHVybkxvY2F0
aW9uLmRhdGFMYWJlbENvbXBhY3RBdE9mZnNldChzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0xv
YWRPclN0b3JlKSwgMCk7CiAjZWxzZQpAQCAtMTYwNywxNiArMTYyMCwxNiBAQCB2b2lkIHJlc2V0
UHV0QnlJRChSZXBhdGNoQnVmZmVyJiByZXBhdGNoCiAgICAgICAgIG9wdGltaXplZEZ1bmN0aW9u
ID0gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBy
ZXBhdGNoQ2FsbChyZXBhdGNoQnVmZmVyLCBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24sIG9w
dGltaXplZEZ1bmN0aW9uKTsKLSAgICBDb2RlTG9jYXRpb25EYXRhTGFiZWxQdHIgc3RydWN0dXJl
TGFiZWwgPSBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24uZGF0YUxhYmVsUHRyQXRPZmZzZXQo
LShpbnRwdHJfdClzdHViSW5mby5wYXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKLSAgICBpZiAo
TWFjcm9Bc3NlbWJsZXI6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNo
KCkpIHsKLSAgICAgICAgcmVwYXRjaEJ1ZmZlci5yZXZlcnRKdW1wUmVwbGFjZW1lbnRUb1BhdGNo
YWJsZUJyYW5jaFB0cldpdGhQYXRjaCgKLSAgICAgICAgICAgIFJlcGF0Y2hCdWZmZXI6OnN0YXJ0
T2ZQYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAor
ICAgIENvZGVMb2NhdGlvbkRhdGFMYWJlbDMyIHN0cnVjdHVyZUxhYmVsID0gc3R1YkluZm8uY2Fs
bFJldHVybkxvY2F0aW9uLmRhdGFMYWJlbDMyQXRPZmZzZXQoLShpbnRwdHJfdClzdHViSW5mby5w
YXRjaC5kZWx0YUNoZWNrSW1tVG9DYWxsKTsKKyAgICBpZiAoTWFjcm9Bc3NlbWJsZXI6OmNhbkp1
bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2goKSkgeworICAgICAgICByZXBhdGNo
QnVmZmVyLnJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2go
CisgICAgICAgICAgICBSZXBhdGNoQnVmZmVyOjpzdGFydE9mUGF0Y2hhYmxlQnJhbmNoMzJXaXRo
UGF0Y2hPbkFkZHJlc3Moc3RydWN0dXJlTGFiZWwpLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWFjcm9Bc3NlbWJsZXI6
OlJlZ2lzdGVySUQ+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpLAotICAgICAgICAgICAgICAgIEpT
Q2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgICAgICAgICAgICAgIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQzMl90Pih1bnVzZWRQb2lu
dGVyKSk7CiAgICAgfQotICAgIHJlcGF0Y2hCdWZmZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4odW51c2VkUG9pbnRlcikpOworICAgIHJlcGF0Y2hCdWZm
ZXIucmVwYXRjaChzdHJ1Y3R1cmVMYWJlbCwgc3RhdGljX2Nhc3Q8aW50MzJfdD4odW51c2VkUG9p
bnRlcikpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgcmVwYXRjaEJ1ZmZlci5yZXBhdGNoKHN0
dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbi5kYXRhTGFiZWwzMkF0T2Zmc2V0KHN0dWJJbmZvLnBh
dGNoLmRlbHRhQ2FsbFRvTG9hZE9yU3RvcmUpLCAwKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkocmV2aXNpb24gMTY0
NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpZiBFTkFCTEUoSklUKQogCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVElubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIK
ICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCkBAIC02NywxNCArNjksMTggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgbG9hZEpTU3RyaW5nQXJndW1lbnQoVk0mIHZtLCBpbnQgYXJndW1l
bnQsIFJlZ2lzdGVySUQgZHN0KQogICAgICAgICB7CiAgICAgICAgICAgICBsb2FkQ2VsbEFyZ3Vt
ZW50KGFyZ3VtZW50LCBkc3QpOwotICAgICAgICAgICAgbV9mYWlsdXJlcy5hcHBlbmQoYnJhbmNo
UHRyKE5vdEVxdWFsLCBBZGRyZXNzKGRzdCwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIFRy
dXN0ZWRJbW1QdHIodm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKSkpOworICAgICAgICAgICAgbV9m
YWlsdXJlcy5hcHBlbmQoYnJhbmNoU3RydWN0dXJlKCp0aGlzLCBOb3RFcXVhbCwgCisgICAgICAg
ICAgICAgICAgQWRkcmVzcyhkc3QsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIAorICAg
ICAgICAgICAgICAgIHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICB2b2lkIGxvYWRBcmd1bWVudFdpdGhTcGVjaWZpY0NsYXNzKGNvbnN0IENs
YXNzSW5mbyogY2xhc3NJbmZvLCBpbnQgYXJndW1lbnQsIFJlZ2lzdGVySUQgZHN0LCBSZWdpc3Rl
cklEIHNjcmF0Y2gpCiAgICAgICAgIHsKICAgICAgICAgICAgIGxvYWRDZWxsQXJndW1lbnQoYXJn
dW1lbnQsIGRzdCk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MoZHN0LCBKU0NlbGw6OnN0
cnVjdHVyZU9mZnNldCgpKSwgc2NyYXRjaCk7CisgICAgICAgICAgICBlbWl0TG9hZFN0cnVjdHVy
ZShkc3QsIHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgICAgICBhcHBlbmRGYWlsdXJlKGJyYW5jaFB0
cihOb3RFcXVhbCwgQWRkcmVzcyhzY3JhdGNoLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgp
KSwgVHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CisgICAgICAgICAgICAvLyBXZSBoYXZlIHRv
IHJlbG9hZCB0aGUgYXJndW1lbnQgc2luY2UgZW1pdExvYWRTdHJ1Y3R1cmUgY2xvYmJlcmVkIGl0
LgorICAgICAgICAgICAgbG9hZENlbGxBcmd1bWVudChhcmd1bWVudCwgZHN0KTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgdm9pZCBsb2FkSW50MzJBcmd1bWVudChpbnQgYXJndW1lbnQs
IFJlZ2lzdGVySUQgZHN0LCBKdW1wJiBmYWlsVGFyZ2V0KQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNpb24gMTY0NzM4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJERkdTcGVjdWxhdGl2ZUpJVC5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAi
SlNBcnJheUl0ZXJhdG9yLmgiCkBAIC0xODksNyArMTkwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiB2aXJ0dWFsRm9yVAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgR1BSSW5mbzo6cmVnVDEsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogI2VuZGlmCi0gICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
R1BSSW5mbzo6cmVnVDIpOworICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdExvYWRTdHJ1Y3R1cmUo
aml0LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBzbG93Q2FzZS5hcHBlbmQoCiAgICAgICAgIGppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6Ok5vdEVxdWFsLApAQCAtOTU5LDkgKzk2MCw3IEBAIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgYXJyYXlJdGVyYXQKICAgICBqaXQubG9hZDMyKEFkZHJlc3MoU3BlY2lh
bGl6ZWRUaHVua0pJVDo6cmVnVDQsIEpTQXJyYXlJdGVyYXRvcjo6b2Zmc2V0T2ZOZXh0SW5kZXgo
KSksIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAgICAKICAgICAvLyBQdWxsIG91dCB0
aGUgYnV0dGVyZmx5IGZyb20gaXRlcmF0ZWRPYmplY3QKLSAgICBqaXQubG9hZFB0cihBZGRyZXNz
KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDIpOwotICAgIAotICAgIGppdC5sb2FkOChBZGRyZXNz
KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNl
dCgpKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOworICAgIGppdC5sb2FkOChBZGRyZXNz
KFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBKU0NlbGw6OmluZGV4aW5nVHlwZU9mZnNldCgp
KSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwogICAgIGppdC5sb2FkUHRyKEFkZHJlc3Mo
U3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QyKTsKICAgICAKICAgICBqaXQuYW5kMzIoVHJ1c3Rl
ZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC01MzEsNiArNTMxLDEzIEBAIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGUKICAgICAgICAgcGF5bG9hZCkKIGVuZAogCittYWNybyBzdG9yZVN0cnVjdHVyZVdpdGhU
eXBlSW5mbyhjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgc3RvcmVwIHN0cnVjdHVyZSwg
SlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdCisKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fYmxv
YiArIFN0cnVjdHVyZUlEQmxvYjo6dS53b3Jkcy53b3JkMltzdHJ1Y3R1cmVdLCBzY3JhdGNoCisg
ICAgc3RvcmVpIHNjcmF0Y2gsIEpTQ2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0KK2VuZAorCiBt
YWNybyB3cml0ZUJhcnJpZXJPbk9wZXJhbmQoY2VsbE9wZXJhbmQpCiAgICAgaWYgR0dDCiAgICAg
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihjZWxsT3BlcmFuZCwgdDEpCkBAIC03NDgsMTAgKzc1
NSw5IEBAIF9sbGludF9vcF90b190aGlzOgogICAgIGxvYWRpIDRbUENdLCB0MAogICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdworICAgIGJibmVxIEpT
Q2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93CiAgICAgbG9h
ZHBGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCi0gICAgYnBuZXEgdDAsIHQyLCAub3BUb1RoaXNTbG93
CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cK
ICAgICBkaXNwYXRjaCgzKQogCiAub3BUb1RoaXNTbG93OgpAQCAtODY4LDggKzg3NCw3IEBAIF9s
bGludF9vcF9lcV9udWxsOgogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAub3BFcU51bGxJbW1lZGlhdGUKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCAub3BFcU51bGxNYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSAwLCB0MQogICAg
IGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKIC5vcEVxTnVsbE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQ6CkBAIC05MTUsOCArOTIwLDcgQEAgX2xsaW50X29wX25lcV9udWxsOgogICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCi0gICAgYnRibnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCAub3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2VsbDo6bV9m
bGFnc1t0MF0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5vcE5lcU51bGxNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkCiAgICAgbW92ZSAxLCB0MQogICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRl
CiAub3BOZXFOdWxsTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKQEAgLTk0MiwxMCArOTQ2LDggQEAg
bWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dQYQogICAgIGJpbmVxIHQyLCB0
MywgLnNsb3cKICAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKICAgICBiaW5lcSB0MiwgQ2Vs
bFRhZywgLm5vdFN0cmluZwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MwotICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3Ry
aW5nCi0gICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3Qz
XSwgU3RyaW5nVHlwZSwgLnNsb3cKKyAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIFN0cmlu
Z1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlw
ZSwgLnNsb3cKIC5ub3RTdHJpbmc6CiAgICAgbG9hZGkgNFtQQ10sIHQyCiAgICAgZXF1YWxpdHlP
cGVyYXRpb24odDAsIHQxLCB0MCkKQEAgLTEyMjUsOCArMTIyNyw3IEBAIF9sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDEyW1BDXSwg
dDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1KQogCiAub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKQEAgLTEyNDAsMTUgKzEyNDEsMTQgQEAgX2xsaW50X29wX2luc3Rh
bmNlb2Y6CiAgICAgbG9hZGkgMTJbUENdLCB0MAogICAgIGxvYWRpIDRbUENdLCB0MwogICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2Vv
ZlNsb3cpCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCi0gICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAu
b3BJbnN0YW5jZW9mU2xvdworICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUs
IC5vcEluc3RhbmNlb2ZTbG93CiAgICAgbG9hZGkgOFtQQ10sIHQwCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKICAg
ICAKICAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQogICAg
IG1vdmUgMSwgdDAKIC5vcEluc3RhbmNlb2ZMb29wOgotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQyCiAg
ICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0Mgog
ICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQogICAgIGJ0aW56IHQyLCAub3BJbnN0
YW5jZW9mTG9vcApAQCAtMTI3NSwxMiArMTI3NSwxMiBAQCBfbGxpbnRfb3BfaXNfdW5kZWZpbmVk
OgogICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQogICAgIGRpc3BhdGNo
KDMpCiAub3BJc1VuZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxCi0gICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQKKyAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDNdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCAub3BJc1VuZGVmaW5lZE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3Zl
IDAsIHQxCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCiAgICAgZGlz
cGF0Y2goMykKIC5vcElzVW5kZWZpbmVkTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MwogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MwogICAgIGNw
ZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0MV0sIHQzLCB0MQpAQCAtMTMxOCw4ICsxMzE4
LDcgQEAgX2xsaW50X29wX2lzX3N0cmluZzoKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MCwgdDMpCiAgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQog
ICAgIGJpbmVxIHQwLCBDZWxsVGFnLCAub3BJc1N0cmluZ05vdENlbGwKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QzXSwgdDAKLSAgICBjYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQorICAgIGNiZXEgSlNDZWxsOjpt
X3R5cGVbdDNdLCBTdHJpbmdUeXBlLCB0MQogICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKDMpCiAub3BJc1N0cmluZ05vdENlbGw6CkBAIC0xMzg3
LDcgKzEzODYsNyBAQCBtYWNybyBnZXRCeUlkKGdldFByb3BlcnR5U3RvcmFnZSkKICAgICAgICAg
dDMsCiAgICAgICAgIHQwLAogICAgICAgICBtYWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNo
KQotICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRC
eUlkU2xvdworICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEs
IC5vcEdldEJ5SWRTbG93CiAgICAgICAgICAgICBsb2FkaSA0W1BDXSwgdDEKICAgICAgICAgICAg
IGxvYWRpIFRhZ09mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgc2NyYXRjaAogICAgICAgICAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtwcm9wZXJ0eVN0b3JhZ2UsIHQyXSwgdDIKQEAgLTE0MTUs
NyArMTQxNCw3IEBAIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGxvYWRpIDhbUENd
LCB0MAogICAgIGxvYWRwIDE2W1BDXSwgdDEKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEFycmF5TGVuZ3RoU2xvdykKLSAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbdDNdLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDEsIHQwKQogICAgIGJ0aXogdDIsIElz
QXJyYXksIC5vcEdldEFycmF5TGVuZ3RoU2xvdwogICAgIGJ0aXogdDIsIEluZGV4aW5nU2hhcGVN
YXNrLCAub3BHZXRBcnJheUxlbmd0aFNsb3cKQEAgLTE0NjAsNyArMTQ1OSw3IEBAIG1hY3JvIHB1
dEJ5SWQoZ2V0UHJvcGVydHlTdG9yYWdlKQogICAgICAgICB0MCwKICAgICAgICAgdDMsCiAgICAg
ICAgIG1hY3JvIChwcm9wZXJ0eVN0b3JhZ2UsIHNjcmF0Y2gpCi0gICAgICAgICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgICAgICAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICAg
ICAgICAgIGxvYWRpIDIwW1BDXSwgdDEKICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQyLCBzY3JhdGNoLCB0MikKICAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBUYWdP
ZmZzZXRbcHJvcGVydHlTdG9yYWdlLCB0MV0KQEAgLTE0ODgsNyArMTQ4Nyw3IEBAIG1hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICBsb2FkaSAxNltQQ10sIHQxCiAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKICAgICBsb2FkaSAxMltQQ10sIHQyCi0gICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVJRFt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwogICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
LCAub3BQdXRCeUlkU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQxCiAgICAgZ2V0UHJvcGVydHlT
dG9yYWdlKApAQCAtMTUwMCw3ICsxNDk5LDcgQEAgbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRk
aXRpb25hbENoZWNrcwogICAgICAgICAgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCiAgICAg
ICAgICAgICBsb2FkaSAyNFtQQ10sIHQxCiAgICAgICAgICAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbdDNdCi0gICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
CisgICAgICAgICAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0KICAgICAg
ICAgICAgIGRpc3BhdGNoKDkpCiAgICAgICAgIGVuZCkKIApAQCAtMTUyMiw3ICsxNTIxLDcgQEAg
bWFjcm8gc3RydWN0dXJlQ2hhaW5DaGVja3Mob2xkU3RydWN0dXJlLAogICAgIGJpZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9u
ZQogLmxvb3A6CiAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
SURbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCiAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3dQYXRoCiAgICAgYWRkcCA0LCBzY3JhdGNoCiAgICAgYmluZXEgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcApA
QCAtMTU0OSw3ICsxNTQ4LDcgQEAgX2xsaW50X29wX2dldF9ieV92YWw6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGxvYWRpIDhbUENdLCB0MgogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0
MF0sIHQyCiAgICAgbG9hZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQx
KQogICAgIGxvYWRpIDEyW1BDXSwgdDMKQEAgLTE2MzMsNyArMTYzMiw3IEBAIF9sbGludF9vcF9n
ZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBsb2FkaSAyMFtQQ10sIHQwCiAgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QyXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDJdLCB0MAog
ICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0
M10sIC5vcEdldEJ5UG5hbWVTbG93CiAgICAgbG9hZGkgMjRbUENdLCB0MAogICAgIGxvYWRpIFtj
ZnIsIHQwLCA4XSwgdDAKQEAgLTE2NzUsNyArMTY3NCw3IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVD
aGVjaywgc2xvd1BhdGgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcygxLCAzKQogICAgIGxv
YWRpIDRbUENdLCB0MAogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MV0sIHQyCiAgICAgbG9h
ZHAgMTZbUENdLCB0MwogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQogICAgIGxvYWRpIDhb
UENdLCB0MApAQCAtMTc4MSw4ICsxNzgwLDggQEAgbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVy
LCBpbW1lZGlhdGVIYQogICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKICAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAogICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAuaW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0gICAg
Y2VsbEhhbmRsZXIodDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdz
W3QyXSwgLnRhcmdldCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0Mgor
ICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgIGRp
c3BhdGNoKDMpCiAKIC50YXJnZXQ6CkBAIC0xOTEyLDggKzE5MTEsNyBAQCBfbGxpbnRfb3Bfc3dp
dGNoX2NoYXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hD
aGFyRmFsbFRocm91Z2gKICAgICBiaW5lcSBKU1N0cmluZzo6bV9sZW5ndGhbdDBdLCAxLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQw
CiAgICAgYnRweiAgdDAsIC5vcFN3aXRjaE9uUm9wZQpAQCAtMTk2MSw5ICsxOTU5LDkgQEAgbWFj
cm8gYXJyYXlQcm9maWxlRm9yQ2FsbCgpCiAgICAgbmVnaSB0MwogICAgIGJpbmVxIFRoaXNBcmd1
bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRhZywgLmRvbmUKICAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MAot
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oQ2FsbE9wQ29k
ZVNpemUgLSAyLCB0MSkKLSAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0
cnVjdHVyZVt0MV0KKyAgICBzdG9yZXAgdDAsIEFycmF5UHJvZmlsZTo6bV9sYXN0U2VlblN0cnVj
dHVyZUlEW3QxXQogLmRvbmU6CiBlbmQKIApAQCAtMjAyNiw4ICsyMDI0LDcgQEAgX2xsaW50X29w
X3JldF9vYmplY3Rfb3JfdGhpczoKICAgICBsb2FkaSA0W1BDXSwgdDIKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdAotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
T2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgYmJiIEpTQ2VsbDo6
bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CiAgICAg
ZG9SZXR1cm4oKQogCiAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CkBAIC0yMDQyLDggKzIw
MzksNyBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgogICAgIGxvYWRpIDRbUENdLCB0MwogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKICAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wVG9QcmltaXRpdmVJc0ltbQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgotICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgYmJuZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCiAub3BUb1By
aW1pdGl2ZUlzSW1tOgogICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCkBAIC0yMDcxLDcgKzIwNjcsNyBA
QCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKICAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KICAgICBsb2FkaSA4W1BDXSwgdDMKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdLCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCiAgICAgYnBuZXEgdDEsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xv
dwogICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hh
aW5bdDJdLCB0MAogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCkBA
IC0yMDc5LDcgKzIwNzUsNyBAQCBfbGxpbnRfb3BfbmV4dF9wbmFtZToKIC5vcE5leHRQbmFtZUNo
ZWNrUHJvdG90eXBlTG9vcDoKICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdP
ZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CiAgICAgbG9hZHAgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgotICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0s
IHQxCiAgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBhZGRwIDQsIHQw
CiAgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCkBAIC0yMzI0
LDcgKzIzMjAsNyBAQCBtYWNybyBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKG9wZXJhbmQsIHNsCiAg
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRwIFtjZnIsIHQw
LCA4XSwgdDAKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIHNsb3dQYXRoCisgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDEsIHNsb3dQYXRoCiBlbmQKIAogbWFjcm8gZ2V0UHJvcGVydHkoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NDIs
NiArNDQyLDI5IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAor
bWFjcm8gbG9hZFN0cnVjdHVyZShjZWxsLCBzdHJ1Y3R1cmUpCitlbmQKKworbWFjcm8gbG9hZFN0
cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgc2NyYXRjaAorICAgIGxvYWRwIENvZGVCbG9jazo6bV92bVtzY3JhdGNo
XSwgc2NyYXRjaAorICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxl
ICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtzY3JhdGNoXSwgc2NyYXRjaAorICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisgICAgbG9hZHAgW3NjcmF0
Y2gsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQorZW5kCisKK21hY3JvIGxvYWRTdHJ1Y3R1cmVB
bmRDbG9iYmVyRmlyc3RBcmcoY2VsbCwgc3RydWN0dXJlKQorICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIGNl
bGwKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdm1bY2VsbF0sIGNlbGwKKyAgICBsb2FkcCBWTTo6
aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6Om1fdGFi
bGVbY2VsbF0sIGNlbGwKKyAgICBsb2FkcCBbY2VsbCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJl
CitlbmQKKworbWFjcm8gc3RvcmVTdHJ1Y3R1cmVXaXRoVHlwZUluZm8oY2VsbCwgc3RydWN0dXJl
LCBzY3JhdGNoKQorICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9ibG9iICsgU3RydWN0dXJlSURCbG9i
Ojp1LmRvdWJsZVdvcmRbc3RydWN0dXJlXSwgc2NyYXRjaAorICAgIHN0b3JlcSBzY3JhdGNoLCBK
U0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0KK2VuZAogCiAjIEVudHJ5cG9pbnRzIGludG8gdGhl
IGludGVycHJldGVyLgogCkBAIC01OTUsMTAgKzYxOCwxMCBAQCBfbGxpbnRfb3BfdG9fdGhpczoK
ICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwor
ICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNT
bG93CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCi0gICAgYnBuZXEgdDAsIHQyLCAub3BUb1RoaXNTbG93Cisg
ICAgYnBuZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93CiAgICAgZGlzcGF0Y2goMykKIAogLm9wVG9U
aGlzU2xvdzoKQEAgLTcxMywxMSArNzM2LDExIEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb24o
KQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBidGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkCisgICAgYnRibnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKICAgICBtb3ZlIDAsIHQwCiAg
ICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKKyAgICBsb2FkU3RydWN0dXJl
V2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBjcGVxIFN0cnVj
dHVyZTo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MCwgdDAKQEAgLTEwNTQsOCArMTA3Nyw3IEBAIF9s
bGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bCh0MSwgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAotICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdworICAgIGJ0YnogSlNDZWxsOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKICAgICBkaXNwYXRjaCg1
KQogCiAub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKQEAgLTEwNjcsMjQgKzEwODksMjMgQEAgX2xs
aW50X29wX2luc3RhbmNlb2Y6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgICMgQWN0dWFsbHkg
ZG8gdGhlIHdvcmsuCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQwKQotICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0
MCwgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgotICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBiYmIgSlNDZWxsOjptX3R5
cGVbdDFdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0
cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDIsIC5v
cEluc3RhbmNlb2ZTbG93KQogICAgIAogICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90
eXBlLCB0MiA9IHZhbHVlCiAgICAgbW92ZSAxLCB0MAogLm9wSW5zdGFuY2VvZkxvb3A6Ci0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCi0gICAgbG9hZHEgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZVt0Ml0sIHQyCisgICAgbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyh0
MiwgdDMpCisgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0M10sIHQyCiAgICAgYnFl
cSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCiAgICAgYnRxeiB0MiwgdGFnTWFzaywgLm9wSW5z
dGFuY2VvZkxvb3AKIAogICAgIG1vdmUgMCwgdDAKIC5vcEluc3RhbmNlb2ZEb25lOgogICAgIG9y
cSBWYWx1ZUZhbHNlLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MykKICAgICBz
dG9yZXEgdDAsIFtjZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDQpCiAKQEAgLTExMDQsMTcgKzEx
MjUsMTcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZXEgdDMsIFtjZnIsIHQy
LCA4XQogICAgIGRpc3BhdGNoKDMpCiAub3BJc1VuZGVmaW5lZENlbGw6Ci0gICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCi0gICAgYnRibnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVl
cmFkZXNBc1VuZGVmaW5lZAorICAgIGJ0Ym56IEpTQ2VsbDo6bV9mbGFnc1t0MF0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkCiAgICAgbW92ZSBWYWx1ZUZh
bHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2goMykKIC5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkOgorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwg
dDMsIHQxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxPYmplY3RbdDFdLCB0MQotICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9i
amVjdFt0MF0sIHQxLCB0MwotICAgIG9ycSBWYWx1ZUZhbHNlLCB0MwotICAgIHN0b3JlcSB0Mywg
W2NmciwgdDIsIDhdCisgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEs
IHQwCisgICAgb3JxIFZhbHVlRmFsc2UsIHQwCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MiwgOF0K
ICAgICBkaXNwYXRjaCgzKQogCiAKQEAgLTExNDcsOCArMTE2OCw3IEBAIF9sbGludF9vcF9pc19z
dHJpbmc6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQyKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDEsIHQwKQogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc1N0cmluZ05v
dENlbGwKLSAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKLSAgICBjYmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0
MQorICAgIGNiZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCB0MQogICAgIG9ycSBW
YWx1ZUZhbHNlLCB0MQogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0Y2go
MykKQEAgLTEyMDAsMTQgKzEyMjAsMTUgQEAgbWFjcm8gZ2V0QnlJZChnZXRQcm9wZXJ0eVN0b3Jh
Z2UpCiAgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3
ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAogICAgICMgd2Ugd291bGQgaGF2ZSBiZWVu
IGRvaW5nIGFueXdheS4KICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDApCi0gICAgbG9h
ZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
dDAsIHQzLCAub3BHZXRCeUlkU2xvdykKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIp
CisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQzLCB0MiwgdDEpCisgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oNCwgdDEpCisgICAgYnBuZXEgdDIsIHQxLCAub3BHZXRCeUlkU2xvdwogICAg
IGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDMsCiAgICAgICAgIHQwLAogICAgICAgICBt
YWNybyAocHJvcGVydHlTdG9yYWdlLCBzY3JhdGNoKQotICAgICAgICAgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgICAgICAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDUsIHQyKQogICAgICAgICAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDEsIHQxKQogICAgICAgICAgICAgbG9hZHEgW3Byb3BlcnR5U3RvcmFnZSwgdDJdLCBzY3JhdGNo
CiAgICAgICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW2NmciwgdDEsIDhdCkBAIC0xMjMzLDcgKzEy
NTQsNyBAQCBfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMiwgdDApCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwodDAsIHQzLCAub3BHZXRBcnJheUxlbmd0aFNsb3cpCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQyCisgICAgbW92ZSB0MywgdDIKICAgICBh
cnJheVByb2ZpbGUodDIsIHQxLCB0MCkKICAgICBidGl6IHQyLCBJc0FycmF5LCAub3BHZXRBcnJh
eUxlbmd0aFNsb3cKICAgICBidGl6IHQyLCBJbmRleGluZ1NoYXBlTWFzaywgLm9wR2V0QXJyYXlM
ZW5ndGhTbG93CkBAIC0xMjcxLDE1ICsxMjkyLDE2IEBAIG1hY3JvIHB1dEJ5SWQoZ2V0UHJvcGVy
dHlTdG9yYWdlKQogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmRzKDEsIDMpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQzKQotICAgIGxvYWRwRnJv
bUluc3RydWN0aW9uKDQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQzLCB0
MCwgLm9wUHV0QnlJZFNsb3cpCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQyKQorICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGxvYWRwRnJvbUluc3Ry
dWN0aW9uKDQsIHQxKQorICAgIGJwbmVxIHQyLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICBnZXRQ
cm9wZXJ0eVN0b3JhZ2UoCiAgICAgICAgIHQwLAogICAgICAgICB0MywKICAgICAgICAgbWFjcm8g
KHByb3BlcnR5U3RvcmFnZSwgc2NyYXRjaCkKLSAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKICAgICAgICAgICAgIGxvYWRpc0Zyb21J
bnN0cnVjdGlvbig1LCB0MSkKKyAgICAgICAgICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0
MikKICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHNjcmF0Y2gpCiAgICAg
ICAgICAgICBzdG9yZXEgc2NyYXRjaCwgW3Byb3BlcnR5U3RvcmFnZSwgdDFdCiAgICAgICAgICAg
ICBkaXNwYXRjaCg5KQpAQCAtMTMwNCw5ICsxMzI2LDEwIEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0
aW9uKGFkZGl0aW9uYWxDaGVja3MKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDMsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MykKKyAgICBicG5lcSB0MiwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRk
aXRpb25hbENoZWNrcyh0MSwgdDMsIHQyKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0
MikKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
Ci0gICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9u
KDUsIHQxKQogICAgIGdldFByb3BlcnR5U3RvcmFnZSgKICAgICAgICAgdDAsCkBAIC0xMzE2LDE1
ICsxMzM5LDE2IEBAIG1hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MKICAg
ICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxKQogICAgICAgICAgICAgc3Rv
cmVxIHQxLCBbdDNdCiAgICAgICAgICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MSkKLSAg
ICAgICAgICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICAgICAgICAg
IGxvYWRpIFN0cnVjdHVyZTo6bV9ibG9iICsgU3RydWN0dXJlSURCbG9iOjp1LndvcmRzLndvcmQx
W3QxXSwgdDEKKyAgICAgICAgICAgIHN0b3JlaSB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XQogICAgICAgICAgICAgZGlzcGF0Y2goOSkKICAgICAgICAgZW5kKQogZW5kCiAKLW1hY3JvIG5v
QWRkaXRpb25hbENoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBub0FkZGl0aW9u
YWxDaGVja3Mob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBz
dHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1
cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGNvbnN0
IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSBy
ZWdpc3RlciBmb3IgdGhlIHByb3RvCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNywgc2NyYXRj
aCkKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCkBAIC0xMzMz
LDcgKzEzNTcsOCBAQCBtYWNybyBzdHJ1Y3R1cmVDaGFpbkNoZWNrcyhvbGRTdHJ1Y3R1cmUsCiAg
ICAgYnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW29sZFN0cnVjdHVyZV0sIFZhbHVlTnVsbCwg
LmRvbmUKIC5sb29wOgogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbb2xkU3RydWN0
dXJlXSwgcHJvdG9DZWxsCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxd
LCBvbGRTdHJ1Y3R1cmUKKyAgICBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKHByb3Rv
Q2VsbCwgc2NyYXRjaDIpCisgICAgbW92ZSBzY3JhdGNoMiwgb2xkU3RydWN0dXJlCiAgICAgYnBu
ZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIC5vcFB1dEJ5SWRTbG93CiAgICAgYWRkcCA4LCBz
Y3JhdGNoCiAgICAgYnFuZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVtvbGRTdHJ1Y3R1cmVdLCBW
YWx1ZU51bGwsIC5sb29wCkBAIC0xMzYwLDggKzEzODUsOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X3Zh
bDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQy
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgogICAgIGxvYWRwRnJvbUlu
c3RydWN0aW9uKDQsIHQzKQorICAgIG1vdmUgdDAsIHQyCiAgICAgYXJyYXlQcm9maWxlKHQyLCB0
MywgdDEpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQzKQogICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVJbnQzMih0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKQEAgLTE0NDQsNyArMTQ2
OSw3IEBAIF9sbGludF9vcF9nZXRfYnlfcG5hbWU6CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwodDIsIHQwLCAub3BHZXRCeVBuYW1lU2xvdykKICAgICBhc3NlcnROb3RDb25zdGFudCh0
MykKICAgICBsb2FkcSBbY2ZyLCB0MywgOF0sIHQxCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMpCiAg
ICAgYnBuZXEgdDIsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qx
XSwgLm9wR2V0QnlQbmFtZVNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMpCiAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKQEAgLTE0ODUsOCArMTUxMCw4
IEBAIG1hY3JvIHB1dEJ5VmFsKGhvbGVDaGVjaywgc2xvd1BhdGgpCiAgICAgd3JpdGVCYXJyaWVy
T25PcGVyYW5kcygxLCAzKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbCh0MCwgdDEsIC5vcFB1dEJ5VmFsU2xvdykKLSAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKICAgICBsb2FkcEZyb21JbnN0cnVjdGlv
big0LCB0MykKKyAgICBtb3ZlIHQxLCB0MgogICAgIGFycmF5UHJvZmlsZSh0MiwgdDMsIHQwKQog
ICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlSW50MzIodDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCkBAIC0xNTg5LDggKzE2MTQsOCBAQCBt
YWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdN
YXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCi0g
ICAgY2VsbEhhbmRsZXIodDIsIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QyXSwgLnRhcmdldCkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0
MSkKKyAgICBjZWxsSGFuZGxlcih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAg
ICBkaXNwYXRjaCgzKQogCiAudGFyZ2V0OgpAQCAtMTcyMiw4ICsxNzQ3LDcgQEAgX2xsaW50X29w
X3N3aXRjaF9jaGFyOgogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVt
cFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKICAg
ICBidHFueiB0MSwgdGFnTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQwCi0gICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmluZXEgSlNTdHJpbmc6Om1fbGVuZ3RoW3QxXSwgMSwg
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDFd
LCB0MAogICAgIGJ0cHogIHQwLCAub3BTd2l0Y2hPblJvcGUKQEAgLTE3NzIsOSArMTc5Niw5IEBA
IG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwoKQogICAgIG5lZ3AgdDMKICAgICBsb2FkcSBUaGlz
QXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5k
b25lCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCiAgICAgbG9hZHBGcm9t
SW5zdHJ1Y3Rpb24oKENhbGxPcENvZGVTaXplIC0gMiksIHQxKQotICAgIHN0b3JlcCB0MCwgQXJy
YXlQcm9maWxlOjptX2xhc3RTZWVuU3RydWN0dXJlW3QxXQorICAgIGxvYWRpIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVJRFt0MF0sIHQzCisgICAgc3RvcmVpIHQzLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRFt0MV0KIC5kb25lOgogZW5kCiAKQEAgLTE4MzUsOCArMTg1OSw3IEBAIF9s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQyKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwKQogICAgIGJ0cW56IHQwLCB0
YWdNYXNrLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKLSAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAor
ICAgIGJiYiBKU0NlbGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdAogICAgIGRvUmV0dXJuKCkKIAogLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
OgpAQCAtMTg1MSw4ICsxODc0LDcgQEAgX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKICAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDApCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KLSAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKLSAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVT
bG93Q2FzZQorICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZQogLm9wVG9QcmltaXRpdmVJc0ltbToKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQzLCA4XQogICAgIGRpc3BhdGNoKDMpCkBAIC0xODgyLDcgKzE5MDQsNyBAQCBfbGxpbnRf
b3BfbmV4dF9wbmFtZToKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDMpCiAgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDMpCiAgICAgbG9hZHEgW2NmciwgdDMsIDhdLCB0MwotICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MywgdDEsIHQwKQogICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2Nh
Y2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBsb2FkcCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MApAQCAtMTg5MCw3ICsxOTEyLDcgQEAgX2xs
aW50X29wX25leHRfcG5hbWU6CiAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CiAgICAg
YnFlcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QxXSwgVmFsdWVOdWxsLCAub3BOZXh0UG5hbWVT
bG93CiAgICAgbG9hZHEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0MV0sIHQyCi0gICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQyLCB0MSwgdDMpCiAgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKICAgICBh
ZGRwIDgsIHQwCiAgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
CkBAIC0yMDk2LDggKzIxMTgsOSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29wZToKIG1hY3JvIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1BhdGgpCiAgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MSkKLSAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIHNsb3dQ
YXRoCisgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCiAKIG1hY3JvIGdldFByb3BlcnR5
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtNDM5LDEx
ICs0MzksMTIgQEAgbWFjcm8gc2xvd1BhdGhGb3JDYWxsKHNsb3dQYXRoKQogICAgICAgICBlbmQp
CiBlbmQKIAotbWFjcm8gYXJyYXlQcm9maWxlKHN0cnVjdHVyZUFuZEluZGV4aW5nVHlwZSwgcHJv
ZmlsZSwgc2NyYXRjaCkKLSAgICBjb25zdCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVBbmRJbmRleGlu
Z1R5cGUKLSAgICBjb25zdCBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmVBbmRJbmRleGluZ1R5cGUK
LSAgICBzdG9yZXAgc3RydWN0dXJlLCBBcnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVb
cHJvZmlsZV0KLSAgICBsb2FkYiBTdHJ1Y3R1cmU6Om1faW5kZXhpbmdUeXBlW3N0cnVjdHVyZV0s
IGluZGV4aW5nVHlwZQorbWFjcm8gYXJyYXlQcm9maWxlKGNlbGxBbmRJbmRleGluZ1R5cGUsIHBy
b2ZpbGUsIHNjcmF0Y2gpCisgICAgY29uc3QgY2VsbCA9IGNlbGxBbmRJbmRleGluZ1R5cGUKKyAg
ICBjb25zdCBpbmRleGluZ1R5cGUgPSBjZWxsQW5kSW5kZXhpbmdUeXBlIAorICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc2NyYXRjaAorICAgIHN0b3JlaSBzY3JhdGNoLCBB
cnJheVByb2ZpbGU6Om1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFtwcm9maWxlXQorICAgIGxvYWRiIEpT
Q2VsbDo6bV9pbmRleGluZ1R5cGVbY2VsbF0sIGluZGV4aW5nVHlwZQogZW5kCiAKIG1hY3JvIGNo
ZWNrTWFya0J5dGUoY2VsbCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBjb250aW51YXRpb24pCkBAIC02
MjAsOCArNjIxLDggQEAgbWFjcm8gYWxsb2NhdGVKU09iamVjdChhbGxvY2F0b3IsIHN0cnVjdAog
ICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mRmlyc3RGcmVlQ2VsbFthbGxvY2F0b3Jd
CiAgICAgCiAgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgotICAgICAgICBzdG9yZXAg
c3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KICAgICAgICAgc3RvcmVwIDAs
IEpTT2JqZWN0OjptX2J1dHRlcmZseVtyZXN1bHRdCisgICAgICAgIHN0b3JlU3RydWN0dXJlV2l0
aFR5cGVJbmZvKHJlc3VsdCwgc3RydWN0dXJlLCBzY3JhdGNoMSkKICAgICBlbmQKIGVuZAogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAJKHJldmlz
aW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEFyZ3VtZW50czo6Y3Jl
YXRlU3RyaWN0TW9kZUNhbGxlcklmCiAgICAgbV9vdmVycm9kZUNhbGxlciA9IHRydWU7CiAgICAg
UHJvcGVydHlEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CiAgICAgZGVzY3JpcHRvci5zZXRBY2Nlc3Nv
ckRlc2NyaXB0b3IoZ2xvYmFsT2JqZWN0KCktPnRocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZt
KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgQWNjZXNzb3IpOwotICAgIG1ldGhvZFRhYmxlKCkt
PmRlZmluZU93blByb3BlcnR5KHRoaXMsIGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwg
ZGVzY3JpcHRvciwgZmFsc2UpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVP
d25Qcm9wZXJ0eSh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIGRlc2NyaXB0
b3IsIGZhbHNlKTsKIH0KIAogdm9pZCBBcmd1bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJ
Zk5lY2Vzc2FyeShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBBcmd1
bWVudHM6OmNyZWF0ZVN0cmljdE1vZGVDYWxsZWVJZgogICAgIG1fb3ZlcnJvZGVDYWxsZWUgPSB0
cnVlOwogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjcmlwdG9yOwogICAgIGRlc2NyaXB0b3Iu
c2V0QWNjZXNzb3JEZXNjcmlwdG9yKGdsb2JhbE9iamVjdCgpLT50aHJvd1R5cGVFcnJvckdldHRl
clNldHRlcih2bSksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IEFjY2Vzc29yKTsKLSAgICBtZXRo
b2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzLCBleGVjLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jYWxsZWUsIGRlc2NyaXB0b3IsIGZhbHNlKTsKKyAgICBtZXRob2RUYWJsZShleGVjLT52bSgp
KS0+ZGVmaW5lT3duUHJvcGVydHkodGhpcywgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVl
LCBkZXNjcmlwdG9yLCBmYWxzZSk7CiB9CiAKIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIAog
ICAgIHsgCi0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsgCisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKEFyZ3VtZW50c1R5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsgCiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZOdW1Bcmd1bWVu
dHMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQXJndW1lbnRzLCBtX251bUFyZ3VtZW50cyk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDE2ICsyMTIsMTYg
QEAgdm9pZCBzaGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aAogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgZnJvbSk7CiAgICAgICAgICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0
bywgdmFsdWUsIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+
dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsKKyAgICAgICAgfSBlbHNlIGlmICghdGhp
c09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlz
T2JqLCBleGVjLCB0bykpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoOyBrID4g
bGVuZ3RoIC0gY291bnQ7IC0taykgewotICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsKKyAgICAg
ICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjU2LDggKzI1Niw4IEBAIHZvaWQgdW5z
aGlmdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiAKICAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGZyb20pOwogICAgICAgICAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHRoaXNP
YmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0
cnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhpc09i
ai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdG8s
IHZhbHVlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bykpIHsK
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTI4MCwxMSArMjgwLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90
b0YKIAogICAgIC8vIDMuIElmIElzQ2FsbGFibGUoZnVuYykgaXMgZmFsc2UsIHRoZW4gbGV0IGZ1
bmMgYmUgdGhlIHN0YW5kYXJkIGJ1aWx0LWluIG1ldGhvZCBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nICgxNS4yLjQuMikuCiAgICAgaWYgKCFmdW5jdGlvbi5pc0NlbGwoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0
ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0i
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiW29iamVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CiAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJbb2JqZWN0ICIsIHRoaXNPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiW29i
amVjdCAiLCB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRo
aXNPYmplY3QpLCAiXSIpKTsKIAogICAgIC8vIDQuIFJldHVybiB0aGUgcmVzdWx0IG9mIGNhbGxp
bmcgdGhlIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCBvZiBmdW5jIHByb3ZpZGluZyBhcnJheSBh
cyB0aGUgdGhpcyB2YWx1ZSBhbmQgYW4gZW1wdHkgYXJndW1lbnRzIGxpc3QuCiAgICAgaWYgKCFp
c0pTQXJyYXkodGhpc09iamVjdCkgfHwgY2FsbFR5cGUgIT0gQ2FsbFR5cGVIb3N0IHx8IGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbiAhPSBhcnJheVByb3RvRnVuY0pvaW4pCkBAIC00NjgsNyArNDY4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICBy
ZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgbGVuZ3RoIC0gMSk7CiAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpKSB7CisgICAgICAgIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAg
IH0KQEAgLTUyOCwxOSArNTI4LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJy
YXlQcm90b0YKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAKICAgICAgICAgaWYgKG9iajIpIHsKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaywgb2JqMiwgdHJ1ZSk7CisgICAgICAg
ICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2Jq
LCBleGVjLCBrLCBvYmoyLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwotICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaykpIHsKKyAgICAgICAgfSBlbHNlIGlmICgh
dGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0
aGlzT2JqLCBleGVjLCBrKSkgewogICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAob2JqKSB7Ci0gICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXNPYmot
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwg
b2JqLCB0cnVlKTsKICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgbGsxKSkgeworICAgICAgICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4
ZWMsIGxrMSkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICB9CkBAIC02NTgsMTggKzY1OCwx
OCBAQCBzdGF0aWMgYm9vbCBwZXJmb3JtU2xvd1NvcnQoRXhlY1N0YXRlKiBlCiAgICAgICAgIC8v
IFN3YXAgdGhlbWluIGFuZCBpCiAgICAgICAgIGlmICh0aGVtaW4gPiBpKSB7CiAgICAgICAgICAg
ICBpZiAobWluT2JqKSB7Ci0gICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+
cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBpLCBtaW5PYmosIHRydWUpOworICAgICAgICAgICAg
ICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIGksIG1pbk9iaiwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iaiwgZXhlYywgaSkpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmot
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgaSkpIHsKICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaU9iaikgewotICAgICAgICAgICAgICAgIHRo
aXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluLCBp
T2JqLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52
bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0aGVtaW4sIGlPYmosIHRydWUpOwogICAg
ICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRoZW1pbikpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgewogICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTcw
Myw3ICs3MDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCiAgICAg
UHJvcGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOwotICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPmdldFByb3BlcnR5TmFtZXModGhpc09iaiwgZXhlYywgbmFtZUFycmF5LCBJbmNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICB0aGlzT2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqLCBleGVjLCBuYW1lQXJyYXksIEluY2x1ZGVEb250
RW51bVByb3BlcnRpZXMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtNzM0LDcgKzczNCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgaWYg
KGluZGV4IDwgZmxhdEFycmF5LT5sZW5ndGgoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAKLSAgICAgICAgaWYgKCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaW5kZXgpKSB7CisgICAgICAgIGlmICghdGhpc09iai0+
bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBpbmRleCkpIHsKICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICBmb3IgKHNpemVfdCBpID0gZmxh
dEFycmF5LT5sZW5ndGgoKTsgaS0tOykgewogICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3JI
b2xlKGZsYXRBcnJheSwgZXhlYywgaSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlKTsK
LSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVj
LCBpLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGksIHZhbHVlLCB0cnVlKTsKICAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CkBAIC04MDAsNyArODAwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IGFkZGl0aW9uYWxBcmdzOyArK2spIHsKLSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrICsgYmVnaW4sIGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KGsgKyAyKSwgdHJ1ZSk7CisgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBiZWdpbiwgZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoayArIDIpLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICB9CkBAIC04MjUsNyArODI1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvRgogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJnczsgKytr
KSB7Ci0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgaywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBr
LCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChrKSwgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNTEsNyArMjUxLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAg
QkVHSU4oKTsKICAgICBKU1ZhbHVlIHYxID0gT1AoMSkuanNWYWx1ZSgpOwogICAgIGlmICh2MS5p
c0NlbGwoKSkKLSAgICAgICAgcGNbMl0udS5zdHJ1Y3R1cmUuc2V0KGV4ZWMtPnZtKCksIGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgdjEuYXNDZWxsKCktPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgcGNbMl0udS5zdHJ1Y3R1cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCksIHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsKICAgICBlbHNl
CiAgICAgICAgIHBjWzJdLnUuc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgUkVUVVJOKHYxLnRvVGhp
cyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJpY3RNb2RlIDog
Tm90U3RyaWN0TW9kZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVi
bGljOgogICAgIH0KICAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRnVuY3Rpb25FeGVj
dXRhYmxlVHlwZTsKKyAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBGdW5jdGlvbkV4ZWN1dGFibGVU
eXBlOwogICAgIH0KICAgICBib29sIGlzUHJvZ3JhbUV4ZWN1dGFibGUoKQogICAgIHsKQEAgLTEy
MCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IDA7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRh
bDsKICAgICBpbnQgbV9udW1QYXJhbWV0ZXJzRm9yQ2FsbDsKICAgICBpbnQgbV9udW1QYXJhbWV0
ZXJzRm9yQ29uc3RydWN0OwogCkBAIC02ODAsNyArNjgwLDcgQEAgcHJpdmF0ZToKIAogaW5saW5l
IHZvaWQgRXhlY3V0YWJsZUJhc2U6OmNsZWFyQ29kZVZpcnR1YWwoRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUpCiB7Ci0gICAgc3dpdGNoIChleGVjdXRhYmxlLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnR5cGUoKSkgewogICAgIGNh
c2UgRXZhbEV4ZWN1dGFibGVUeXBlOgogICAgICAgICByZXR1cm4ganNDYXN0PEV2YWxFeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29kZSgpOwogICAgIGNhc2UgUHJvZ3JhbUV4ZWN1dGFi
bGVUeXBlOgpAQCAtNjk0LDcgKzY5NCw3IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpj
bGVhckNvZGVWaXIKIAogaW5saW5lIHZvaWQgU2NyaXB0RXhlY3V0YWJsZTo6dW5saW5rQ2FsbHMo
KQogewotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKSB7CisgICAg
c3dpdGNoICh0eXBlKCkpIHsKICAgICBjYXNlIEV2YWxFeGVjdXRhYmxlVHlwZToKICAgICAgICAg
cmV0dXJuIGpzQ2FzdDxFdmFsRXhlY3V0YWJsZSo+KHRoaXMpLT51bmxpbmtDYWxscygpOwogICAg
IGNhc2UgUHJvZ3JhbUV4ZWN1dGFibGVUeXBlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2V0dGVyU2V0dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIEpTVmFsdWUgY2FsbEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmEKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKICAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldHRlci0+bWV0aG9kVGFibGUoKS0+Z2V0Q2Fs
bERhdGEoZ2V0dGVyLCBjYWxsRGF0YSk7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXR0ZXIt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRDYWxsRGF0YShnZXR0ZXIsIGNhbGxEYXRhKTsK
ICAgICByZXR1cm4gY2FsbChleGVjLCBnZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFzZSwg
QXJnTGlzdCgpKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIGNhbGxTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlCiAgICAgYXJncy5hcHBlbmQodmFsdWUpOwogCiAgICAgQ2FsbERh
dGEgY2FsbERhdGE7Ci0gICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBzZXR0ZXItPm1ldGhvZFRhYmxl
KCktPmdldENhbGxEYXRhKHNldHRlciwgY2FsbERhdGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gc2V0dGVyLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0Q2FsbERhdGEoc2V0dGVyLCBj
YWxsRGF0YSk7CiAgICAgY2FsbChleGVjLCBzZXR0ZXIsIGNhbGxUeXBlLCBjYWxsRGF0YSwgYmFz
ZSwgYXJncyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPG11
dGV4PgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw4ICsyMzgs
OCBAQCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFNsb3dDYXNlKFZNJiB2CiB7CiAgICAgQXJy
YXlTdG9yYWdlKiBzdG9yYWdlID0gZW5zdXJlQXJyYXlTdG9yYWdlKHZtKTsKICAgICBCdXR0ZXJm
bHkqIGJ1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpOwotICAgIHVuc2lnbmVkIHByb3Bl
cnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKTsKLSAgICB1bnNp
Z25lZCBwcm9wZXJ0eVNpemUgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lU2l6ZSgpOworICAgIHVu
c2lnbmVkIHByb3BlcnR5Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUodm0pLT5vdXRPZkxpbmVDYXBhY2l0
eSgpOworICAgIHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZSh2bSktPm91dE9mTGlu
ZVNpemUoKTsKIAogICAgIC8vIElmIG5vdCwgd2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzIG9u
IHRoZSBmYXN0IHBhdGguCiAgICAgQVNTRVJUKCFhZGRUb0Zyb250IHx8IGNvdW50ID4gc3RvcmFn
ZS0+bV9pbmRleEJpYXMpOwpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlm
dENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICB1bnNpZ25lZCBuZXdTdG9yYWdlQ2FwYWNpdHk7CiAg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RvcmFnZSBhcnJheSBpcyBzdWZmaWNpZW50bHkgbGFyZ2Ug
KGJ1dCBub3QgdG9vIGxhcmdlISkgdGhlbiBqdXN0IGtlZXAgdXNpbmcgaXQuCiAgICAgaWYgKGN1
cnJlbnRDYXBhY2l0eSA+IGRlc2lyZWRDYXBhY2l0eSAmJiBpc0RlbnNlRW5vdWdoRm9yVmVjdG9y
KGN1cnJlbnRDYXBhY2l0eSwgcmVxdWlyZWRWZWN0b3JMZW5ndGgpKSB7Ci0gICAgICAgIG5ld0Fs
bG9jQmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUoKSk7CisgICAgICAgIG5ld0FsbG9j
QmFzZSA9IGJ1dHRlcmZseS0+YmFzZShzdHJ1Y3R1cmUodm0pKTsKICAgICAgICAgbmV3U3RvcmFn
ZUNhcGFjaXR5ID0gY3VycmVudENhcGFjaXR5OwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNpemVf
dCBuZXdTaXplID0gQnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1
ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKGRlc2lyZWRDYXBhY2l0eSkpOwpAQCAtMjk3LDcgKzI5
Nyw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mIHYKICAgICAgICAg
Ly8gQXRvbWljIGRlY2F5LCArIHRoZSBwb3N0LWNhcGFjaXR5IGNhbm5vdCBiZSBncmVhdGVyIHRo
YW4gd2hhdCBpcyBhdmFpbGFibGUuCiAgICAgICAgIHBvc3RDYXBhY2l0eSA9IG1pbigoc3RvcmFn
ZS0+dmVjdG9yTGVuZ3RoKCkgLSBsZW5ndGgpID4+IDEsIG5ld1N0b3JhZ2VDYXBhY2l0eSAtIHJl
cXVpcmVkVmVjdG9yTGVuZ3RoKTsKICAgICAgICAgLy8gSWYgd2UncmUgbW92aW5nIGNvbnRlbnRz
IHdpdGhpbiB0aGUgc2FtZSBhbGxvY2F0aW9uLCB0aGUgcG9zdC1jYXBhY2l0eSBpcyBiZWluZyBy
ZWR1Y2VkLgotICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShz
dHJ1Y3R1cmUoKSkgfHwgcG9zdENhcGFjaXR5IDwgc3RvcmFnZS0+dmVjdG9yTGVuZ3RoKCkgLSBs
ZW5ndGgpOworICAgICAgICBBU1NFUlQobmV3QWxsb2NCYXNlICE9IGJ1dHRlcmZseS0+YmFzZShz
dHJ1Y3R1cmUodm0pKSB8fCBwb3N0Q2FwYWNpdHkgPCBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSAt
IGxlbmd0aCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgbmV3VmVjdG9yTGVuZ3RoID0gcmVxdWly
ZWRWZWN0b3JMZW5ndGggKyBwb3N0Q2FwYWNpdHk7CkBAIC0zMDksNyArMzA5LDcgQEAgYm9vbCBK
U0FycmF5Ojp1bnNoaWZ0Q291bnRTbG93Q2FzZShWTSYgdgogICAgICAgICBBU1NFUlQoY291bnQg
KyB1c2VkVmVjdG9yTGVuZ3RoIDw9IG5ld1ZlY3Rvckxlbmd0aCk7CiAgICAgICAgIG1lbW1vdmUo
bmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IgKyBjb3VudCwgc3RvcmFnZS0+
bV92ZWN0b3IsIHNpemVvZihKU1ZhbHVlKSAqIHVzZWRWZWN0b3JMZW5ndGgpOwogICAgICAgICBt
ZW1tb3ZlKG5ld0J1dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNpemUsIGJ1
dHRlcmZseS0+cHJvcGVydHlTdG9yYWdlKCkgLSBwcm9wZXJ0eVNpemUsIHNpemVvZihKU1ZhbHVl
KSAqIHByb3BlcnR5U2l6ZSArIHNpemVvZihJbmRleGluZ0hlYWRlcikgKyBBcnJheVN0b3JhZ2U6
OnNpemVGb3IoMCkpOwotICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHkt
PmJhc2Uoc3RydWN0dXJlKCkpKSB8fCAobmV3SW5kZXhCaWFzICE9IHN0b3JhZ2UtPm1faW5kZXhC
aWFzKSkgeworICAgIH0gZWxzZSBpZiAoKG5ld0FsbG9jQmFzZSAhPSBidXR0ZXJmbHktPmJhc2Uo
c3RydWN0dXJlKHZtKSkpIHx8IChuZXdJbmRleEJpYXMgIT0gc3RvcmFnZS0+bV9pbmRleEJpYXMp
KSB7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHBy
b3BlcnR5U2l6ZSwgYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHByb3BlcnR5U2l6ZSwg
c2l6ZW9mKEpTVmFsdWUpICogcHJvcGVydHlTaXplICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSAr
IEFycmF5U3RvcmFnZTo6c2l6ZUZvcigwKSk7CiAgICAgICAgIG1lbW1vdmUobmV3QnV0dGVyZmx5
LT5hcnJheVN0b3JhZ2UoKS0+bV92ZWN0b3IsIHN0b3JhZ2UtPm1fdmVjdG9yLCBzaXplb2YoSlNW
YWx1ZSkgKiB1c2VkVmVjdG9yTGVuZ3RoKTsKIApAQCAtMzkxLDcgKzM5MSw3IEBAIGJvb2wgSlNB
cnJheTo6c2V0TGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKIAogYm9vbCBKU0FycmF5OjpzZXRMZW5n
dGgoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhyb3dFeGNlcHRp
b24pCiB7Ci0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBz
d2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICBp
ZiAoIW5ld0xlbmd0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDIwLDcgKzQyMCw3
IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywKICAgICAgICAgICAg
IGVuc3VyZUxlbmd0aChleGVjLT52bSgpLCBuZXdMZW5ndGgpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgaWYgKGluZGV4aW5nVHlwZSgpID09IEFy
cmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJm
bHktPnB1YmxpY0xlbmd0aCgpOyBpLS0gPiBuZXdMZW5ndGg7KQogICAgICAgICAgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtNDQyLDcgKzQ0Miw3IEBAIGJvb2wgSlNBcnJheTo6c2V0TGVuZ3RoKEV4ZWNTdGF0ZSog
ZXhlYywKIAogSlNWYWx1ZSBKU0FycmF5Ojpwb3AoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgICAgIApAQCAtNTM3LDcgKzUzNyw3IEBAIEpTVmFsdWUgSlNBcnJheTo6cG9w
KEV4ZWNTdGF0ZSogZXhlYykKIC8vICAtIHB1c2hpbmcgdG8gYW4gYXJyYXkgb2YgbGVuZ3RoIDJe
MzItMSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiB2b2lk
IEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHN3
aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczogewogICAgICAgICBjcmVhdGVJbml0aWFs
VW5kZWNpZGVkKGV4ZWMtPnZtKCksIDApOwogICAgICAgICBGQUxMVEhST1VHSDsKQEAgLTU2NSw3
ICs1NjUsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsK
LSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3Ro
LCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlm
ICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJv
d0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxl
bmd0aCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIEpT
QXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVj
LCBsZW5ndGgsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0
YXRlKiBleGVjLCBKU1ZhCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChsZW5ndGgg
PiBNQVhfQVJSQVlfSU5ERVgpIHsKLSAgICAgICAgICAgIG1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgodGhpcywgZXhlYywgbGVuZ3RoLCB2YWx1ZSwgdHJ1ZSk7CisgICAgICAgICAgICBtZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBsZW5ndGgsIHZhbHVlLCB0
cnVlKTsKICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4
ZWMsICJJbnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY1
MSw3ICs2NTEsNyBAQCB2b2lkIEpTQXJyYXk6OnB1c2goRXhlY1N0YXRlKiBleGVjLCBKU1ZhCiAK
ICAgICAgICAgLy8gUHVzaGluZyB0byBhbiBhcnJheSBvZiBpbnZhbGlkIGxlbmd0aCAoMl4zMS0x
KSBzdG9yZXMgdGhlIHByb3BlcnR5LCBidXQgdGhyb3dzIGEgcmFuZ2UgZXJyb3IuCiAgICAgICAg
IGlmIChzdG9yYWdlLT5sZW5ndGgoKSA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICAgICAg
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBzdG9yYWdlLT5sZW5ndGgoKSwg
dmFsdWUsIHRydWUpOworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5
SW5kZXgodGhpcywgZXhlYywgc3RvcmFnZS0+bGVuZ3RoKCksIHZhbHVlLCB0cnVlKTsKICAgICAg
ICAgICAgIC8vIFBlciBFUzUuMSAxNS40LjQuNyBzdGVwIDYgJiAxNS40LjUuMSBzdGVwIDMuZC4K
ICAgICAgICAgICAgIGlmICghZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAg
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJJ
bnZhbGlkIGFycmF5IGxlbmd0aCIpKTsKQEAgLTY3NSw3ICs2NzUsNyBAQCBib29sIEpTQXJyYXk6
OnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYWdlCiAgICAgCiAgICAgLy8gSWYgdGhlIGFycmF5IGNv
bnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBhbiBhYm5vcm1hbCBzdGF0ZSwKICAgICAv
LyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFycmF5UHJvdG90eXBlLgotICAgIGlmIChv
bGRMZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciB8fCBpblNwYXJzZUluZGV4
aW5nTW9kZSgpIHx8IHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSkKKyAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgfHwg
aW5TcGFyc2VJbmRleGluZ01vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KGluZGV4aW5nVHlwZSgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFvbGRMZW5ndGgpCkBAIC03NDks
NyArNzQ5LDcgQEAgYm9vbCBKU0FycmF5OjpzaGlmdENvdW50V2l0aEFueUluZGV4aW5nVAogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGNvdW50ID4gMCk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAg
ICAgY2FzZSBBcnJheUNsYXNzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCkBAIC04
NDcsNyArODQ3LDcgQEAgYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQXJyYXlTdG9yYQog
CiAgICAgLy8gSWYgdGhlIGFycmF5IGNvbnRhaW5zIGhvbGVzIG9yIGlzIG90aGVyd2lzZSBpbiBh
biBhYm5vcm1hbCBzdGF0ZSwKICAgICAvLyB1c2UgdGhlIGdlbmVyaWMgYWxnb3JpdGhtIGluIEFy
cmF5UHJvdG90eXBlLgotICAgIGlmIChsZW5ndGggIT0gc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZl
Y3RvciB8fCBzdG9yYWdlLT5pblNwYXJzZU1vZGUoKSB8fCBzaG91bGRVc2VTbG93UHV0KHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251
bVZhbHVlc0luVmVjdG9yIHx8IHN0b3JhZ2UtPmluU3BhcnNlTW9kZSgpIHx8IHNob3VsZFVzZVNs
b3dQdXQoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29s
IG1vdmVGcm9udCA9ICFzdGFydEluZGV4IHx8IHN0YXJ0SW5kZXggPCBsZW5ndGggLyAyOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIGJvb2wgSlNBcnJheTo6dW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmEK
IAogYm9vbCBKU0FycmF5Ojp1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiB7Ci0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNp
ZGVkOgogICAgICAgICAvLyBXZSBjb3VsZCBoYW5kbGUgdGhpcy4gQnV0IGl0IHNob3VsZG4ndCBl
dmVyIGNvbWUgdXAsIHNvIHdlIHdvbid0LgpAQCAtOTk0LDIwICs5OTQsMjAgQEAgc3RhdGljIGlu
dCBjb21wYXJlQnlTdHJpbmdQYWlyRm9yUVNvcnQoYwogICAgIHJldHVybiBjb2RlUG9pbnRDb21w
YXJlKHZhLT5zZWNvbmQsIHZiLT5zZWNvbmQpOwogfQogCi10ZW1wbGF0ZTxJbmRleGluZ1R5cGUg
aW5kZXhpbmdUeXBlPgordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBlPgog
dm9pZCBKU0FycmF5Ojpzb3J0TnVtZXJpY1ZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
Y29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxE
YXRhKQogewotICAgIEFTU0VSVChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgaW5k
ZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRo
Q29udGlndW91cyB8fCBpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKTsKKyAg
ICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIgfHwgYXJyYXlJbmRl
eGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlIHx8IGFycmF5SW5kZXhpbmdUeXBlID09IEFycmF5
V2l0aENvbnRpZ3VvdXMgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKTsKICAgICAKICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7CiAg
ICAgdW5zaWduZWQgbmV3UmVsZXZhbnRMZW5ndGg7Ci0gICAgY29tcGFjdEZvclNvcnRpbmc8aW5k
ZXhpbmdUeXBlPigKKyAgICBjb21wYWN0Rm9yU29ydGluZzxhcnJheUluZGV4aW5nVHlwZT4oCiAg
ICAgICAgIGxlbmd0aE5vdEluY2x1ZGluZ1VuZGVmaW5lZCwKICAgICAgICAgbmV3UmVsZXZhbnRM
ZW5ndGgpOwogICAgIAotICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBkYXRhID0gaW5kZXhpbmdEYXRh
PGluZGV4aW5nVHlwZT4oKTsKKyAgICBDb250aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5n
RGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKTsKICAgICAKLSAgICBpZiAoaW5kZXhpbmdUeXBlID09
IEFycmF5V2l0aEFycmF5U3RvcmFnZSAmJiBhcnJheVN0b3JhZ2UoKS0+bV9zcGFyc2VNYXAuZ2V0
KCkpIHsKKyAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdl
ICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgewogICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDE2LDcg
KzEwMTYsNyBAQCB2b2lkIEpTQXJyYXk6OnNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0CiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBib29sIGFsbFZhbHVlc0FyZU51bWJlcnMgPSB0cnVlOwot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlw
ZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6
CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0
TnVtZXJpY1ZlY3RvcihFeGVjU3RhdAogICAgIC8vIGFsc28gZG9uJ3QgcmVxdWlyZSBtZXJnZXNv
cnQncyBzdGFiaWxpdHksIHNpbmNlIHRoZXJlJ3Mgbm8gdXNlciB2aXNpYmxlCiAgICAgLy8gc2lk
ZS1lZmZlY3QgZnJvbSBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZXF1YWwgcHJpbWl0aXZlIHZhbHVl
cy4KICAgICBpbnQgKCpjb21wYXJlKShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOwotICAgIHN3
aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgewog
ICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgICAgIGNvbXBhcmUgPSBjb21wYXJlTnVtYmVy
c0ZvclFTb3J0V2l0aEludDMyOwogICAgICAgICBicmVhazsKQEAgLTEwNjEsNyArMTA2MSw3IEBA
IHZvaWQgSlNBcnJheTo6c29ydE51bWVyaWMoRXhlY1N0YXRlKiBleGUKIHsKICAgICBBU1NFUlQo
IWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwogCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5k
ZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
cnJheUNsYXNzOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtMTExNCw3ICsxMTE0LDcg
QEAgdGVtcGxhdGUgPD4gc3RydWN0IENvbnRpZ3VvdXNUeXBlQWNjZXNzbwogfTsKIAogCi10ZW1w
bGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KK3Rl
bXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5
cGU+CiB2b2lkIEpTQXJyYXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBD
b250aWd1b3VzRGF0YTxTdG9yYWdlVHlwZT4gZGF0YSwgdW5zaWduZWQgcmVsZXZhbnRMZW5ndGgp
CiB7CiAgICAgaWYgKCFyZWxldmFudExlbmd0aCkKQEAgLTExMzgsMTEgKzExMzgsMTEgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGJvb2wgaXNTb3J0aW5n
UHJpbWl0aXZlVmFsdWVzID0gdHJ1ZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVs
ZXZhbnRMZW5ndGg7IGkrKykgewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5
cGVBY2Nlc3NvcjxpbmRleGluZ1R5cGU+OjpnZXRBc1ZhbHVlKGRhdGEsIGkpOwotICAgICAgICBB
U1NFUlQoaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7
CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5SW5k
ZXhpbmdUeXBlPjo6Z2V0QXNWYWx1ZShkYXRhLCBpKTsKKyAgICAgICAgQVNTRVJUKGFycmF5SW5k
ZXhpbmdUeXBlICE9IEFycmF5V2l0aEludDMyIHx8IHZhbHVlLmlzSW50MzIoKSk7CiAgICAgICAg
IEFTU0VSVCghdmFsdWUuaXNVbmRlZmluZWQoKSk7CiAgICAgICAgIHZhbHVlc1tpXS5maXJzdCA9
IHZhbHVlOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlICE9IEFycmF5V2l0aERvdWJsZSAmJiBp
bmRleGluZ1R5cGUgIT0gQXJyYXlXaXRoSW50MzIpCisgICAgICAgIGlmIChhcnJheUluZGV4aW5n
VHlwZSAhPSBBcnJheVdpdGhEb3VibGUgJiYgYXJyYXlJbmRleGluZ1R5cGUgIT0gQXJyYXlXaXRo
SW50MzIpCiAgICAgICAgICAgICBpc1NvcnRpbmdQcmltaXRpdmVWYWx1ZXMgPSBpc1NvcnRpbmdQ
cmltaXRpdmVWYWx1ZXMgJiYgdmFsdWUuaXNQcmltaXRpdmUoKTsKICAgICB9CiAgICAgICAgIApA
QCAtMTE3Myw3ICsxMTczLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4
ZWNTdAogICAgIAogICAgIC8vIElmIHRoZSB0b1N0cmluZyBmdW5jdGlvbiBjaGFuZ2VkIHRoZSBs
ZW5ndGggb2YgdGhlIGFycmF5IG9yIHZlY3RvciBzdG9yYWdlLAogICAgIC8vIGluY3JlYXNlIHRo
ZSBsZW5ndGggdG8gaGFuZGxlIHRoZSBvcmlnbmFsIG51bWJlciBvZiBhY3R1YWwgdmFsdWVzLgot
ICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNoIChhcnJheUluZGV4aW5nVHlw
ZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2FzZSBBcnJheVdpdGhEb3VibGU6
CiAgICAgY2FzZSBBcnJheVdpdGhDb250aWd1b3VzOgpAQCAtMTE4Myw3ICsxMTgzLDcgQEAgdm9p
ZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdAogICAgIGNhc2UgQXJyYXlXaXRo
QXJyYXlTdG9yYWdlOgogICAgICAgICBpZiAoYXJyYXlTdG9yYWdlKCktPnZlY3Rvckxlbmd0aCgp
IDwgcmVsZXZhbnRMZW5ndGgpIHsKICAgICAgICAgICAgIGluY3JlYXNlVmVjdG9yTGVuZ3RoKGV4
ZWMtPnZtKCksIHJlbGV2YW50TGVuZ3RoKTsKLSAgICAgICAgICAgIENvbnRpZ3VvdXNUeXBlQWNj
ZXNzb3I8aW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3Rv
cmFnZSgpLT52ZWN0b3IoKSk7CisgICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFy
cmF5SW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3RvcmFn
ZSgpLT52ZWN0b3IoKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT5s
ZW5ndGgoKSA8IHJlbGV2YW50TGVuZ3RoKQogICAgICAgICAgICAgYXJyYXlTdG9yYWdlKCktPnNl
dExlbmd0aChyZWxldmFudExlbmd0aCk7CkBAIC0xMTk0LDcgKzExOTQsNyBAQCB2b2lkIEpTQXJy
YXk6OnNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0CiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWxldmFudExlbmd0aDsgaSsrKQotICAgICAgICBDb250aWd1b3VzVHlwZUFj
Y2Vzc29yPGluZGV4aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFs
dWVzW2ldLmZpcnN0KTsKKyAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3NvcjxhcnJheUluZGV4
aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVzW2ldLmZpcnN0
KTsKICAgICAKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5wb3BUZW1wU29ydFZlY3RvcigmdmFsdWVz
KTsKIH0KQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZvaWQgSlNBcnJheTo6c29ydChFeGVjU3RhdGUq
IGV4ZWMpCiB7CiAgICAgQVNTRVJUKCFpblNwYXJzZUluZGV4aW5nTW9kZSgpKTsKICAgICAKLSAg
ICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFycmF5Q2xhc3M6CiAgICAgY2FzZSBBcnJheVdpdGhV
bmRlY2lkZWQ6CiAgICAgICAgIHJldHVybjsKQEAgLTEzMzUsMTEgKzEzMzUsMTEgQEAgc3RydWN0
IEFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlIAogICAgIHN0YXRpYyBoYW5kbGUgbnVs
bCgpIHsgcmV0dXJuIDB4N0ZGRkZGRkY7IH0KIH07CiAKLXRlbXBsYXRlPEluZGV4aW5nVHlwZSBp
bmRleGluZ1R5cGU+Cit0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGU+CiB2
b2lkIEpTQXJyYXk6OnNvcnRWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBhcmVG
dW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkKIHsK
ICAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOwotICAgIEFTU0VSVChpbmRleGlu
Z1R5cGUgPT0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKTsKKyAgICBBU1NFUlQoYXJyYXlJ
bmRleGluZ1R5cGUgPT0gaW5kZXhpbmdUeXBlKCkpOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlz
IGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNvbXBhcmUgZnVuY3Rpb24gb3IgaW4g
dG9OdW1iZXIuCiAgICAgICAgIApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgdm9pZCBKU0FycmF5Ojpz
b3J0VmVjdG9yKEV4ZWNTdGF0ZSogZXhlYwogICAgIGlmIChtX2J1dHRlcmZseS0+cHVibGljTGVu
Z3RoKCkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKSkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgdW5zaWduZWQgdXNlZFZlY3Rv
ckxlbmd0aCA9IHJlbGV2YW50TGVuZ3RoPGluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25lZCB1
c2VkVmVjdG9yTGVuZ3RoID0gcmVsZXZhbnRMZW5ndGg8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAg
ICAgdW5zaWduZWQgbm9kZUNvdW50ID0gdXNlZFZlY3Rvckxlbmd0aDsKICAgICAgICAgCiAgICAg
aWYgKCFub2RlQ291bnQpCkBAIC0xNDE2LDE0ICsxNDE2LDE0IEBAIHZvaWQgSlNBcnJheTo6c29y
dFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbGVtZW50c1RvRXh0cmFjdFRocmVzaG9sZDsgKytpKSB7
CiAgICAgICAgIEFTU0VSVChpIDwgYnV0dGVyZmx5KCktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCisg
ICAgICAgIGlmIChpbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAg
ICBidXR0ZXJmbHkoKS0+Y29udGlndW91c0RvdWJsZSgpW2ldID0gdHJlZS5hYnN0cmFjdG9yKCku
bV9ub2Rlc1sqaXRlcl0udmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgY3VycmVudEluZGV4aW5nRGF0YSgpW2ldLnNldCh2bSwgdGhpcywgdHJlZS5hYnN0cmFjdG9y
KCkubV9ub2Rlc1sqaXRlcl0udmFsdWUpOwogICAgICAgICArK2l0ZXI7CiAgICAgfQogICAgIC8v
IFB1dCB1bmRlZmluZWQgdmFsdWVzIGJhY2sgaW4uCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBcnJheVdpdGhJbnQzMjoKICAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKICAgICAgICAgQVNT
RVJUKGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkID09IHVuZGVmaW5lZEVsZW1lbnRzVGhyZXNo
b2xkKTsKQEAgLTE0MzksMTMgKzE0MzksMTMgQEAgdm9pZCBKU0FycmF5Ojpzb3J0VmVjdG9yKEV4
ZWNTdGF0ZSogZXhlYwogICAgIC8vIEVuc3VyZSB0aGF0IHVudXNlZCB2YWx1ZXMgaW4gdGhlIHZl
Y3RvciBhcmUgemVyb2VkIG91dC4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSB1bmRlZmluZWRFbGVt
ZW50c1RocmVzaG9sZDsgaSA8IGNsZWFyRWxlbWVudHNUaHJlc2hvbGQ7ICsraSkgewogICAgICAg
ICBBU1NFUlQoaSA8IGJ1dHRlcmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIGlmIChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQogICAgICAgICAgICAgYnV0dGVy
Zmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5jbGVhcigpOwogICAgIH0KICAgICAKLSAg
ICBpZiAoaGFzQXJyYXlTdG9yYWdlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUoKSkpCiAgICAgICAgIGFycmF5U3RvcmFn
ZSgpLT5tX251bVZhbHVlc0luVmVjdG9yID0gbmV3VXNlZFZlY3Rvckxlbmd0aDsKIH0KIApAQCAt
MTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YQogewogICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CiAgICAgCi0gICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5n
VHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNp
ZGVkOgogICAgICAgICByZXR1cm47CkBAIC0xNDg1LDcgKzE0ODUsNyBAQCB2b2lkIEpTQXJyYXk6
OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgdW5zaWduZWQgdmVjdG9yRW5kOwogICAg
IFdyaXRlQmFycmllcjxVbmtub3duPiogdmVjdG9yOwogICAgIAotICAgIHN3aXRjaCAoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTE1NDcs
NyArMTU0Nyw3IEBAIHZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSoKICAg
ICB1bnNpZ25lZCB2ZWN0b3JFbmQ7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUxlbmd0aCAr
IGZpcnN0VmFyQXJnT2Zmc2V0OwogICAgIEFTU0VSVChsZW5ndGggPT0gdGhpcy0+bGVuZ3RoKCkp
OwotICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNo
IChpbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQXJyYXlDbGFzczoKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKQEAgLTE2MDIsNDAgKzE2MDIsNDAgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGkgLSBm
aXJzdFZhckFyZ09mZnNldCwgZ2V0KGV4ZWMsIGkpKTsKIH0KIAotdGVtcGxhdGU8SW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZT4KK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlw
ZT4KIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQmIG51bURlZmluZWQs
IHVuc2lnbmVkJiBuZXdSZWxldmFudExlbmd0aCkKIHsKICAgICBBU1NFUlQoIWluU3BhcnNlSW5k
ZXhpbmdNb2RlKCkpOwotICAgIEFTU0VSVChpbmRleGluZ1R5cGUgPT0gc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKTsKKyAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gaW5kZXhpbmdU
eXBlKCkpOwogCi0gICAgdW5zaWduZWQgbXlSZWxldmFudExlbmd0aCA9IHJlbGV2YW50TGVuZ3Ro
PGluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25lZCBteVJlbGV2YW50TGVuZ3RoID0gcmVsZXZh
bnRMZW5ndGg8YXJyYXlJbmRleGluZ1R5cGU+KCk7CiAgICAgCiAgICAgbnVtRGVmaW5lZCA9IDA7
CiAgICAgdW5zaWduZWQgbnVtVW5kZWZpbmVkID0gMDsKICAgICAgICAgCiAgICAgZm9yICg7IG51
bURlZmluZWQgPCBteVJlbGV2YW50TGVuZ3RoOyArK251bURlZmluZWQpIHsKICAgICAgICAgQVNT
RVJUKG51bURlZmluZWQgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICBp
ZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CisgICAgICAgIGlmIChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgewogICAgICAgICAgICAgSlNWYWx1ZSB2ID0g
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWRdLmdldCgpOwogICAgICAg
ICAgICAgaWYgKCF2KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgQVNTRVJU
KHYuaXNJbnQzMigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAgIGlmIChhcnJh
eUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgIGRvdWJsZSB2
ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkXTsKICAgICAgICAg
ICAgIGlmICh2ICE9IHYpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQotICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0RhdGE8aW5kZXhp
bmdUeXBlPigpW251bURlZmluZWRdLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGlu
Z0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZF0uZ2V0KCk7CiAgICAgICAgIGlm
ICghdiB8fCB2LmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBteVJlbGV2YW50TGVu
Z3RoOyArK2kpIHsKICAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3Ro
KCkpOwotICAgICAgICBpZiAoaW5kZXhpbmdUeXBlID09IEFycmF5V2l0aEludDMyKSB7CisgICAg
ICAgIGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgewogICAgICAgICAg
ICAgSlNWYWx1ZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW2ldLmdldCgpOwog
ICAgICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTY0NCw3
ICsxNjQ0LDcgQEAgdm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZAogICAg
ICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWQrK10uc2V0
V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChpbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlKSB7CisgICAgICAg
IGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAg
IGRvdWJsZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXTsKICAgICAgICAg
ICAgIGlmICh2ICE9IHYpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjUyLDIzICsx
NjUyLDIzIEBAIHZvaWQgSlNBcnJheTo6Y29tcGFjdEZvclNvcnRpbmcodW5zaWduZWQKICAgICAg
ICAgICAgIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZCsrXSA9IHY7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBKU1ZhbHVlIHYgPSBp
bmRleGluZ0RhdGE8aW5kZXhpbmdUeXBlPigpW2ldLmdldCgpOworICAgICAgICBKU1ZhbHVlIHYg
PSBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uZ2V0KCk7CiAgICAgICAgIGlm
ICh2KSB7CiAgICAgICAgICAgICBpZiAodi5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgICAg
ICsrbnVtVW5kZWZpbmVkOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKG51bURlZmluZWQgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwotICAgICAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZCsrXS5zZXRXaXRo
b3V0V3JpdGVCYXJyaWVyKHYpOworICAgICAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUlu
ZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIodik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgICAgIAogICAgIG5ld1JlbGV2YW50
TGVuZ3RoID0gbnVtRGVmaW5lZCArIG51bVVuZGVmaW5lZDsKICAgICAKLSAgICBpZiAoaGFzQXJy
YXlTdG9yYWdlKGluZGV4aW5nVHlwZSkpCisgICAgaWYgKGhhc0FycmF5U3RvcmFnZShhcnJheUlu
ZGV4aW5nVHlwZSkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFhcnJheVN0b3JhZ2UoKS0+bV9z
cGFyc2VNYXApOwogICAgIAotICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKSB7CisgICAgc3dpdGNo
IChhcnJheUluZGV4aW5nVHlwZSkgewogICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6CiAgICAgY2Fz
ZSBBcnJheVdpdGhEb3VibGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bURlZmluZWQgPT0g
bmV3UmVsZXZhbnRMZW5ndGgpOwpAQCAtMTY3NywxOSArMTY3NywxOSBAQCB2b2lkIEpTQXJyYXk6
OmNvbXBhY3RGb3JTb3J0aW5nKHVuc2lnbmVkCiAgICAgZGVmYXVsdDoKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG5ld1JlbGV2YW50TGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGluZGV4aW5nRGF0YTxpbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZpbmVkKCk7Cisg
ICAgICAgICAgICBpbmRleGluZ0RhdGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uc2V0VW5kZWZp
bmVkKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IG5ld1JlbGV2YW50TGVuZ3RoOyBpIDwgbXlSZWxldmFudExlbmd0aDsgKytpKSB7CiAg
ICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKLSAgICAgICAg
aWYgKGluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpCisgICAgICAgIGlmIChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW2ldID0gUU5hTjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
aW5kZXhpbmdEYXRhPGluZGV4aW5nVHlwZT4oKVtpXS5jbGVhcigpOworICAgICAgICAgICAgaW5k
ZXhpbmdEYXRhPGFycmF5SW5kZXhpbmdUeXBlPigpW2ldLmNsZWFyKCk7CiAgICAgfQogCi0gICAg
aWYgKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUpKQorICAgIGlmIChoYXNBcnJheVN0b3Jh
Z2UoYXJyYXlJbmRleGluZ1R5cGUpKQogICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1
ZXNJblZlY3RvciA9IG5ld1JlbGV2YW50TGVuZ3RoOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE2
NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw3ICs2NDUsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppbmhlcml0cyhjb25zdCBDbGFzCiAKIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6OnRvVGhpcyhF
eGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFNb2RlKSBjb25zdAogewotICAgIHJldHVybiBp
c0NlbGwoKSA/IGFzQ2VsbCgpLT5tZXRob2RUYWJsZSgpLT50b1RoaXMoYXNDZWxsKCksIGV4ZWMs
IGVjbWFNb2RlKSA6IHRvVGhpc1Nsb3dDYXNlKGV4ZWMsIGVjbWFNb2RlKTsKKyAgICByZXR1cm4g
aXNDZWxsKCkgPyBhc0NlbGwoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnRvVGhpcyhhc0Nl
bGwoKSwgZXhlYywgZWNtYU1vZGUpIDogdG9UaGlzU2xvd0Nhc2UoZXhlYywgZWNtYU1vZGUpOwog
fQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpnZXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApAQCAtNzAwLDcgKzcwMCw3IEBAIGlubGluZSB2b2lk
IEpTVmFsdWU6OnB1dChFeGVjU3RhdGUqIGV4ZWMKICAgICAgICAgcHV0VG9QcmltaXRpdmUoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKCktPnB1dChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgYXNDZWxsKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNDZWxsKCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCiBp
bmxpbmUgdm9pZCBKU1ZhbHVlOjpwdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KQpAQCAtNzA5LDcg
KzcwOSw3IEBAIGlubGluZSB2b2lkIEpTVmFsdWU6OnB1dEJ5SW5kZXgoRXhlY1N0YXQKICAgICAg
ICAgcHV0VG9QcmltaXRpdmVCeUluZGV4KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhc0NlbGwoKS0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hv
dWxkVGhyb3cpOworICAgIGFzQ2VsbCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJ
bmRleChhc0NlbGwoKSwgZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwog
fQogCiBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjpzdHJ1Y3R1cmVPclVuZGVmaW5lZCgpIGNvbnN0
CkBAIC03MzAsNiArNzMwLDcgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6ZXF1YWwoRXhlY1N0YXRl
KiBleAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6ZXF1YWxTbG93Q2FzZUlubGluZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIpCiB7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICBkbyB7CiAgICAgICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlz
TnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gdjEuYXNOdW1iZXIoKSA9PSB2Mi5hc051bWJl
cigpOwpAQCAtNzQ0LDEzICs3NDUsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6OmVx
dWFsU2xvd0NhcwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgaWYg
KCF2Mi5pc0NlbGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICByZXR1cm4gdjIuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVk
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgICAgICAgICByZXR1cm4gdjIuYXND
ZWxsKCktPnN0cnVjdHVyZSh2bSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh2Mi5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAoIXYxLmlzQ2VsbCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0
dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgICAgIHJldHVybiB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKS0+bWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHYxLmlzT2JqZWN0KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQ2VsbCkg
PT0gc2l6ZW9mKHVpbnQ2NF90KSwganNjZWxsX2lzX2VpZ2h0X2J5dGVzKTsKIFNUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShKU0NlbGwpOwogCiB2b2lkIEpTQ2VsbDo6ZGVz
dHJveShKU0NlbGwqIGNlbGwpCkBAIC05MCw3ICs5MSw3IEBAIHZvaWQgSlNDZWxsOjpwdXQoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBKU09iamVj
dCogdGhpc09iamVjdCA9IGNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSk7Ci0gICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBzbG90KTsKKyAgICB0aGlzT2JqZWN0LT5tZXRob2RU
YWJsZShleGVjLT52bSgpKS0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50aWZpZXIsIHZhbHVl
LCBzbG90KTsKIH0KIAogdm9pZCBKU0NlbGw6OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCkBAIC0xMDEsMTkgKzEwMiwxOSBAQCB2b2lkIEpTQ2VsbDo6cHV0QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBjZWxsLT50b09iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iamVj
dCwgZXhlYywgaWRlbnRpZmllciwgdmFsdWUsIHNob3VsZFRocm93KTsKKyAgICB0aGlzT2JqZWN0
LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudGlmaWVyLCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQogCiBib29sIEpTQ2VsbDo6ZGVsZXRl
UHJvcGVydHkoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVu
dGlmaWVyKQogewogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gY2VsbC0+dG9PYmplY3QoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxl
dGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKIH0KIAogYm9vbCBKU0Nl
bGw6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQgaWRlbnRpZmllcikKIHsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGNlbGwt
PnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgcmV0dXJu
IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBp
ZGVudGlmaWVyKTsKIH0KIAogSlNWYWx1ZSBKU0NlbGw6OnRvVGhpcyhKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgRUNNQU1vZGUgZWNtYU1vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAK
ICNpbmNsdWRlICJDYWxsRGF0YS5oIgogI2luY2x1ZGUgIkNvbnN0cnVjdERhdGEuaCIKICNpbmNs
dWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW5kZXhpbmdUeXBlLmgiCiAjaW5jbHVkZSAiSlNMb2Nr
LmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAj
aW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKQEAg
LTkyLDkgKzk0LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGluaGVyaXRzKGNvbnN0IENsYXNzSW5m
byopIGNvbnN0OwogICAgIGJvb2wgaXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdDsKIAorICAgIEpT
VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSgpIGNvbnN0
OwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3Q7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUoVk0mKSBjb25zdDsKICAgICB2b2lkIHNldFN0cnVjdHVyZShWTSYsIFN0cnVjdHVyZSop
OwotICAgIHZvaWQgY2xlYXJTdHJ1Y3R1cmUoKSB7IG1fc3RydWN0dXJlLmNsZWFyKCk7IH0KKyAg
ICB2b2lkIGNsZWFyU3RydWN0dXJlKCkgeyBtX3N0cnVjdHVyZUlEID0gMDsgfQogCiAgICAgY29u
c3QgY2hhciogY2xhc3NOYW1lKCk7CiAKQEAgLTEyMSw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gT2JqZWN0IG9wZXJhdGlvbnMsIHdpdGggdGhlIHRvT2JqZWN0IG9wZXJhdGlvbiBpbmNsdWRl
ZC4KICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0OwogICAgIGNvbnN0IE1l
dGhvZFRhYmxlKiBtZXRob2RUYWJsZSgpIGNvbnN0OworICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBt
ZXRob2RUYWJsZShWTSYpIGNvbnN0OwogICAgIGNvbnN0IE1ldGhvZFRhYmxlKiBtZXRob2RUYWJs
ZUZvckRlc3RydWN0aW9uKCkgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CiAgICAg
c3RhdGljIHZvaWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpAQCAtMTM1LDIwICsxNDEsMzQg
QEAgcHVibGljOgogCiAgICAgSlNWYWx1ZSBmYXN0R2V0T3duUHJvcGVydHkoVk0mLCBjb25zdCBT
dHJpbmcmKTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgc3RydWN0dXJlT2Zmc2V0KCkKKyAgICB2
b2lkIG1hcmsoKSB7IG1fZ2NEYXRhID0gMTsgfQorICAgIGJvb2wgaXNNYXJrZWQoKSBjb25zdCB7
IHJldHVybiBtX2djRGF0YTsgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9m
ZnNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9z
dHJ1Y3R1cmUpOworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQ2VsbCwgbV9zdHJ1
Y3R1cmVJRCk7CiAgICAgfQogCi0gICAgdm9pZCogc3RydWN0dXJlQWRkcmVzcygpCisgICAgc3Rh
dGljIHB0cmRpZmZfdCB0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkKICAgICB7Ci0gICAgICAgIHJldHVy
biAmbV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNDZWxsLCBt
X2ZsYWdzKTsKICAgICB9Ci0gICAgICAgIAotI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQotICAg
IFN0cnVjdHVyZSogdW52YWxpZGF0ZWRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZS51bnZhbGlkYXRlZEdldCgpOyB9Ci0jZW5kaWYKLSAgICAgICAgCisKKyAgICBzdGF0aWMg
cHRyZGlmZl90IHR5cGVJbmZvVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEpTQ2VsbCwgbV90eXBlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IGluZGV4aW5nVHlwZU9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEpTQ2VsbCwgbV9pbmRleGluZ1R5cGUpOworICAgIH0KKworICAgIHN0YXRpYyBwdHJk
aWZmX3QgZ2NEYXRhT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoSlNDZWxsLCBtX2djRGF0YSk7CisgICAgfQorCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJy
YXlUeXBlIFR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9IE5vdFR5cGVkQXJyYXk7CiBwcm90ZWN0ZWQ6
CiAKQEAgLTE3MCw4ICsxOTAsMTIgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0gICAgICAgIAotICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworCisgICAgU3RydWN0dXJlSUQgbV9zdHJ1Y3R1cmVJ
RDsKKyAgICBJbmRleGluZ1R5cGUgbV9pbmRleGluZ1R5cGU7CisgICAgSlNUeXBlIG1fdHlwZTsK
KyAgICBUeXBlSW5mbzo6SW5saW5lVHlwZUZsYWdzIG1fZmxhZ3M7CisgICAgdWludDhfdCBtX2dj
RGF0YTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFRvLCB0eXBlbmFtZSBGcm9tPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkocmV2aXNp
b24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCisgICAgOiBtX2dj
RGF0YSgwKQogewogICAgIEFTU0VSVCghaXNDb21waWxhdGlvblRocmVhZCgpKTsKIH0KIAotaW5s
aW5lIEpTQ2VsbDo6SlNDZWxsKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBt
X3N0cnVjdHVyZSh2bSwgdGhpcywgc3RydWN0dXJlKQoraW5saW5lIEpTQ2VsbDo6SlNDZWxsKFZN
JiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBtX3N0cnVjdHVyZUlEKHN0cnVjdHVyZS0+
aWQoKSkKKyAgICAsIG1faW5kZXhpbmdUeXBlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpCisg
ICAgLCBtX3R5cGUoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSkKKyAgICAsIG1fZmxhZ3Mo
c3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKQorICAgICwgbV9nY0RhdGEo
MCkKIHsKICAgICBBU1NFUlQoIWlzQ29tcGlsYXRpb25UaHJlYWQoKSk7CiB9CkBAIC01Niw3ICs2
MSw3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRpb24oVk0mIHYKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgQVNTRVJUKG1fc3RydWN0dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxs
VGFnKQpAQCAtNjQsMjMgKzY5LDQ3IEBAIGlubGluZSB2b2lkIEpTQ2VsbDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHYKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICBBU1NFUlQodm0uaXNJbml0
aWFsaXppbmdPYmplY3QoKSk7CiAgICAgdm0uc2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoMCk7
Ci0gICAgaWYgKHN0cnVjdHVyZSkKKyAgICBpZiAoc3RydWN0dXJlKSB7CisjZW5kaWYKKyAgICAg
ICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgbV9pbmRleGluZ1R5
cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOworICAgICAgICBtX3R5cGUgPSBzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpOworICAgICAgICBtX2ZsYWdzID0gc3RydWN0dXJlLT50eXBl
SW5mbygpLmlubGluZVR5cGVGbGFncygpOworI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQorICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZtKTsKICNlbmRpZgotICAgICAgICBtX3N0cnVj
dHVyZS5zZXRFYXJseVZhbHVlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwogICAgIC8vIFZlcnkgZmly
c3Qgc2V0IG9mIGFsbG9jYXRpb25zIHdvbid0IGhhdmUgYSByZWFsIHN0cnVjdHVyZS4KLSAgICBB
U1NFUlQobV9zdHJ1Y3R1cmUgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KG1fc3RydWN0dXJlSUQgfHwgIXZtLnN0cnVjdHVyZVN0cnVjdHVyZSk7Cit9CisKK2lubGluZSBK
U1R5cGUgSlNDZWxsOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlOworfQorCitp
bmxpbmUgSW5kZXhpbmdUeXBlIEpTQ2VsbDo6aW5kZXhpbmdUeXBlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbmRleGluZ1R5cGU7CiB9CiAKIGlubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3Ry
dWN0dXJlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgcmV0
dXJuIEhlYXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQobV9zdHJ1Y3R1cmVJ
RCk7Cit9CisKK2lubGluZSBTdHJ1Y3R1cmUqIEpTQ2VsbDo6c3RydWN0dXJlKFZNJiB2bSkgY29u
c3QKK3sKKyAgICByZXR1cm4gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1fc3RydWN0
dXJlSUQpOwogfQogCiBpbmxpbmUgdm9pZCBKU0NlbGw6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBj
ZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBNQVJLX0xPR19QQVJFTlQodmlzaXRv
ciwgY2VsbCk7CiAKLSAgICB2aXNpdG9yLmFwcGVuZCgmY2VsbC0+bV9zdHJ1Y3R1cmUpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKHZpc2l0b3Iudm0oKSk7Cisg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZFBvaW50ZXIoJnN0cnVjdHVyZSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0xMTYsMzcgKzE0NSw0MSBAQCBpbmxpbmUgYm9vbCBpc1ph
cHBlZChjb25zdCBKU0NlbGwqIGNlbGwpCiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3Qo
KSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+aXNPYmplY3QoKTsKKyAgICByZXR1
cm4gVHlwZUluZm86OmlzT2JqZWN0KG1fdHlwZSk7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6
aXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gU3RyaW5nVHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IFN0cmluZ1R5cGU7CiB9
CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXIoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2V0dGVyU2V0dGVyVHlwZTsK
KyAgICByZXR1cm4gbV90eXBlID09IEdldHRlclNldHRlclR5cGU7CiB9CiAKIGlubGluZSBib29s
IEpTQ2VsbDo6aXNQcm94eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBQcm94eVR5cGU7CisgICAgcmV0dXJuIG1fdHlwZSA9PSBQcm94eVR5
cGU7CiB9CiAKIGlubGluZSBib29sIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gQVBJVmFsdWVX
cmFwcGVyVHlwZTsKKyAgICByZXR1cm4gbV90eXBlID09IEFQSVZhbHVlV3JhcHBlclR5cGU7CiB9
CiAKIGlubGluZSB2b2lkIEpTQ2VsbDo6c2V0U3RydWN0dXJlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkgPT0gdGhpcy0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbigpKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jbGFzc0luZm8oKSA9PSBt
X3N0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpOwotICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUKLSAgICAg
ICAgfHwgbV9zdHJ1Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRh
dGVkKCkKLSAgICAgICAgfHwgbV9zdHJ1Y3R1cmUuZ2V0KCkgPT0gc3RydWN0dXJlKTsKLSAgICBt
X3N0cnVjdHVyZS5zZXQodm0sIHRoaXMsIHN0cnVjdHVyZSk7CisgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCkgPT0gdGhpcy0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpKTsKKyAgICBB
U1NFUlQoIXRoaXMtPnN0cnVjdHVyZSgpCisgICAgICAgIHx8IHRoaXMtPnN0cnVjdHVyZSgpLT50
cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlkYXRlZCgpCisgICAgICAgIHx8IEhl
YXA6OmhlYXAodGhpcyktPnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlLT5pZCgpKSA9
PSBzdHJ1Y3R1cmUpOworICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKHRoaXMsIHN0cnVjdHVyZSk7
CisgICAgbV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICBtX2ZsYWdzID0gc3Ry
dWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpOworICAgIG1fdHlwZSA9IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgbV9pbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpOwogfQogCiBpbmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6
bWV0aG9kVGFibGVGb3JEZXN0cnVjdGlvbigpIGNvbnN0CkBAIC0xNTYsMTAgKzE4OSwyMCBAQCBp
bmxpbmUgY29uc3QgTWV0aG9kVGFibGUqIEpTQ2VsbDo6bWV0aG9kCiAKIGlubGluZSBjb25zdCBN
ZXRob2RUYWJsZSogSlNDZWxsOjptZXRob2RUYWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKFN0cnVj
dHVyZSogcm9vdFN0cnVjdHVyZSA9IG1fc3RydWN0dXJlLT5zdHJ1Y3R1cmUoKSkKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSgpOworICAgIGlmIChTdHJ1Y3R1cmUq
IHJvb3RTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKQogICAgICAgICBSRUxFQVNF
X0FTU0VSVChyb290U3RydWN0dXJlID09IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKTsKIAot
ICAgIHJldHVybiAmY2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlOworICAgIHJldHVybiAmc3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7Cit9CisKK2lubGluZSBjb25zdCBNZXRob2RU
YWJsZSogSlNDZWxsOjptZXRob2RUYWJsZShWTSYgdm0pIGNvbnN0Cit7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlmIChTdHJ1Y3R1cmUqIHJv
b3RTdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKQorICAgICAgICBSRUxFQVNFX0FT
U0VSVChyb290U3RydWN0dXJlID09IHJvb3RTdHJ1Y3R1cmUtPnN0cnVjdHVyZSgpKTsKKworICAg
IHJldHVybiAmc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGU7CiB9CiAKIGlubGlu
ZSBib29sIEpTQ2VsbDo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBpbmZvKSBjb25zdApAQCAt
MTk3LDYgKzI0MCwyMiBAQCBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkg
CiAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CiB9CiAKK2lubGluZSB2b2lkIEhlYXA6OndyaXRl
QmFycmllcihjb25zdCBKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8pCit7CisjaWYgRU5BQkxFKFdS
SVRFX0JBUlJJRVJfUFJPRklMSU5HKQorICAgIFdyaXRlQmFycmllckNvdW50ZXJzOjpjb3VudFdy
aXRlQmFycmllcigpOworI2VuZGlmCisgICAgaWYgKCFmcm9tIHx8ICFmcm9tLT5pc01hcmtlZCgp
KSB7CisgICAgICAgIEFTU0VSVCghZnJvbSB8fCAhaXNNYXJrZWQoZnJvbSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghdG8gfHwgdG8tPmlzTWFya2VkKCkpIHsKKyAgICAgICAg
QVNTRVJUKCF0byB8fCBpc01hcmtlZCh0bykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGFkZFRvUmVtZW1iZXJlZFNldChmcm9tKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBKU0NlbGxJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRGF0YVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDcg
KzExMyw3IEBAIFN0cnVjdHVyZSogSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKAogICAgIFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7
CiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKAotICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LAorICAgICAgICB2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKERhdGFWaWV3
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksCiAgICAgICAgIE5vbkFycmF5KTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0
aWJsZU9iamVjdC5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyAr
MzEsMTAgQEAgcHJpdmF0ZToKIAogaW5saW5lIGNvbnN0IENsYXNzSW5mbyogSlNDZWxsOjpjbGFz
c0luZm8oKSBjb25zdAogewotICAgIGlmIChNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyktPmRl
c3RydWN0b3JUeXBlKCkgPT0gTWFya2VkQmxvY2s6Ok5vcm1hbCkKKyAgICBNYXJrZWRCbG9jayog
YmxvY2sgPSBNYXJrZWRCbG9jazo6YmxvY2tGb3IodGhpcyk7CisgICAgaWYgKGJsb2NrLT5kZXN0
cnVjdG9yVHlwZSgpID09IE1hcmtlZEJsb2NrOjpOb3JtYWwpCiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBKU0Rlc3RydWN0aWJsZU9iamVjdCo+KHRoaXMpLT5jbGFzc0luZm8oKTsK
LSNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKLSAgICByZXR1cm4gbV9zdHJ1Y3R1cmUudW52YWxp
ZGF0ZWRHZXQoKS0+Y2xhc3NJbmZvKCk7Ci0jZWxzZQotICAgIHJldHVybiBtX3N0cnVjdHVyZS0+
Y2xhc3NJbmZvKCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gc3RydWN0dXJlKCpibG9jay0+dm0oKSkt
PmNsYXNzSW5mbygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzkxLDE0ICszOTEsMTUgQEAgdm9pZCBKU0Z1bmN0aW9uOjpnZXRPd25Ob25JbmRl
eFByb3BlcnR5TgogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNGdW5j
dGlvbio+KG9iamVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5j
dGlvbigpICYmIChtb2RlID09IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpKSB7CisgICAgICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBwcm90b3R5cGUgaGFz
IGJlZW4gcmVpZmllZC4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09iamVjdCk7Ci0g
ICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlz
T2JqZWN0LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzbG90KTsKKyAg
ICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhp
c09iamVjdCwgZXhlYywgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBzbG90KTsKIAotICAg
ICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKTsK
LSAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlcik7
Ci0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
OwotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSk7
CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyk7
CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcik7Cisg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCk7CisgICAg
ICAgIHByb3BlcnR5TmFtZXMuYWRkKHZtLnByb3BlcnR5TmFtZXMtPm5hbWUpOwogICAgIH0KICAg
ICBCYXNlOjpnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgcHJv
cGVydHlOYW1lcywgbW9kZSk7CiB9CkBAIC00MTQsNyArNDE1LDcgQEAgdm9pZCBKU0Z1bmN0aW9u
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjUwogICAgICAgICAvLyBNYWtlIHN1cmUgcHJvdG90eXBl
IGhhcyBiZWVuIHJlaWZpZWQsIHN1Y2ggdGhhdCBpdCBjYW4gb25seSBiZSBvdmVyd3JpdHRlbgog
ICAgICAgICAvLyBmb2xsb3dpbmcgdGhlIHJ1bGVzIHNldCBvdXQgaW4gRUNNQS0yNjIgOC4xMi45
LgogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKLSAgICAgICAgdGhpc09i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0aW9uUHJvZmlsZS5jbGVh
cigpOwogICAgICAgICB0aGlzT2JqZWN0LT5tX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5m
aXJlQWxsKCk7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHRoaXMgdG8gYmUgY2FjaGVkLCBzaW5j
ZSBhIFtbUHV0XV0gbXVzdCBjbGVhciBtX2FsbG9jYXRpb25Qcm9maWxlLgpAQCAtNDYxLDcgKzQ2
Miw3IEBAIGJvb2wgSlNGdW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmoKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHByb3RvdHlwZSBoYXMgYmVlbiByZWlmaWVkLCBzdWNoIHRoYXQgaXQgY2Fu
IG9ubHkgYmUgb3ZlcndyaXR0ZW4KICAgICAgICAgLy8gZm9sbG93aW5nIHRoZSBydWxlcyBzZXQg
b3V0IGluIEVDTUEtMjYyIDguMTIuOS4KICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc09i
amVjdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgICAgICB0aGlz
T2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgICAgIHRoaXNPYmplY3QtPm1f
YWxsb2NhdGlvblByb2ZpbGUuY2xlYXIoKTsKICAgICAgICAgdGhpc09iamVjdC0+bV9hbGxvY2F0
aW9uUHJvZmlsZVdhdGNocG9pbnQuZmlyZUFsbCgpOwogICAgICAgICByZXR1cm4gQmFzZTo6ZGVm
aW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHRo
cm93RXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAkocmV2aXNpb24gMTY0NzM4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheSk7CisgICAgICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KHR5cGVGb3JUeXBlZEFycmF5VHlwZShBZGFwdG9yOjp0eXBlVmFsdWUpLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSwgTm9uQXJyYXkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsgLy8gVGhpcyBpcyBuZXZlciBhY2Nlc3NlZCBkaXJlY3RseSwgc2luY2Ug
dGhhdCB3b3VsZCBicmVhayBsaW5rYWdlIG9uIHNvbWUgY29tcGlsZXJzLgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTY0NzM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NywxMCArNTcsOSBAQCBzdGF0aWMgdW5zaWduZWQgbGFzdEFycmF5U2l6ZSA9IDA7
CiAKIEpTQ2VsbCogZ2V0Q2FsbGFibGVPYmplY3RTbG93KEpTQ2VsbCogY2VsbCkKIHsKLSAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVjdHVyZSgpOwotICAgIGlmIChzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKQorICAgIGlmIChjZWxsLT50
eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCiAgICAgICAgIHJldHVybiBjZWxsOwotICAgIGlmIChz
dHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSW50ZXJuYWxGdW5jdGlvbjo6aW5m
bygpKSkKKyAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoSW50ZXJuYWxGdW5jdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIGNlbGw7CiAgICAg
cmV0dXJuIDA7CiB9CkBAIC0xMjksNyArMTI4LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTT2Jq
ZWN0Ojpjb3B5QnV0dGVyZgogICAgICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBjdXJy
ZW50U291cmNlOwogICAgICAgICAgICAgc2l6ZV90IGNvdW50OwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBzd2l0Y2ggKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgICAg
IHN3aXRjaCAodGhpcy0+aW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBF
UzoKQEAgLTE5MCw3ICsxODksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OnZpc2l0
QnV0dGVyCiAgICAgICAgIGJ1dHRlcmZseS0+YmFzZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBh
Y2l0eSksIGNhcGFjaXR5SW5CeXRlcyk7CiAgICAgCiAgICAgLy8gTWFyayB0aGUgYXJyYXkgaWYg
YXBwcm9wcmlhdGUuCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSB7Cisg
ICAgc3dpdGNoICh0aGlzLT5pbmRleGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0NPTlRJR1VP
VVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKGJ1dHRlcmZs
eS0+Y29udGlndW91cygpLmRhdGEoKSwgYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKSk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjQ4LDExICsyNDcsMTIgQEAgdm9pZCBKU0ZpbmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbAogICAgIAogICAgIEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpc09iamVjdC0+
c3RydWN0dXJlKCk7CiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSB0aGlzT2JqZWN0LT5idXR0
ZXJmbHkoKTsKICAgICBpZiAoYnV0dGVyZmx5KQotICAgICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1
dHRlcmZseSh2aXNpdG9yLCBidXR0ZXJmbHksIHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5vdXRP
ZkxpbmVTaXplKCkpOworICAgICAgICB0aGlzT2JqZWN0LT52aXNpdEJ1dHRlcmZseSh2aXNpdG9y
LCBidXR0ZXJmbHksIHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpKTsKIAotICAgIHNpemVfdCBz
dG9yYWdlU2l6ZSA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT5pbmxpbmVTaXplKCk7CisgICAg
c2l6ZV90IHN0b3JhZ2VTaXplID0gc3RydWN0dXJlLT5pbmxpbmVTaXplKCk7CiAgICAgdmlzaXRv
ci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+aW5saW5lU3RvcmFnZSgpLCBzdG9yYWdlU2l6ZSk7
CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0yNzQsOSArMjc0LDkgQEAgYm9vbCBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleAogICAgIC8vIGdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoKS4KICAgICAKICAgICBpZiAoaSA+IE1BWF9BUlJBWV9JTkRFWCkKLSAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2Jq
ZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKKyAgICAgICAgcmV0
dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSwgc2xvdCk7CiAg
ICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBB
TExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5H
X1RZUEVTOgogICAgICAgICBicmVhazsKQEAgLTM1OCwxMCArMzU4LDEwIEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUg
YW55IHNldHRlcnMgb3IgZ2V0dGVycyBpbiB0aGUgcHJvdG90eXBlIGNoYWluCiAgICAgSlNWYWx1
ZSBwcm90b3R5cGU7CiAgICAgaWYgKHByb3BlcnR5TmFtZSAhPSBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvKSB7Ci0gICAgICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNP
YmplY3Q7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVy
dGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKKyAgICAg
ICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpc09iamVjdDsgIW9iai0+c3RydWN0dXJlKHZtKS0+
aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpOyBvYmog
PSBhc09iamVjdChwcm90b3R5cGUpKSB7CiAgICAgICAgICAgICBwcm90b3R5cGUgPSBvYmotPnBy
b3RvdHlwZSgpOwogICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwoKSkgewotICAgICAg
ICAgICAgICAgIEFTU0VSVCghdGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWlu
TWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPnByb3RvdHlwZUNoYWlu
TWF5SW50ZXJjZXB0U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KHZt
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkp
CiAgICAgICAgICAgICAgICAgICAgICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAgICAgICAgICAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKQEAgLTM3NCwxMCArMzc0LDEwIEBAIHZvaWQgSlNP
YmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICBmb3IgKG9iaiA9IHRoaXNPYmpl
Y3Q7IDsgb2JqID0gYXNPYmplY3QocHJvdG90eXBlKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCA9IG9iai0+c3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gb2JqLT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIGlmIChpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpIHsKICAg
ICAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUmVhZE9ubHkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZXB0
U3RvcmVUbyhleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWUpIHx8IG9iaiA9PSB0aGlzT2JqZWN0KTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKHZtKS0+cHJvdG90
eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3BlcnR5TmFtZSkgfHwg
b2JqID09IHRoaXNPYmplY3QpOwogICAgICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQogICAgICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9kZVJlYWRvbmx5UHJv
cGVydHlXcml0ZUVycm9yKSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQwNiw3ICs0
MDYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZtKCksIHByb3Bl
cnR5TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOworICAgIEFTU0VSVCghdGhpc09iamVjdC0+
c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlQ2hhaW5NYXlJbnRlcmNlcHRTdG9yZVRvKGV4ZWMtPnZt
KCksIHByb3BlcnR5TmFtZSkgfHwgb2JqID09IHRoaXNPYmplY3QpOwogICAgIGlmICghdGhpc09i
amVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4odm0sIHByb3BlcnR5TmFtZSwgdmFs
dWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1v
ZGUoKSkKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1v
ZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgIHJldHVybjsKQEAgLTQyMiw3ICs0
MjIsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGJyZWFr
OwogICAgICAgICAKQEAgLTU1Myw3ICs1NTMsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpl
bnRlckRpY3Rpb25hcnlJCiAgICAgfQogCiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwot
ICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gc3RvcmFnZS0+YnV0dGVyZmx5KCktPnJlc2l6
ZUFycmF5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKDAp
KTsKKyAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5y
ZXNpemVBcnJheSh2bSwgdGhpcywgc3RydWN0dXJlKHZtKSwgMCwgQXJyYXlTdG9yYWdlOjpzaXpl
Rm9yKDApKTsKICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJmbHkpOwogICAgIG5ld0J1dHRl
cmZseS0+YXJyYXlTdG9yYWdlKCktPm1faW5kZXhCaWFzID0gMDsKICAgICBuZXdCdXR0ZXJmbHkt
PmFycmF5U3RvcmFnZSgpLT5zZXRWZWN0b3JMZW5ndGgoMCk7CkBAIC01NjUsNyArNTY1LDcgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW50ZXJEaWN0aW9uYXJ5SQogCiB2b2lkIEpTT2JqZWN0
OjplbnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVk0mIHZtKQogewotICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkg
ewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVD
SURFRF9JTkRFWElOR19UWVBFUzoKICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoK
QEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIEpTT2JqZWN0Ojpub3RpZnlQcmVzZW5jZU9mSW5kZXhl
ZEFjCiAgICAgaWYgKG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFkZEluZGV4ZWRBY2Nlc3NvcnMpKTsKKyAgICBzZXRT
dHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUodm0pLCBBZGRJbmRleGVkQWNjZXNzb3JzKSk7CiAgICAgCiAgICAgaWYgKCF2bS5wcm90b3R5
cGVNYXAuaXNQcm90b3R5cGUodGhpcykpCiAgICAgICAgIHJldHVybjsKQEAgLTYwMCw3ICs2MDAs
NyBAQCB2b2lkIEpTT2JqZWN0Ojpub3RpZnlQcmVzZW5jZU9mSW5kZXhlZEFjCiBCdXR0ZXJmbHkq
IEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2UoVk0mIHZtLCB1bnNpZ25lZCBs
ZW5ndGgsIHNpemVfdCBlbGVtZW50U2l6ZSkKIHsKICAgICBBU1NFUlQobGVuZ3RoIDwgTUFYX0FS
UkFZX0lOREVYKTsKLSAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IHN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKTsKKyAgICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwog
ICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUp
KTsKICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKTsKICAg
ICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7CkBAIC02MTcsNyArNjE3LDcgQEAg
QnV0dGVyZmx5KiBKU09iamVjdDo6Y3JlYXRlSW5pdGlhbFVuZGVjaQogewogICAgIERlZmVyR0Mg
ZGVmZXJHQyh2bS5oZWFwKTsKICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUlu
aXRpYWxJbmRleGVkU3RvcmFnZSh2bSwgbGVuZ3RoLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKTsK
LSAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgQWxsb2NhdGVVbmRlY2lkZWQpOworICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSh2bSksIEFsbG9jYXRlVW5kZWNpZGVkKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0
ZXJmbHkodm0sIG5ld1N0cnVjdHVyZSwgbmV3QnV0dGVyZmx5KTsKICAgICByZXR1cm4gbmV3QnV0
dGVyZmx5OwogfQpAQCAtNjI2LDcgKzYyNiw3IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVj
dDo6Y3JlYXRlSW5pdGkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAgQnV0
dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBjcmVhdGVJbml0aWFsSW5kZXhlZFN0b3JhZ2Uodm0sIGxl
bmd0aCwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFs
bG9jYXRlSW50MzIpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlSW50MzIpOwog
ICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJm
bHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpOwogfQpAQCAt
NjM3LDcgKzYzNyw3IEBAIENvbnRpZ3VvdXNEb3VibGVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aWEK
ICAgICBCdXR0ZXJmbHkqIG5ld0J1dHRlcmZseSA9IGNyZWF0ZUluaXRpYWxJbmRleGVkU3RvcmFn
ZSh2bSwgbGVuZ3RoLCBzaXplb2YoZG91YmxlKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3
QnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbmV3QnV0dGVyZmx5LT5j
b250aWd1b3VzRG91YmxlKClbaV0gPSBRTmFOOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJl
ID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxv
Y2F0ZURvdWJsZSk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpOwog
ICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJm
bHkpOwogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KQEAg
LTY0Niw3ICs2NDYsNyBAQCBDb250aWd1b3VzSlNWYWx1ZXMgSlNPYmplY3Q6OmNyZWF0ZUluaXRp
CiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIEJ1dHRlcmZseSogbmV3QnV0
dGVyZmx5ID0gY3JlYXRlSW5pdGlhbEluZGV4ZWRTdG9yYWdlKHZtLCBsZW5ndGgsIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpOwotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJl
Ojpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3Vv
dXMpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIEFsbG9jYXRlQ29udGlndW91cyk7CiAgICAg
c2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUsIG5ld0J1dHRlcmZseSk7
CiAgICAgcmV0dXJuIG5ld0J1dHRlcmZseS0+Y29udGlndW91cygpOwogfQpAQCAtNjU0LDEwICs2
NTQsMTEgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJbml0aQogQXJyYXlT
dG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhl
YXApOwotICAgIEluZGV4aW5nVHlwZSBvbGRUeXBlID0gc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAg
ICBJbmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwogICAgIEFTU0VSVF9VTlVT
RUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAg
ICAgICAgbV9idXR0ZXJmbHkuZ2V0KCksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAorICAgICAgICBtX2J1dHRlcmZseS5n
ZXQoKSwgdm0sIHRoaXMsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgp
LCBmYWxzZSwgMCwKICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAKQEAgLTY2Nyw3ICs2NjgsNyBA
QCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVBcnJheVN0b3JhCiAgICAgcmVzdWx0LT5t
X3NwYXJzZU1hcC5jbGVhcigpOwogICAgIHJlc3VsdC0+bV9udW1WYWx1ZXNJblZlY3RvciA9IDA7
CiAgICAgcmVzdWx0LT5tX2luZGV4QmlhcyA9IDA7Ci0gICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIHN0
cnVjdHVyZSgpLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOworICAgIFN0cnVj
dHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0s
IHN0cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkp
OwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0
ZXJmbHkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC02NzksMzQgKzY4MCwzNSBAQCBBcnJh
eVN0b3JhZ2UqIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsQXJyCiAKIENvbnRpZ3VvdXNKU1ZhbHVl
cyBKU09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvSW50MzIoVk0mIHZtKQogewotICAgIEFTU0VS
VChoYXNVbmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAgc2V0U3Ry
dWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIEFsbG9jYXRlSW50MzIpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5nVHlw
ZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNp
dGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVJbnQzMikpOwogICAgIHJldHVybiBtX2J1
dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiB9CiAKIENvbnRpZ3VvdXNEb3VibGVzIEpTT2Jq
ZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Eb3VibGUoVk0mIHZtKQogewotICAgIEFTU0VSVChoYXNV
bmRlY2lkZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc1Vu
ZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKTsgaS0tOykKICAgICAgICAgbV9idXR0ZXJmbHktPmNv
bnRpZ3VvdXNEb3VibGUoKVtpXSA9IFFOYU47CiAgICAgCi0gICAgc2V0U3RydWN0dXJlKHZtLCBT
dHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRl
RG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsKICAgICByZXR1cm4g
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAogQ29udGlndW91c0pTVmFsdWVz
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkVG9Db250aWd1b3VzKFZNJiB2bSkKIHsKLSAgICBB
U1NFUlQoaGFzVW5kZWNpZGVkKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOwotICAgIHNl
dFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVj
dHVyZSgpLCBBbGxvY2F0ZUNvbnRpZ3VvdXMpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGlu
ZGV4aW5nVHlwZSgpKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3Bl
cnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3VzKSk7CiAg
ICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFycmF5U3RvcmFnZSog
SlNPYmplY3Q6OmNvbnN0cnVjdENvbnZlcnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxl
bWVudHMoVk0mIHZtLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIHVuc2lnbmVkIHB1YmxpY0xlbmd0
aCA9IG1fYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsKLSAgICB1bnNpZ25lZCBwcm9wZXJ0eUNh
cGFjaXR5ID0gc3RydWN0dXJlKCktPm91dE9mTGluZUNhcGFjaXR5KCk7Ci0gICAgdW5zaWduZWQg
cHJvcGVydHlTaXplID0gc3RydWN0dXJlKCktPm91dE9mTGluZVNpemUoKTsKKyAgICB1bnNpZ25l
ZCBwcm9wZXJ0eUNhcGFjaXR5ID0gc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpOworICAg
IHVuc2lnbmVkIHByb3BlcnR5U2l6ZSA9IHN0cnVjdHVyZS0+b3V0T2ZMaW5lU2l6ZSgpOwogICAg
IAogICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVVbmluaXRp
YWxpemVkKAogICAgICAgICB2bSwgdGhpcywgMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgQXJy
YXlTdG9yYWdlOjpzaXplRm9yKG5lZWRlZExlbmd0aCkpOwpAQCAtNzI5LDEyICs3MzEsMTIgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29uc3RydWN0Q29udmVydAogQXJyYXlTdG9yYWdlKiBK
U09iamVjdDo6Y29udmVydFVuZGVjaWRlZFRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVy
dHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBE
ZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAgQVNTRVJUKGhhc1VuZGVjaWRlZChzdHJ1Y3R1
cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NFUlQoaGFzVW5kZWNpZGVkKGluZGV4aW5n
VHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gY29uc3RydWN0Q29u
dmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3Ro
KTsKICAgICAvLyBObyBuZWVkIHRvIGNvcHkgZWxlbWVudHMuCiAgICAgCi0gICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3Ry
dWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRp
b24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBzdG9y
YWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CkBAIC03NDYsMTIgKzc0
OCwxMiBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkCiAKIEFycmF5
U3RvcmFnZSogSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZShWTSYgdm0p
CiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0
dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0dXJuIGNv
bnZlcnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVk
QXJyYXlTdG9yYWdlVHJhbnNpdGlvbigpKTsKIH0KIAogQ29udGlndW91c0RvdWJsZXMgSlNPYmpl
Y3Q6OmNvbnZlcnRJbnQzMlRvRG91YmxlKFZNJiB2bSkKIHsKLSAgICBBU1NFUlQoaGFzSW50MzIo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0ludDMyKGluZGV4
aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9idXR0ZXJmbHktPnZl
Y3Rvckxlbmd0aCgpOyBpLS07KSB7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogY3Vy
cmVudCA9ICZtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKClbaV07CkBAIC03NjUsMjEgKzc2
NywyMSBAQCBDb250aWd1b3VzRG91YmxlcyBKU09iamVjdDo6Y29udmVydEludDMyCiAgICAgICAg
ICpjdXJyZW50QXNEb3VibGUgPSB2LmFzSW50MzIoKTsKICAgICB9CiAgICAgCi0gICAgc2V0U3Ry
dWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KCksIEFsbG9jYXRlRG91YmxlKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVEb3VibGUpKTsK
ICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKTsKIH0KIAogQ29udGln
dW91c0pTVmFsdWVzIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJUb0NvbnRpZ3VvdXMoVk0mIHZtKQog
ewotICAgIEFTU0VSVChoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICBBU1NFUlQoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKLSAgICBzZXRTdHJ1Y3R1
cmUodm0sIFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwg
QWxsb2NhdGVDb250aWd1b3VzKSk7CisgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5v
blByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSwgQWxsb2NhdGVDb250aWd1b3Vz
KSk7CiAgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5jb250aWd1b3VzKCk7CiB9CiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnRJbnQzMlRvQXJyYXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJv
cGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2lnbmVkIG5lZWRlZExlbmd0aCkKIHsKLSAg
ICBBU1NFUlQoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNT
RVJUKGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgRGVmZXJHQyBkZWZlckdD
KHZtLmhlYXApOwogICAgIEFycmF5U3RvcmFnZSogbmV3U3RvcmFnZSA9IGNvbnN0cnVjdENvbnZl
cnRlZEFycmF5U3RvcmFnZVdpdGhvdXRDb3B5aW5nRWxlbWVudHModm0sIG5lZWRlZExlbmd0aCk7
CkBAIC03OTEsNyArNzkzLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydEludDMy
VG9BcgogICAgICAgICBuZXdTdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKys7CiAgICAgfQog
ICAgIAotICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0
eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpLCB0cmFuc2l0aW9uKTsKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1
Y3R1cmUodm0pLCB0cmFuc2l0aW9uKTsKICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0s
IG5ld1N0cnVjdHVyZSwgbmV3U3RvcmFnZS0+YnV0dGVyZmx5KCkpOwogICAgIHJldHVybiBuZXdT
dG9yYWdlOwogfQpAQCAtODAzLDEzICs4MDUsMTMgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6
Y29udmVydEludDMyVG9BcgogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0SW50MzJU
b0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIGNvbnZlcnRJbnQzMlRvQXJyYXlT
dG9yYWdlKHZtLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdlVHJhbnNpdGlvbigp
KTsKKyAgICByZXR1cm4gY29udmVydEludDMyVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVyZSh2
bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHRlbXBsYXRlPEpT
T2JqZWN0OjpEb3VibGVUb0NvbnRpZ3VvdXNNb2RlIG1vZGU+CiBDb250aWd1b3VzSlNWYWx1ZXMg
SlNPYmplY3Q6OmdlbmVyaWNDb252ZXJ0RG91YmxlVG9Db250aWd1b3VzKFZNJiB2bSkKIHsKLSAg
ICBBU1NFUlQoaGFzRG91YmxlKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIEFT
U0VSVChoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCk7IGktLTspIHsKICAgICAgICAgZG91Ymxl
KiBjdXJyZW50ID0gJm1fYnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbaV07CkBAIC04MzIs
NyArODM0LDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpnZW5lcmljQ29udgogICAg
ICAgICBjdXJyZW50QXNWYWx1ZS0+c2V0V2l0aG91dFdyaXRlQmFycmllcih2KTsKICAgICB9CiAg
ICAgCi0gICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKCksIEFsbG9jYXRlQ29udGlndW91cykpOworICAgIHNldFN0cnVjdHVy
ZSh2bSwgU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSks
IEFsbG9jYXRlQ29udGlndW91cykpOwogICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91
cygpOwogfQogCkBAIC04NDksNyArODUxLDcgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0
OjpyYWdlQ29udmVydAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydERvdWJsZVRvQXJy
YXlTdG9yYWdlKFZNJiB2bSwgTm9uUHJvcGVydHlUcmFuc2l0aW9uIHRyYW5zaXRpb24sIHVuc2ln
bmVkIG5lZWRlZExlbmd0aCkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7Ci0gICAg
QVNTRVJUKGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICBBU1NF
UlQoaGFzRG91YmxlKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAgICAgQXJyYXlTdG9yYWdlKiBu
ZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9yYWdlV2l0aG91dENvcHlpbmdF
bGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2J1dHRl
cmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTg2MCw3ICs4NjIsNyBAQCBBcnJheVN0
b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAgICAgICAgIG5ld1N0b3JhZ2UtPm1f
bnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCks
IHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSksIHRyYW5zaXRpb24pOwogICAg
IHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdTdG9yYWdlLT5i
dXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC04NzIsMTMgKzg3NCwx
MyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0RG91YmxlVG9BCiAKIEFycmF5U3Rv
cmFnZSogSlNPYmplY3Q6OmNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZShWTSYgdm0pCiB7Ci0g
ICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKCktPnN1
Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CisgICAgcmV0dXJuIGNvbnZlcnREb3Vi
bGVUb0FycmF5U3RvcmFnZSh2bSwgc3RydWN0dXJlKHZtKS0+c3VnZ2VzdGVkQXJyYXlTdG9yYWdl
VHJhbnNpdGlvbigpKTsKIH0KIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRp
Z3VvdXNUb0FycmF5U3RvcmFnZShWTSYgdm0sIE5vblByb3BlcnR5VHJhbnNpdGlvbiB0cmFuc2l0
aW9uLCB1bnNpZ25lZCBuZWVkZWRMZW5ndGgpCiB7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhl
YXApOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUo
KSkpOworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGluZGV4aW5nVHlwZSgpKSk7CiAgICAgCiAg
ICAgQXJyYXlTdG9yYWdlKiBuZXdTdG9yYWdlID0gY29uc3RydWN0Q29udmVydGVkQXJyYXlTdG9y
YWdlV2l0aG91dENvcHlpbmdFbGVtZW50cyh2bSwgbmVlZGVkTGVuZ3RoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7IGktLTspIHsKQEAgLTg4OSw3
ICs4OTEsNyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91CiAgICAg
ICAgIG5ld1N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IrKzsKICAgICB9CiAgICAgCi0gICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlv
bih2bSwgc3RydWN0dXJlKCksIHRyYW5zaXRpb24pOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2bSks
IHRyYW5zaXRpb24pOwogICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0
dXJlLCBuZXdTdG9yYWdlLT5idXR0ZXJmbHkoKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9
CkBAIC05MDEsNyArOTAzLDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y29udmVydENvbnRp
Z3VvdQogCiBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpjb252ZXJ0Q29udGlndW91c1RvQXJyYXlT
dG9yYWdlKFZNJiB2bSkKIHsKLSAgICByZXR1cm4gY29udmVydENvbnRpZ3VvdXNUb0FycmF5U3Rv
cmFnZSh2bSwgc3RydWN0dXJlKCktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7
CisgICAgcmV0dXJuIGNvbnZlcnRDb250aWd1b3VzVG9BcnJheVN0b3JhZ2Uodm0sIHN0cnVjdHVy
ZSh2bSktPnN1Z2dlc3RlZEFycmF5U3RvcmFnZVRyYW5zaXRpb24oKSk7CiB9CiAKIHZvaWQgSlNP
YmplY3Q6OmNvbnZlcnRVbmRlY2lkZWRGb3JWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCkBA
IC05NzUsOSArOTc3LDkgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjplbnN1cmVJbnQz
MgogewogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElL
RUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0
SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNl
KCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAg
ICByZXR1cm4gQ29udGlndW91c0pTVmFsdWVzKCk7CiAgICAgICAgIHJldHVybiBjcmVhdGVJbml0
aWFsSW50MzIodm0sIDApOwogICAgICAgICAKQEAgLTk5OSw5ICsxMDAxLDkgQEAgQ29udGlndW91
c0RvdWJsZXMgSlNPYmplY3Q6OmVuc3VyZURvdWJsZQogewogICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKICAgICAKLSAgICBzd2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkg
eworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRF
WElOR19UWVBFUzoKLSAgICAgICAgaWYgKFVOTElLRUxZKGluZGV4aW5nU2hvdWxkQmVTcGFyc2Uo
KSB8fCBzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkpCisgICAgICAgIGlmIChV
TkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKHZtKS0+bmVlZHNT
bG93UHV0SW5kZXhpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGlndW91c0RvdWJsZXMo
KTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUluaXRpYWxEb3VibGUodm0sIDApOwogICAgICAgICAK
QEAgLTEwMjUsOSArMTAyNyw5IEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6ZW5zdXJl
Q29udGkKIHsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlw
ZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgIGlmIChV
TkxJS0VMWShpbmRleGluZ1Nob3VsZEJlU3BhcnNlKCkgfHwgc3RydWN0dXJlKCktPm5lZWRzU2xv
d1B1dEluZGV4aW5nKCkpKQorICAgICAgICBpZiAoVU5MSUtFTFkoaW5kZXhpbmdTaG91bGRCZVNw
YXJzZSgpIHx8IHN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIENvbnRpZ3VvdXNKU1ZhbHVlcygpOwogICAgICAgICByZXR1cm4gY3JlYXRl
SW5pdGlhbENvbnRpZ3VvdXModm0sIDApOwogICAgICAgICAKQEAgLTEwNjUsNyArMTA2Nyw3IEBA
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIHsKICAgICBBU1NFUlQo
aW5oZXJpdHMoaW5mbygpKSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExf
QkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGlmIChVTkxJS0VMWShpbmRleGluZ1Nob3Vs
ZEJlU3BhcnNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGVuc3VyZUFycmF5U3RvcmFnZUV4aXN0
c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZSh2bSk7CkBAIC0xMDczLDIyICsxMDc1LDIy
IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKICAgICAgICAgCiAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBBU1NFUlQoIWlu
ZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSk7Ci0gICAgICAgIEFTU0VSVCghc3RydWN0dXJlKCktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpOworICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSh2bSktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkpOwogICAgICAgICByZXR1cm4gY29udmVydFVuZGVjaWRlZFRv
QXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdf
VFlQRVM6CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAg
ICAgQVNTRVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAg
IEFTU0VSVCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAg
IHJldHVybiBjb252ZXJ0SW50MzJUb0FycmF5U3RvcmFnZSh2bSk7CiAgICAgICAgIAogICAgIGNh
c2UgQUxMX0RPVUJMRV9JTkRFWElOR19UWVBFUzoKICAgICAgICAgQVNTRVJUKCFpbmRleGluZ1No
b3VsZEJlU3BhcnNlKCkpOwotICAgICAgICBBU1NFUlQoIXN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQ
dXRJbmRleGluZygpKTsKKyAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQ
dXRJbmRleGluZygpKTsKICAgICAgICAgcmV0dXJuIGNvbnZlcnREb3VibGVUb0FycmF5U3RvcmFn
ZSh2bSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0NPTlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6
CiAgICAgICAgIEFTU0VSVCghaW5kZXhpbmdTaG91bGRCZVNwYXJzZSgpKTsKLSAgICAgICAgQVNT
RVJUKCFzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CisgICAgICAgIEFTU0VS
VCghc3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSk7CiAgICAgICAgIHJldHVy
biBjb252ZXJ0Q29udGlndW91c1RvQXJyYXlTdG9yYWdlKHZtKTsKICAgICAgICAgCiAgICAgZGVm
YXVsdDoKQEAgLTEwOTksNyArMTEwMSw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3Vy
ZUFycmF5U3RvcmEKIAogQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdl
RXhpc3RzQW5kRW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKFZNJiB2bSkKIHsKLSAgICBzd2l0
Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdU
eXBlKCkpIHsKICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzogewogICAgICAgICBj
cmVhdGVBcnJheVN0b3JhZ2Uodm0sIDAsIDApOwogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFw
KiBtYXAgPSBhbGxvY2F0ZVNwYXJzZUluZGV4TWFwKHZtKTsKQEAgLTExMzAsNyArMTEzMiw3IEBA
IEFycmF5U3RvcmFnZSogSlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmEKIAogdm9pZCBKU09iamVj
dDo6c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKFZNJiB2bSkKIHsKLSAgICBzd2l0Y2ggKHN0
cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkp
IHsKICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNvbnZl
cnRVbmRlY2lkZWRUb0FycmF5U3RvcmFnZSh2bSwgQWxsb2NhdGVTbG93UHV0QXJyYXlTdG9yYWdl
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTQ5LDcgKzExNTEsNyBAQCB2b2lkIEpTT2JqZWN0Ojpz
d2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhCiAgICAgICAgIAogICAgIGNhc2UgTm9uQXJyYXlXaXRo
QXJyYXlTdG9yYWdlOgogICAgIGNhc2UgQXJyYXlXaXRoQXJyYXlTdG9yYWdlOiB7Ci0gICAgICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSgpLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOworICAgICAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6bm9uUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBTd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2UpOwogICAg
ICAgICBzZXRTdHJ1Y3R1cmUodm0sIG5ld1N0cnVjdHVyZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTExNjYsNyArMTE2OCw3IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYg
dm0sIEpTVmEKICAgICBpZiAocHJvdG90eXBlLmlzT2JqZWN0KCkpCiAgICAgICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUoYXNPYmplY3QocHJvdG90eXBlKSk7CiAgICAgCi0gICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSgpLCBwcm90b3R5cGUpOworICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUo
dm0pLCBwcm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZSh2bSwgbmV3U3RydWN0dXJlKTsKICAg
ICAKICAgICBpZiAoIW5ld1N0cnVjdHVyZS0+YW55T2JqZWN0SW5DaGFpbk1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpKQpAQCAtMTE3NywxMCArMTE3OSwxMCBAQCB2b2lkIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGUoVk0mIHZtLCBKU1ZhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
KQorICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgaWYgKHNob3VsZFVzZVNsb3dQdXQoc3RydWN0dXJlKCktPmlu
ZGV4aW5nVHlwZSgpKSkKKyAgICBpZiAoc2hvdWxkVXNlU2xvd1B1dChpbmRleGluZ1R5cGUoKSkp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2Uo
dm0pOwpAQCAtMTE4OCw3ICsxMTkwLDcgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZN
JiB2bSwgSlNWYQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIEFTU0VSVChtZXRob2RU
YWJsZSgpLT50b1RoaXModGhpcywgZXhlYywgTm90U3RyaWN0TW9kZSkgPT0gdGhpcyk7CisgICAg
QVNTRVJUKG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXModGhpcywgZXhlYywgTm90U3Ry
aWN0TW9kZSkgPT0gdGhpcyk7CiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlID0gcHJvdG90eXBl
OwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUuaXNPYmplY3QoKSkg
ewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQpAQCAtMTIyNywxMiArMTIyOSwx
MyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yCiAgICAgLy8gZ2V0
dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdlIG91ciBTdHJ1
Y3R1cmUKICAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0dGVyIG9yIG5v
bi1zZXR0ZXIuCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJv
cGVydHkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFu
Z2VUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKSk7
CisgICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjphdHRyaWJ1dGVDaGFuZ2VUcmFu
c2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpKTsKIAor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAo
YXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNS
ZWFkT25seVByb3BlcnRpZXMoKTsKKyAgICAgICAgc3RydWN0dXJlLT5zZXRDb250YWluc1JlYWRP
bmx5UHJvcGVydGllcygpOwogCi0gICAgc3RydWN0dXJlKCktPnNldEhhc0dldHRlclNldHRlclBy
b3BlcnRpZXMocHJvcGVydHlOYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90
byk7CisgICAgc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pOwogfQogCiBib29sIEpT
T2JqZWN0OjpoYXNQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpIGNvbnN0CkBAIC0xMjU0LDI0ICsxMjU3LDI1IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0
ZVByb3BlcnR5KEpTQ2VsbCogY2UKICAgICAKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1l
LmFzSW5kZXgoKTsKICAgICBpZiAoaSAhPSBQcm9wZXJ0eU5hbWU6Ok5vdEFuSW5kZXgpCi0gICAg
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5k
ZXgodGhpc09iamVjdCwgZXhlYywgaSk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QsIGV4
ZWMsIGkpOwogCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5zdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCkp
CiAgICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5U3RhdGljRnVuY3Rpb25zRm9yRGVsZXRlKGV4ZWMp
OwogCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7
Ci0gICAgaWYgKGlzVmFsaWRPZmZzZXQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPmdldChleGVj
LT52bSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKSkgewotICAg
ICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnREZWxldGUgJiYgIWV4ZWMtPnZtKCkuaXNJbkRlZmlu
ZU93blByb3BlcnR5KCkpCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBpZiAoaXNWYWxp
ZE9mZnNldCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLT5nZXQodm0sIHByb3BlcnR5TmFtZSwg
YXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKSB7CisgICAgICAgIGlmIChhdHRyaWJ1dGVzICYg
RG9udERlbGV0ZSAmJiAhdm0uaXNJbkRlZmluZU93blByb3BlcnR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRoaXNPYmplY3QtPnJlbW92ZURpcmVjdChleGVjLT52bSgp
LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICB0aGlzT2JqZWN0LT5yZW1vdmVEaXJlY3Qodm0sIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIExvb2sg
aW4gdGhlIHN0YXRpYyBoYXNodGFibGUgb2YgcHJvcGVydGllcwogICAgIGNvbnN0IEhhc2hFbnRy
eSogZW50cnkgPSB0aGlzT2JqZWN0LT5maW5kUHJvcGVydHlIYXNoRW50cnkoZXhlYywgcHJvcGVy
dHlOYW1lKTsKICAgICBpZiAoZW50cnkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5hdHRyaWJ1dGVz
KCkgJiBEb250RGVsZXRlICYmICFleGVjLT52bSgpLmlzSW5EZWZpbmVPd25Qcm9wZXJ0eSgpKQor
ICAgICAgICBpZiAoZW50cnktPmF0dHJpYnV0ZXMoKSAmIERvbnREZWxldGUgJiYgIXZtLmlzSW5E
ZWZpbmVPd25Qcm9wZXJ0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0aGlzIGJ1
aWx0aW4gcHJvcGVydHkgY2FuJ3QgYmUgZGVsZXRlZAogCiAgICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QpOwpAQCAtMTI4NCw3ICsxMjg4LDcgQEAgYm9vbCBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkoSlNDZWxsKiBjZQogYm9vbCBKU09iamVjdDo6aGFzT3duUHJvcGVydHko
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdAogewogICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgIHJldHVybiBjb25zdF9jYXN0PEpTT2JqZWN0
Kj4odGhpcyktPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpT
T2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8SlNPYmplY3QqPih0aGlzKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93
blByb3BlcnR5U2xvdChjb25zdF9jYXN0PEpTT2JqZWN0Kj4odGhpcyksIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKQEAgLTEyOTIsOSArMTI5
Niw5IEBAIGJvb2wgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0MKICAgICBKU09i
amVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwpOwogICAgIAogICAgIGlm
IChpID4gTUFYX0FSUkFZX0lOREVYKQotICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CisgICAgICAgIHJldHVybiB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgSWRlbnRpZmllcjo6ZnJv
bShleGVjLCBpKSk7CiAgICAgCi0gICAgc3dpdGNoICh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0Y2ggKHRoaXNPYmplY3QtPmluZGV4aW5nVHlwZSgp
KSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgY2FzZSBBTExfVU5E
RUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzNjcsNyAr
MTM3MSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbERlZmF1bHQKIAogYm9v
bCBKU09iamVjdDo6Z2V0UHJpbWl0aXZlTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlJiBu
dW1iZXIsIEpTVmFsdWUmIHJlc3VsdCkgY29uc3QKIHsKLSAgICByZXN1bHQgPSBtZXRob2RUYWJs
ZSgpLT5kZWZhdWx0VmFsdWUodGhpcywgZXhlYywgUHJlZmVyTnVtYmVyKTsKKyAgICByZXN1bHQg
PSBtZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmYXVsdFZhbHVlKHRoaXMsIGV4ZWMsIFByZWZl
ck51bWJlcik7CiAgICAgbnVtYmVyID0gcmVzdWx0LnRvTnVtYmVyKGV4ZWMpOwogICAgIHJldHVy
biAhcmVzdWx0LmlzU3RyaW5nKCk7CiB9CkBAIC0xNDEwLDEyICsxNDE0LDEzIEBAIGNvbnN0IEhh
c2hFbnRyeSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUgKIAogYm9vbCBKU09iamVjdDo6aGFzSW5z
dGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewotICAgIFR5cGVJbmZvIGlu
Zm8gPSBzdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIFR5cGVJbmZvIGluZm8gPSBzdHJ1Y3R1cmUodm0pLT50eXBlSW5mbygpOwogICAgIGlmIChp
bmZvLmltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UoKSkKICAgICAgICAgcmV0dXJuIGRlZmF1
bHRIYXNJbnN0YW5jZShleGVjLCB2YWx1ZSwgZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5wcm90b3R5cGUpKTsKICAgICBpZiAoaW5mby5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSkKLSAg
ICAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMs
IHZhbHVlKTsKLSAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUludmFs
aWRQYXJhbWV0ZXJFcnJvcihleGVjLCAiaW5zdGFuY2VvZiIgLCB0aGlzKSk7CisgICAgICAgIHJl
dHVybiBtZXRob2RUYWJsZSh2bSktPmN1c3RvbUhhc0luc3RhbmNlKHRoaXMsIGV4ZWMsIHZhbHVl
KTsKKyAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJy
b3IoZXhlYywgImluc3RhbmNlb2YiICwgdGhpcykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMTQzOSw4ICsxNDQ0LDkgQEAgYm9vbCBKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKEV4
ZWNTdAogCiBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVl
KSBjb25zdAogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKLSAgICBpZiAoaXNWYWxpZE9mZnNldChzdHJ1Y3R1cmUoKS0+Z2V0KGV4ZWMtPnZtKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpKQorICAgIGlmIChpc1Zh
bGlkT2Zmc2V0KHN0cnVjdHVyZSh2bSktPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVGhpcyBj
b3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNob3VsZCBwcm9i
YWJseQpAQCAtMTQ1MywxOCArMTQ1OSwxOSBAQCBib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNw
ZWNpZmljVmFsdWUoCiB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIHByb3BlcnR5TmFtZXMuc2V0QmFzZU9iamVj
dChvYmplY3QpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1l
cyhvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIAogICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBhc09iamVjdChvYmplY3QtPnByb3RvdHlwZSgpKTsKICAgICB3aGls
ZSgxKSB7Ci0gICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMoKSkgewotICAgICAgICAgICAgcHJvdG90eXBlLT5tZXRo
b2RUYWJsZSgpLT5nZXRQcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CisgICAgICAgIGlmIChwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKSB7CisgICAgICAgICAgICBwcm90b3R5cGUt
Pm1ldGhvZFRhYmxlKHZtKS0+Z2V0UHJvcGVydHlOYW1lcyhwcm90b3R5cGUsIGV4ZWMsIHByb3Bl
cnR5TmFtZXMsIG1vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
cHJvdG90eXBlLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwg
ZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgICAgIHByb3RvdHlwZS0+bWV0aG9kVGFi
bGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvdHlwZSwgZXhlYywgcHJvcGVydHlOYW1l
cywgbW9kZSk7CiAgICAgICAgIEpTVmFsdWUgbmV4dFByb3RvID0gcHJvdG90eXBlLT5wcm90b3R5
cGUoKTsKICAgICAgICAgaWYgKG5leHRQcm90by5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTQ3OCw3ICsxNDg1LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1l
cyhKU09iagogICAgIC8vIEZJWE1FOiBGaWxsaW5nIFByb3BlcnR5TmFtZUFycmF5IHdpdGggYW4g
aWRlbnRpZmllciBmb3IgZXZlcnkgaW50ZWdlcgogICAgIC8vIGlzIGluY3JlZGlibHkgaW5lZmZp
Y2llbnQgZm9yIGxhcmdlIGFycmF5cy4gV2UgbmVlZCBhIGRpZmZlcmVudCBhcHByb2FjaCwKICAg
ICAvLyB3aGljaCBhbG1vc3QgY2VydGFpbmx5IG1lYW5zIGEgZGlmZmVyZW50IHN0cnVjdHVyZSBm
b3IgUHJvcGVydHlOYW1lQXJyYXkuCi0gICAgc3dpdGNoIChvYmplY3QtPnN0cnVjdHVyZSgpLT5p
bmRleGluZ1R5cGUoKSkgeworICAgIHN3aXRjaCAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkgewog
ICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNhc2UgQUxMX1VOREVDSURF
RF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgYnJlYWs7CkBAIC0xNTM3LDE1ICsxNTQ0LDE2IEBA
IHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0gICAgb2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRP
d25Ob25JbmRleFByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2Rl
KTsKIH0KIAogdm9pZCBKU09iamVjdDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5
TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIGdldENsYXNzUHJvcGVydHlOYW1l
cyhleGVjLCBvYmplY3QtPmNsYXNzSW5mbygpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlLCBvYmplY3Qt
PnN0YXRpY0Z1bmN0aW9uc1JlaWZpZWQoKSk7CiAKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGJvb2wgY2FuQ2FjaGVQcm9wZXJ0aWVzRnJvbVN0cnVjdHVyZSA9ICFwcm9wZXJ0eU5hbWVz
LnNpemUoKTsKLSAgICBvYmplY3QtPnN0cnVjdHVyZSgpLT5nZXRQcm9wZXJ0eU5hbWVzRnJvbVN0
cnVjdHVyZShleGVjLT52bSgpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBvYmplY3QtPnN0
cnVjdHVyZSh2bSktPmdldFByb3BlcnR5TmFtZXNGcm9tU3RydWN0dXJlKHZtLCBwcm9wZXJ0eU5h
bWVzLCBtb2RlKTsKIAogICAgIGlmIChjYW5DYWNoZVByb3BlcnRpZXNGcm9tU3RydWN0dXJlKQog
ICAgICAgICBwcm9wZXJ0eU5hbWVzLnNldE51bUNhY2hlYWJsZVNsb3RzRm9yT2JqZWN0KG9iamVj
dCwgcHJvcGVydHlOYW1lcy5zaXplKCkpOwpAQCAtMTU3Nyw3ICsxNTg1LDcgQEAgdm9pZCBKU09i
amVjdDo6c2VhbChWTSYgdm0pCiAgICAgaWYgKGlzU2VhbGVkKHZtKSkKICAgICAgICAgcmV0dXJu
OwogICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVj
dHVyZTo6c2VhbFRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgc2V0U3RydWN0dXJl
KHZtLCBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiB9CiAK
IHZvaWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYgdm0pCkBAIC0xNTg1LDE0ICsxNTkzLDE0IEBAIHZv
aWQgSlNPYmplY3Q6OmZyZWV6ZShWTSYgdm0pCiAgICAgaWYgKGlzRnJvemVuKHZtKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIHByZXZlbnRFeHRlbnNpb25zKHZtKTsKLSAgICBzZXRTdHJ1Y3R1cmUo
dm0sIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKCkpKTsKKyAgICBz
ZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbih2bSwgc3RydWN0dXJl
KHZtKSkpOwogfQogCiB2b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhWTSYgdm0pCiB7
CiAgICAgZW50ZXJEaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKHZtKTsKICAgICBpZiAoaXNFeHRlbnNp
YmxlKCkpCi0gICAgICAgIHNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5z
aW9uc1RyYW5zaXRpb24odm0sIHN0cnVjdHVyZSgpKSk7CisgICAgICAgIHNldFN0cnVjdHVyZSh2
bSwgU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24odm0sIHN0cnVjdHVyZSh2
bSkpKTsKIH0KIAogLy8gVGhpcyBwcmVzZW50bHkgd2lsbCBmbGF0dGVuIHRvIGFuIHVuY2FjaGFi
bGUgZGljdGlvbmFyeTsgdGhpcyBpcyBzdWl0YWJsZQpAQCAtMTYwNSwxMiArMTYxMywxMiBAQCB2
b2lkIEpTT2JqZWN0OjpyZWlmeVN0YXRpY0Z1bmN0aW9uc0ZvckRlCiAgICAgLy8gSWYgdGhpcyBv
YmplY3QncyBDbGFzc0luZm8gaGFzIG5vIHN0YXRpYyBwcm9wZXJ0aWVzLCB0aGVuIG5vdGhpbmcg
dG8gcmVpZnkhCiAgICAgLy8gV2UgY2FuIHNhZmVseSBzZXQgdGhlIGZsYWcgdG8gYXZvaWQgdGhl
IGV4cGVuc2l2ZSBjaGVjayBhZ2FpbiBpbiB0aGUgZnV0dXJlLgogICAgIGlmICghY2xhc3NJbmZv
KCktPmhhc1N0YXRpY1Byb3BlcnRpZXMoKSkgewotICAgICAgICBzdHJ1Y3R1cmUoKS0+c2V0U3Rh
dGljRnVuY3Rpb25zUmVpZmllZCgpOworICAgICAgICBzdHJ1Y3R1cmUodm0pLT5zZXRTdGF0aWNG
dW5jdGlvbnNSZWlmaWVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXN0
cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQotICAgICAgICBzZXRTdHJ1Y3R1
cmUodm0sIFN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBz
dHJ1Y3R1cmUoKSkpOworICAgIGlmICghc3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSkKKyAgICAgICAgc2V0U3RydWN0dXJlKHZtLCBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbih2bSwgc3RydWN0dXJlKHZtKSkpOwogCiAgICAgZm9yIChj
b25zdCBDbGFzc0luZm8qIGluZm8gPSBjbGFzc0luZm8oKTsgaW5mbzsgaW5mbyA9IGluZm8tPnBh
cmVudENsYXNzKSB7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZSogaGFzaFRhYmxlID0gaW5mby0+
cHJvcEhhc2hUYWJsZShnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKQEAgLTE2MjMsMjQg
KzE2MzEsMjUgQEAgdm9pZCBKU09iamVjdDo6cmVpZnlTdGF0aWNGdW5jdGlvbnNGb3JEZQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgc3RydWN0dXJlKCktPnNldFN0YXRpY0Z1bmN0aW9uc1JlaWZp
ZWQoKTsKKyAgICBzdHJ1Y3R1cmUodm0pLT5zZXRTdGF0aWNGdW5jdGlvbnNSZWlmaWVkKCk7CiB9
CiAKIGJvb2wgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KHN0cnVjdHVyZSgpLT5nZXQodm0s
IHByb3BlcnR5TmFtZSkpKQorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0
dXJlKHZtKTsKKyAgICBpZiAoIWlzVmFsaWRPZmZzZXQoc3RydWN0dXJlLT5nZXQodm0sIHByb3Bl
cnR5TmFtZSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQ7Ci0gICAgaWYgKHN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7
Ci0gICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFu
c2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RydWN0dXJlLT5yZW1vdmVQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAob2Zm
c2V0ID09IGludmFsaWRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHB1dERpcmVjdFVuZGVmaW5lZChvZmZzZXQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0
aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVydHlOYW1lLCBvZmZzZXQpKTsKKyAgICBzZXRTdHJ1
Y3R1cmUodm0sIFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KSk7CiAgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zm
c2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcHV0RGlyZWN0VW5kZWZpbmVkKG9mZnNl
dCk7CkBAIC0xODY5LDcgKzE4NzgsNyBAQCBib29sIEpTT2JqZWN0OjphdHRlbXB0VG9JbnRlcmNl
cHRQdXRCeUluCiB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZT4KIHZvaWQgSlNP
YmplY3Q6OnB1dEJ5SW5kZXhCZXlvbmRWZWN0b3JMZW5ndGhXaXRob3V0QXR0cmlidXRlcyhFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKChz
dHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgPT0gaW5kZXhp
bmdTaGFwZSk7CisgICAgQVNTRVJUKChpbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNr
KSA9PSBpbmRleGluZ1NoYXBlKTsKICAgICBBU1NFUlQoIWluZGV4aW5nU2hvdWxkQmVTcGFyc2Uo
KSk7CiAgICAgCiAgICAgLy8gRm9yIHVzIHRvIGdldCBoZXJlLCB0aGUgaW5kZXggaXMgZWl0aGVy
IGdyZWF0ZXIgdGhhbiB0aGUgcHVibGljIGxlbmd0aCwgb3IgZ3JlYXRlciB0aGFuCkBAIC0xOTk4
LDcgKzIwMDcsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAg
ICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUgb2Yg
dGhlIGN1cnJlbnQgdmVjdG9yLgogICAgIEFTU0VSVChpIDw9IE1BWF9BUlJBWV9JTkRFWCk7CiAg
ICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBzd2l0
Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6
IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKSkgewogICAgICAgICAgICAg
cHV0QnlJbmRleEJleW9uZFZlY3Rvckxlbmd0aFdpdGhBcnJheVN0b3JhZ2UoCkBAIC0yMDExLDcg
KzIwMjAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXRCeUluZGV4QmV5b25kVmVjdG9yTGVuCiAgICAg
ICAgICAgICAgICAgZXhlYywgaSwgdmFsdWUsIHNob3VsZFRocm93LCBjcmVhdGVBcnJheVN0b3Jh
Z2Uodm0sIDAsIDApKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlm
IChzdHJ1Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSkgeworICAgICAgICBpZiAoc3Ry
dWN0dXJlKGV4ZWMtPnZtKCkpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CiAgICAgICAgICAg
ICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBjcmVhdGVBcnJheVN0b3JhZ2Uodm0sIGkgKyAxLCBn
ZXROZXdWZWN0b3JMZW5ndGgoMCwgMCwgaSArIDEpKTsKICAgICAgICAgICAgIHN0b3JhZ2UtPm1f
dmVjdG9yW2ldLnNldCh2bSwgdGhpcywgdmFsdWUpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvcisrOwpAQCAtMjA2Niw3ICsyMDc1LDcgQEAgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
CiAgICAgLy8gaSBzaG91bGQgYmUgYSB2YWxpZCBhcnJheSBpbmRleCB0aGF0IGlzIG91dHNpZGUg
b2YgdGhlIGN1cnJlbnQgdmVjdG9yLgotICAgIEFTU0VSVChoYXNBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRl
eGluZ1R5cGUoKSkpOwogICAgIEFTU0VSVChhcnJheVN0b3JhZ2UoKSA9PSBzdG9yYWdlKTsKICAg
ICBBU1NFUlQoaSA+PSBzdG9yYWdlLT52ZWN0b3JMZW5ndGgoKSB8fCBhdHRyaWJ1dGVzKTsKICAg
ICBBU1NFUlQoaSA8PSBNQVhfQVJSQVlfSU5ERVgpOwpAQCAtMjE0OCw3ICsyMTU3LDcgQEAgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgIGlmIChhdHRyaWJ1dGVz
ICYgKFJlYWRPbmx5IHwgQWNjZXNzb3IpKQogICAgICAgICBub3RpZnlQcmVzZW5jZU9mSW5kZXhl
ZEFjY2Vzc29ycyh2bSk7CiAgICAgCi0gICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBTExfQkxB
TktfSU5ERVhJTkdfVFlQRVM6IHsKICAgICAgICAgaWYgKGluZGV4aW5nU2hvdWxkQmVTcGFyc2Uo
KSB8fCBhdHRyaWJ1dGVzKSB7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGlyZWN0SW5kZXhCZXlv
bmRWZWN0b3JMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKApAQCAtMjE1OSw3ICsyMTY4LDcgQEAgYm9v
bCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAgICAgICAgICAgcmV0dXJu
IHB1dERpcmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoV2l0aEFycmF5U3RvcmFnZSgKICAgICAg
ICAgICAgICAgICBleGVjLCBpLCB2YWx1ZSwgYXR0cmlidXRlcywgbW9kZSwgY3JlYXRlQXJyYXlT
dG9yYWdlKHZtLCAwLCAwKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0cnVjdHVyZSgpLT5u
ZWVkc1Nsb3dQdXRJbmRleGluZygpKSB7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUoZXhlYy0+dm0o
KSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpIHsKICAgICAgICAgICAgIEFycmF5U3RvcmFnZSog
c3RvcmFnZSA9IGNyZWF0ZUFycmF5U3RvcmFnZSh2bSwgaSArIDEsIGdldE5ld1ZlY3Rvckxlbmd0
aCgwLCAwLCBpICsgMSkpOwogICAgICAgICAgICAgc3RvcmFnZS0+bV92ZWN0b3JbaV0uc2V0KHZt
LCB0aGlzLCB2YWx1ZSk7CiAgICAgICAgICAgICBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9y
Kys7CkBAIC0yMjgyLDcgKzIyOTEsNyBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEpTT2JqZWN0
OjpnZXROZXdWCiAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoOwogICAgIHVuc2lnbmVkIGxlbmd0
aDsKICAgICAKLSAgICBpZiAoaGFzSW5kZXhlZFByb3BlcnRpZXMoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkgeworICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUo
KSkpIHsKICAgICAgICAgdmVjdG9yTGVuZ3RoID0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgp
OwogICAgICAgICBsZW5ndGggPSBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfSBl
bHNlIHsKQEAgLTIzMjEsNyArMjMzMCw3IEBAIHVuc2lnbmVkIEpTT2JqZWN0Ojpjb3VudEVsZW1l
bnRzKEJ1dHRlcmYKIAogdW5zaWduZWQgSlNPYmplY3Q6OmNvdW50RWxlbWVudHMoKQogewotICAg
IHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgIGNh
c2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
MzYwLDEwICsyMzY5LDExIEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9yTGVuZ3RoKFZN
JiAKICAgICB1bnNpZ25lZCBuZXdWZWN0b3JMZW5ndGggPSBnZXROZXdWZWN0b3JMZW5ndGgobmV3
TGVuZ3RoKTsKIAogICAgIC8vIEZhc3QgY2FzZSAtIHRoZXJlIGlzIG5vIHByZWNhcGFjaXR5LiBJ
biB0aGVzZSBjYXNlcyBhIHJlYWxsb2MgbWFrZXMgc2Vuc2UuCisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChMSUtFTFkoIWluZGV4Qmlhcykp
IHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJmbHkq
IG5ld0J1dHRlcmZseSA9IHN0b3JhZ2UtPmJ1dHRlcmZseSgpLT5ncm93QXJyYXlSaWdodCgKLSAg
ICAgICAgICAgIHZtLCB0aGlzLCBzdHJ1Y3R1cmUoKSwgc3RydWN0dXJlKCktPm91dE9mTGluZUNh
cGFjaXR5KCksIHRydWUsCisgICAgICAgICAgICB2bSwgdGhpcywgc3RydWN0dXJlLCBzdHJ1Y3R1
cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsCiAgICAgICAgICAgICBBcnJheVN0b3JhZ2U6
OnNpemVGb3IodmVjdG9yTGVuZ3RoKSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxl
bmd0aCkpOwogICAgICAgICBpZiAoIW5ld0J1dHRlcmZseSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIzNzcsNyArMjM4Nyw3IEBAIGJvb2wgSlNPYmplY3Q6OmluY3JlYXNlVmVjdG9y
TGVuZ3RoKFZNJiAKICAgICB1bnNpZ25lZCBuZXdJbmRleEJpYXMgPSBzdGQ6Om1pbihpbmRleEJp
YXMgPj4gMSwgTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCAtIG5ld1ZlY3Rvckxlbmd0aCk7CiAg
ICAgQnV0dGVyZmx5KiBuZXdCdXR0ZXJmbHkgPSBzdG9yYWdlLT5idXR0ZXJmbHkoKS0+cmVzaXpl
QXJyYXkoCiAgICAgICAgIHZtLCB0aGlzLAotICAgICAgICBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCksCisg
ICAgICAgIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdl
OjpzaXplRm9yKHZlY3Rvckxlbmd0aCksCiAgICAgICAgIG5ld0luZGV4QmlhcywgdHJ1ZSwgQXJy
YXlTdG9yYWdlOjpzaXplRm9yKG5ld1ZlY3Rvckxlbmd0aCkpOwogICAgIGlmICghbmV3QnV0dGVy
Zmx5KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzkwLDcgKzI0MDAsNyBAQCBib29sIEpT
T2JqZWN0OjppbmNyZWFzZVZlY3Rvckxlbmd0aChWTSYgCiB2b2lkIEpTT2JqZWN0OjplbnN1cmVM
ZW5ndGhTbG93KFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5ndGgg
PCBNQVhfQVJSQVlfSU5ERVgpOwotICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSkgfHwgaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgp
KSB8fCBoYXNEb3VibGUoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB8fCBoYXNVbmRlY2lk
ZWQoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgQVNTRVJUKGhhc0NvbnRpZ3Vv
dXMoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNEb3Vi
bGUoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwogICAg
IEFTU0VSVChsZW5ndGggPiBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgIAogICAg
IHVuc2lnbmVkIG5ld1ZlY3Rvckxlbmd0aCA9IHN0ZDo6bWluKApAQCAtMjQwNSw3ICsyNDE1LDcg
QEAgdm9pZCBKU09iamVjdDo6ZW5zdXJlTGVuZ3RoU2xvdyhWTSYgdm0sIAogCiAgICAgbV9idXR0
ZXJmbHktPnNldFZlY3Rvckxlbmd0aChuZXdWZWN0b3JMZW5ndGgpOwogCi0gICAgaWYgKGhhc0Rv
dWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSB7CisgICAgaWYgKGhhc0RvdWJsZShp
bmRleGluZ1R5cGUoKSkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gb2xkVmVjdG9yTGVu
Z3RoOyBpIDwgbmV3VmVjdG9yTGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpLmRhdGEoKVtpXSA9IFFOYU47CiAgICAgfQpAQCAtMjQxOCwxNiAr
MjQyOCwxNiBAQCBCdXR0ZXJmbHkqIEpTT2JqZWN0Ojpncm93T3V0T2ZMaW5lU3RvcmFnCiAgICAg
Ly8gSXQncyBpbXBvcnRhbnQgdGhhdCB0aGlzIGZ1bmN0aW9uIG5vdCByZWx5IG9uIHN0cnVjdHVy
ZSgpLCBmb3IgdGhlIHByb3BlcnR5CiAgICAgLy8gY2FwYWNpdHksIHNpbmNlIHdlIG1pZ2h0IGhh
dmUgYWxyZWFkeSBtdXRhdGVkIHRoZSBzdHJ1Y3R1cmUgaW4tcGxhY2UuCiAgICAgCi0gICAgcmV0
dXJuIG1fYnV0dGVyZmx5LT5ncm93UHJvcGVydHlTdG9yYWdlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUo
KSwgb2xkU2l6ZSwgbmV3U2l6ZSk7CisgICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5ncm93UHJvcGVy
dHlTdG9yYWdlKHZtLCB0aGlzLCBzdHJ1Y3R1cmUodm0pLCBvbGRTaXplLCBuZXdTaXplKTsKIH0K
IAogYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewogICAgIEpTQzo6UHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgaWYgKCFtZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSkKKyAgICBpZiAoIW1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNs
b3QodGhpcywgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIC8qIFdvcmthcm91bmQsIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3Qgc2Vh
cmNoZXMgdGhlIHByb3RvdHlwZSBjaGFpbi4gOi0oICovCi0gICAgaWYgKHNsb3Quc2xvdEJhc2Uo
KSAhPSB0aGlzICYmIHNsb3Quc2xvdEJhc2UoKSAmJiBzbG90LnNsb3RCYXNlKCktPm1ldGhvZFRh
YmxlKCktPnRvVGhpcyhzbG90LnNsb3RCYXNlKCksIGV4ZWMsIE5vdFN0cmljdE1vZGUpICE9IHRo
aXMpCisgICAgaWYgKHNsb3Quc2xvdEJhc2UoKSAhPSB0aGlzICYmIHNsb3Quc2xvdEJhc2UoKSAm
JiBzbG90LnNsb3RCYXNlKCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT50b1RoaXMoc2xvdC5z
bG90QmFzZSgpLCBleGVjLCBOb3RTdHJpY3RNb2RlKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKHNsb3QuaXNBY2Nlc3NvcigpKQogICAgICAgICBkZXNjcmlwdG9yLnNl
dEFjY2Vzc29yRGVzY3JpcHRvcihzbG90LmdldHRlclNldHRlcigpLCBzbG90LmF0dHJpYnV0ZXMo
KSk7CkBAIC0yNDU4LDcgKzI0NjgsNyBAQCBzdGF0aWMgYm9vbCBwdXREZXNjcmlwdG9yKEV4ZWNT
dGF0ZSogZXhlCiAgICAgICAgICAgICBuZXdWYWx1ZSA9IG9sZERlc2NyaXB0b3IudmFsdWUoKTsK
ICAgICAgICAgdGFyZ2V0LT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgbmV3VmFsdWUsIGF0
dHJpYnV0ZXMgJiB+QWNjZXNzb3IpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5
KQotICAgICAgICAgICAgdGFyZ2V0LT5zdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVBy
b3BlcnRpZXMoKTsKKyAgICAgICAgICAgIHRhcmdldC0+c3RydWN0dXJlKHZtKS0+c2V0Q29udGFp
bnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IGF0dHJpYnV0ZXMgJj0gflJlYWRPbmx5OwpAQCAtMjU0OCw3ICsyNTU4LDcgQEAgYm9vbCBKU09i
amVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgIC8vIEEgZ2VuZXJpYyBkZXNjcmlw
dG9yIGlzIHNpbXBseSBjaGFuZ2luZyB0aGUgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBwcm9w
ZXJ0eQogICAgIGlmIChkZXNjcmlwdG9yLmlzR2VuZXJpY0Rlc2NyaXB0b3IoKSkgewogICAgICAg
ICBpZiAoIWN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKSB7Ci0gICAgICAgICAg
ICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRo
aXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRv
cihleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmli
dXRlc092ZXJyaWRpbmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI1NjEsNyArMjU3MSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRl
ZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGFjY2VzcyBtZWNoYW5pc20gZm9yIGFuIHVuY29uZmlndXJhYmxlIHBy
b3BlcnR5LiIpKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAg
ICAgbWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkodGhpcywgZXhlYywgcHJvcGVydHlOYW1l
KTsKKyAgICAgICAgbWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXMs
IGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiBwdXREZXNjcmlwdG9yKGV4ZWMs
IHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3Zl
cnJpZGluZ0N1cnJlbnQoY3VycmVudCksIGN1cnJlbnQpOwogICAgIH0KIApAQCAtMjU4Myw3ICsy
NTkzLDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5lT3duTm9uSW5kZXhQcm9wZXJ0eQogICAgICAg
ICB9CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXNFcXVhbChkZXNjcmlwdG9yKSAmJiAh
ZGVzY3JpcHRvci52YWx1ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIG1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBleGVj
LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gcHV0RGVzY3JpcHRvcihleGVjLCB0aGlz
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIGRlc2NyaXB0b3IuYXR0cmlidXRlc092ZXJyaWRp
bmdDdXJyZW50KGN1cnJlbnQpLCBjdXJyZW50KTsKICAgICB9CiAKQEAgLTI2MTEsNyArMjYyMSw3
IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93bk5vbkluZGV4UHJvcGVydHkKICAgICAgICAgZ2V0
dGVyU2V0dGVyLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwgZGVzY3JpcHRvci5nZXR0ZXJPYmplY3Qo
KSk7CiAgICAgaWYgKGN1cnJlbnQuYXR0cmlidXRlc0VxdWFsKGRlc2NyaXB0b3IpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBtZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eSh0aGlzLCBl
eGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQ
cm9wZXJ0eSh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIHVuc2lnbmVkIGF0dHJzID0g
ZGVzY3JpcHRvci5hdHRyaWJ1dGVzT3ZlcnJpZGluZ0N1cnJlbnQoY3VycmVudCk7CiAgICAgcHV0
RGlyZWN0QWNjZXNzb3IoZXhlYywgcHJvcGVydHlOYW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJzIHwg
QWNjZXNzb3IpOwogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgSlNDZWxsKiBnZXRKU0Z1bmN0aW9uKEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgaWYgKHZhbHVlLmlzQ2VsbCgpICYmICh2YWx1ZS5hc0NlbGwoKS0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rpb25UeXBlKSkKKyAgICBpZiAo
dmFsdWUuaXNDZWxsKCkgJiYgKHZhbHVlLmFzQ2VsbCgpLT50eXBlKCkgPT0gSlNGdW5jdGlvblR5
cGUpKQogICAgICAgICByZXR1cm4gdmFsdWUuYXNDZWxsKCk7CiAgICAgcmV0dXJuIDA7CiB9CkBA
IC0xMzUsMTQgKzEzNSwxNCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0
aCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpCisgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRp
ZXMoaW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biBtX2J1dHRlcmZseS0+cHVibGljTGVuZ3RoKCk7CiAgICAgfQogICAgICAgICAKICAgICB1bnNp
Z25lZCBnZXRWZWN0b3JMZW5ndGgoKQogICAgIHsKLSAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJv
cGVydGllcyhzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICBpZiAoIWhhc0lu
ZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpOwogICAgIH0KQEAgLTE1
Niw3ICsxNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXRJbmRleFF1aWNrbHkoZXhlYy0+
dm0oKSwgcHJvcGVydHlOYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBzaG91bGRUaHJvdyk7CisgICAgICAgIG1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5wdXRCeUluZGV4KHRoaXMsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3VsZFRo
cm93KTsKICAgICB9CiAgICAgICAgIAogICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHV0
RGlyZWN0KiBtZXRob2RzOgpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIGNhbkdldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsKLSAgICAgICAgc3dpdGNo
IChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGlu
Z1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElOR19UWVBFUzoKICAgICAg
ICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1
ZSBnZXRJbmRleFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3Ry
dWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBl
KCkpIHsKICAgICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAg
ICByZXR1cm4ganNOdW1iZXIobV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5nZXQoKS5hc0lu
dDMyKCkpOwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgpAQCAt
MjI5LDcgKzIyOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgSlNWYWx1ZSB0cnlHZXRJbmRl
eFF1aWNrbHkodW5zaWduZWQgaSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfQkxBTktfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VO
REVDSURFRF9JTkRFWElOR19UWVBFUzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY4LDcgKzI2
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gdHJ5R2V0SW5kZXhR
dWlja2x5KGkpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpcyk7Ci0gICAgICAgIGlmIChtZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0
eVNsb3RCeUluZGV4KHRoaXMsIGV4ZWMsIGksIHNsb3QpKQorICAgICAgICBpZiAobWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpcywgZXhlYywgaSwg
c2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBpKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICB9CkBAIC0yODIsNyArMjgyLDcgQEAgcHVibGljOgog
ICAgICAgICAKICAgICBib29sIGNhblNldEluZGV4UXVpY2tseSh1bnNpZ25lZCBpKQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAg
c3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9CTEFOS19JTkRFWElO
R19UWVBFUzoKICAgICAgICAgY2FzZSBBTExfVU5ERUNJREVEX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgYm9vbCBjYW5TZXRJbmRleFF1aWNrbHlGb3JQdXREaXJlY3QodW5zaWduZWQgaSkK
ICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSB7Cisg
ICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAgY2FzZSBBTExfQkxBTktf
SU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBF
UzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMyMSw3ICszMjEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgIHZvaWQgc2V0SW5kZXhRdWlja2x5KFZNJiB2bSwgdW5zaWduZWQgaSwg
SlNWYWx1ZSB2KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdU
eXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewogICAgICAgICBjYXNl
IEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzogewogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX2J1
dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCF2LmlzSW50MzIoKSkg
ewpAQCAtMzcyLDcgKzM3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdm9pZCBpbml0aWFs
aXplSW5kZXgoVk0mIHZtLCB1bnNpZ25lZCBpLCBKU1ZhbHVlIHYpCiAgICAgewotICAgICAgICBz
d2l0Y2ggKHN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGlu
ZGV4aW5nVHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQUxMX1VOREVDSURFRF9JTkRFWElOR19UWVBF
UzogewogICAgICAgICAgICAgc2V0SW5kZXhRdWlja2x5VG9VbmRlY2lkZWQodm0sIGksIHYpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogICAgICAgICAK
ICAgICBib29sIGhhc1NwYXJzZU1hcCgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVY
SU5HX1RZUEVTOgpAQCAtNDM4LDcgKzQzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgYm9v
bCBpblNwYXJzZUluZGV4aW5nTW9kZSgpCiAgICAgewotICAgICAgICBzd2l0Y2ggKHN0cnVjdHVy
ZSgpLT5pbmRleGluZ1R5cGUoKSkgeworICAgICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7
CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFM
TF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0lOVDMyX0lOREVY
SU5HX1RZUEVTOgpAQCAtNDk0LDMxICs0OTQsMzUgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZ2V0
IGZ1bmN0aW9uIG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KICAgICBKU1ZhbHVlIGdl
dERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgewot
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9w
ZXJ0eU5hbWUpOwotICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxp
bmVDYXBhY2l0eSgpKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1
Y3R1cmUodm0pOworICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdl
dCh2bSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1
cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRP
ZmZzZXQgPyBnZXREaXJlY3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBKU1Zh
bHVlIGdldERpcmVjdChWTSYgdm0sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
JiBhdHRyaWJ1dGVzKSBjb25zdAogICAgIHsKICAgICAgICAgSlNDZWxsKiBzcGVjaWZpYzsKLSAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpYyk7Ci0gICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNl
dCwgc3RydWN0dXJlKCktPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHRoaXMtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljKTsKKyAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUtPmlubGluZUNhcGFj
aXR5KCkpOwogICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IGludmFsaWRPZmZzZXQgPyBnZXREaXJl
Y3Qob2Zmc2V0KSA6IEpTVmFsdWUoKTsKICAgICB9CiAKICAgICBQcm9wZXJ0eU9mZnNldCBnZXRE
aXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKLSAg
ICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldCh2bSwgcHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBzdHJ1Y3R1cmUoKS0+aW5saW5l
Q2FwYWNpdHkoKSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0
dXJlKHZtKTsKKyAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQo
dm0sIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJl
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKICAg
ICBQcm9wZXJ0eU9mZnNldCBnZXREaXJlY3RPZmZzZXQoVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICB7CiAgICAgICAgIEpTQ2VsbCog
c3BlY2lmaWM7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5n
ZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWMpOwotICAgICAgICBjaGVj
a09mZnNldChvZmZzZXQsIHN0cnVjdHVyZSgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBQcm9w
ZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCBzcGVjaWZpYyk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgc3RydWN0dXJl
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICB9CiAKQEAg
LTU5Niw4ICs2MDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWFsKFZNJik7CiAgICAgdm9pZCBm
cmVlemUoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByZXZlbnRFeHRlbnNpb25z
KFZNJik7Ci0gICAgYm9vbCBpc1NlYWxlZChWTSYgdm0pIHsgcmV0dXJuIHN0cnVjdHVyZSgpLT5p
c1NlYWxlZCh2bSk7IH0KLSAgICBib29sIGlzRnJvemVuKFZNJiB2bSkgeyByZXR1cm4gc3RydWN0
dXJlKCktPmlzRnJvemVuKHZtKTsgfQorICAgIGJvb2wgaXNTZWFsZWQoVk0mIHZtKSB7IHJldHVy
biBzdHJ1Y3R1cmUodm0pLT5pc1NlYWxlZCh2bSk7IH0KKyAgICBib29sIGlzRnJvemVuKFZNJiB2
bSkgeyByZXR1cm4gc3RydWN0dXJlKHZtKS0+aXNGcm96ZW4odm0pOyB9CiAgICAgYm9vbCBpc0V4
dGVuc2libGUoKSB7IHJldHVybiBzdHJ1Y3R1cmUoKS0+aXNFeHRlbnNpYmxlKCk7IH0KICAgICBi
b29sIGluZGV4aW5nU2hvdWxkQmVTcGFyc2UoKQogICAgIHsKQEAgLTYxOCw3ICs2MjIsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KFZNJiB2bSkKICAgICB7
Ci0gICAgICAgIHN0cnVjdHVyZSgpLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgdGhp
cyk7CisgICAgICAgIHN0cnVjdHVyZSh2bSktPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZt
LCB0aGlzKTsKICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29u
c3QKQEAgLTY0NSw3ICs2NDksNyBAQCBwdWJsaWM6CiAgICAgLy8gY29udGlndW91cywgYXJyYXkg
c3RvcmFnZSkuCiAgICAgQ29udGlndW91c0pTVmFsdWVzIGVuc3VyZUludDMyKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoc3RydWN0dXJlKCktPmluZGV4aW5nVHlw
ZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzSW50MzIoaW5kZXhpbmdUeXBlKCkpKSkKICAg
ICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+Y29udGlndW91c0ludDMyKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgcmV0dXJuIGVuc3VyZUludDMyU2xvdyh2bSk7CkBAIC02NTcsNyArNjYx
LDcgQEAgcHVibGljOgogICAgIC8vIG9yIGFycmF5IHN0b3JhZ2UpLgogICAgIENvbnRpZ3VvdXNE
b3VibGVzIGVuc3VyZURvdWJsZShWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhh
c0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VM
WShoYXNEb3VibGUoaW5kZXhpbmdUeXBlKCkpKSkKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRl
cmZseS0+Y29udGlndW91c0RvdWJsZSgpOwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBl
bnN1cmVEb3VibGVTbG93KHZtKTsKQEAgLTY2Nyw3ICs2NzEsNyBAQCBwdWJsaWM6CiAgICAgLy8g
aW5kZXhpbmcgc2hvdWxkIGJlIHNwYXJzZSBvciBiZWNhdXNlIHdlJ3JlIGhhdmluZyBhIGJhZCB0
aW1lLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBlbnN1cmVDb250aWd1b3VzKFZNJiB2bSkKICAg
ICB7Ci0gICAgICAgIGlmIChMSUtFTFkoaGFzQ29udGlndW91cyhzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKSkKKyAgICAgICAgaWYgKExJS0VMWShoYXNDb250aWd1b3VzKGluZGV4aW5nVHlw
ZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKICAg
ICAgICAgICAgIAogICAgICAgICByZXR1cm4gZW5zdXJlQ29udGlndW91c1Nsb3codm0pOwpAQCAt
Njc4LDcgKzY4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBhdHRlbXB0cyB0byBjb252ZXJ0IGVhY2gg
ZG91YmxlIHRvIGFuIGludDMyLgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyByYWdlRW5zdXJlQ29u
dGlndW91cyhWTSYgdm0pCiAgICAgewotICAgICAgICBpZiAoTElLRUxZKGhhc0NvbnRpZ3VvdXMo
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQ29u
dGlndW91cyhpbmRleGluZ1R5cGUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIG1fYnV0dGVyZmx5
LT5jb250aWd1b3VzKCk7CiAgICAgICAgICAgICAKICAgICAgICAgcmV0dXJuIHJhZ2VFbnN1cmVD
b250aWd1b3VzU2xvdyh2bSk7CkBAIC02OTAsNyArNjk0LDcgQEAgcHVibGljOgogICAgIC8vIGFs
cmVhZHkuCiAgICAgQXJyYXlTdG9yYWdlKiBlbnN1cmVBcnJheVN0b3JhZ2UoVk0mIHZtKQogICAg
IHsKLSAgICAgICAgaWYgKExJS0VMWShoYXNBcnJheVN0b3JhZ2Uoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkpCisgICAgICAgIGlmIChMSUtFTFkoaGFzQXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgp
OwogICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBlbnN1cmVBcnJheVN0b3JhZ2VTbG93KHZt
KTsKQEAgLTczOCw3ICs3NDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gc3RvcmFnZS4gVGhpcyB3
aWxsIGFzc2VydCBvdGhlcndpc2UuCiAgICAgQXJyYXlTdG9yYWdlKiBhcnJheVN0b3JhZ2UoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShzdHJ1Y3R1cmUoKS0+aW5kZXhp
bmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0FycmF5U3RvcmFnZShpbmRleGluZ1R5cGUo
KSkpOwogICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgIH0K
ICAgICAgICAgCkBAIC03NDYsNyArNzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIG9iamVjdCBp
cyBpbiBhIG1vZGUgd2hlcmUgaXQgaGFzIGFycmF5IHN0b3JhZ2UuCiAgICAgQXJyYXlTdG9yYWdl
KiBhcnJheVN0b3JhZ2VPck51bGwoKQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzdHJ1Y3R1cmUo
KS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRleGluZ1R5cGUoKSkgewog
ICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAg
ICAgcmV0dXJuIG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICAK
QEAgLTgxMyw3ICs4MTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbnN1cmVMZW5ndGgoVk0m
IHZtLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgewogICAgICAgICBBU1NFUlQobGVuZ3RoIDwgTUFY
X0FSUkFZX0lOREVYKTsKLSAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB8fCBoYXNJbnQzMihzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkp
IHx8IGhhc0RvdWJsZShzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRl
ZChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgQVNTRVJUKGhhc0NvbnRp
Z3VvdXMoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc0ludDMyKGluZGV4aW5nVHlwZSgpKSB8fCBoYXNE
b3VibGUoaW5kZXhpbmdUeXBlKCkpIHx8IGhhc1VuZGVjaWRlZChpbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgIGlmIChtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkgPCBs
ZW5ndGgpCiAgICAgICAgICAgICBlbnN1cmVMZW5ndGhTbG93KHZtLCBsZW5ndGgpOwpAQCAtODUx
LDcgKzg1NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjdXJyZW50
SW5kZXhpbmdEYXRhKCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAgICAgICAg
Y2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NPTlRJR1VP
VVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHktPmNvbnRp
Z3VvdXMoKTsKQEAgLTg2OCw3ICs4NzIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNWYWx1ZSBnZXRI
b2x5SW5kZXhRdWlja2x5KHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IG1f
YnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7Ci0gICAgICAgIHN3aXRjaCAoc3RydWN0dXJlKCkt
PmluZGV4aW5nVHlwZSgpKSB7CisgICAgICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBTExfSU5UMzJfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgIGNhc2UgQUxMX0NP
TlRJR1VPVVNfSU5ERVhJTkdfVFlQRVM6CiAgICAgICAgICAgICByZXR1cm4gbV9idXR0ZXJmbHkt
PmNvbnRpZ3VvdXMoKVtpXS5nZXQoKTsKQEAgLTkwOCw3ICs5MTIsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB1bnNpZ25lZCBjdXJyZW50UmVsZXZhbnRMZW5ndGgoKQogICAgIHsKLSAgICAgICAgc3dp
dGNoIChzdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpIHsKKyAgICAgICAgc3dpdGNoIChpbmRl
eGluZ1R5cGUoKSkgewogICAgICAgICBjYXNlIEFMTF9JTlQzMl9JTkRFWElOR19UWVBFUzoKICAg
ICAgICAgY2FzZSBBTExfRE9VQkxFX0lOREVYSU5HX1RZUEVTOgogICAgICAgICBjYXNlIEFMTF9D
T05USUdVT1VTX0lOREVYSU5HX1RZUEVTOgpAQCAtOTgwLDYgKzk4NCwxMCBAQCBwcml2YXRlOgog
ICAgIAogcHJvdGVjdGVkOgogICAgIENvcHlXcml0ZUJhcnJpZXI8QnV0dGVyZmx5PiBtX2J1dHRl
cmZseTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorcHJpdmF0ZToKKyAgICB1aW50MzJfdCBtX3Bh
ZGRpbmc7CisjZW5kaWYKIH07CiAKIC8vIEpTTm9uRmluYWxPYmplY3QgaXMgYSB0eXBlIG9mIEpT
T2JqZWN0IHRoYXQgaGFzIHNvbWUgaW50ZXJuYWwgc3RvcmFnZSwKQEAgLTExMDYsMzUgKzExMTQs
MzUgQEAgaW5saW5lIHNpemVfdCBKU09iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdAogCiBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6aXNHbG9iYWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBzdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gR2xvYmFsT2JqZWN0VHlwZTsKKyAgICByZXR1
cm4gdHlwZSgpID09IEdsb2JhbE9iamVjdFR5cGU7CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0
Ojppc1ZhcmlhYmxlT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5
cGVJbmZvKCkudHlwZSgpID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgp
ID49IFZhcmlhYmxlT2JqZWN0VHlwZTsKIH0KIAogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNT
dGF0aWNTY29wZU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgSlNUeXBlIHR5cGUgPSBzdHJ1Y3R1cmUo
KS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUgPSB0aGlzLT50eXBlKCk7CiAg
ICAgcmV0dXJuIHR5cGUgPT0gTmFtZVNjb3BlT2JqZWN0VHlwZSB8fCB0eXBlID09IEFjdGl2YXRp
b25PYmplY3RUeXBlOwogfQogCiAKIGlubGluZSBib29sIEpTT2JqZWN0Ojppc05hbWVTY29wZU9i
amVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUo
KSA9PSBOYW1lU2NvcGVPYmplY3RUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gTmFtZVNjb3Bl
T2JqZWN0VHlwZTsKIH0KIAogaW5saW5lIGJvb2wgSlNPYmplY3Q6OmlzQWN0aXZhdGlvbk9iamVj
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSA9
PSBBY3RpdmF0aW9uT2JqZWN0VHlwZTsKKyAgICByZXR1cm4gdHlwZSgpID09IEFjdGl2YXRpb25P
YmplY3RUeXBlOwogfQogCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6aXNFcnJvckluc3RhbmNlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpID09IEVy
cm9ySW5zdGFuY2VUeXBlOworICAgIHJldHVybiB0eXBlKCkgPT0gRXJyb3JJbnN0YW5jZVR5cGU7
CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkpCkBAIC0xMTk4
LDEwICsxMjA2LDEyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3cK
IHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWM7Ci0gICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmdldChleGVjLT52bSgpLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpYyk7CiAgICAgaWYgKExJS0VMWShpc1ZhbGlkT2Zmc2V0KG9mZnNl
dCkpKSB7CiAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBnZXREaXJlY3Qob2Zmc2V0KTsKLSAgICAg
ICAgaWYgKHN0cnVjdHVyZSgpLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgdmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSkKKyAgICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVy
UHJvcGVydGllcygpICYmIHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxs
R2V0dGVyUHJvcGVydHlTbG90KHNsb3QsIHZhbHVlLCBhdHRyaWJ1dGVzLCBvZmZzZXQpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIGF0dHJpYnV0ZXMsIHZh
bHVlLCBvZmZzZXQpOwpAQCAtMTIyMSw5ICsxMjMxLDEwIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBK
U09iamVjdDo6Z2V0T3duUHJvcGUKIAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpmYXN0
R2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmICghc3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkub3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90KCkpCisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBpZiAoIXN0cnVjdHVyZSh2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90KCkpCiAgICAgICAgIHJldHVybiBhc09iamVjdCh0aGlzKS0+aW5saW5lR2V0
T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgcmV0dXJuIG1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdCh0aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworICAgIHJldHVybiBtZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0
aGlzLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiAvLyBJdCBtYXkgc2VlbSBjcmF6
eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZm
ZXJlbmNlCkBAIC0xMjQ1LDcgKzEyNTYsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6
OmdldFByb3BlcnR5CiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUg
KHRydWUpIHsKLSAgICAgICAgaWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAgICAg
IGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3RC
eUluZGV4KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdC0+cHJvdG90eXBl
KCk7CiAgICAgICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkpCkBAIC0xMjgwLDE1ICsxMjkx
LDE2IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKICAgICBBU1NF
UlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAo
dGhpcykpOwogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUuYXNJbmRleCgpID09IFByb3BlcnR5TmFt
ZTo6Tm90QW5JbmRleCk7CiAKLSAgICBpZiAoc3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUodm0pOworICAgIGlm
IChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRB
dHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAg
ICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0
eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAg
ICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5h
bWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAg
IGlmIChvZmZzZXQgIT0gaW52YWxpZE9mZnNldCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlz
bid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4g
ZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChz
cGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAgICAgICAg
ICAgICBzdHJ1Y3R1cmUoKS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHZtLCBwcm9wZXJ0
eU5hbWUpOworICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1
bmN0aW9uKHZtLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKChtb2RlID09IFB1dE1v
ZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC0xMzA5LDI0ICsxMzIxLDI0IEBAIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpwdXREaXJlY3RJbnRlcm5hbCgKIAogICAgICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVh
cCk7CiAgICAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gYnV0dGVyZmx5KCk7Ci0gICAg
ICAgIGlmIChzdHJ1Y3R1cmUoKS0+cHV0V2lsbEdyb3dPdXRPZkxpbmVTdG9yYWdlKCkpCi0gICAg
ICAgICAgICBuZXdCdXR0ZXJmbHkgPSBncm93T3V0T2ZMaW5lU3RvcmFnZSh2bSwgc3RydWN0dXJl
KCktPm91dE9mTGluZUNhcGFjaXR5KCksIHN0cnVjdHVyZSgpLT5zdWdnZXN0ZWROZXdPdXRPZkxp
bmVTdG9yYWdlQ2FwYWNpdHkoKSk7Ci0gICAgICAgIG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNw
ZWNpZmljRnVuY3Rpb24pOwotICAgICAgICBzZXRTdHJ1Y3R1cmVBbmRCdXR0ZXJmbHkodm0sIHN0
cnVjdHVyZSgpLCBuZXdCdXR0ZXJmbHkpOworICAgICAgICBpZiAodGhpcy0+c3RydWN0dXJlKCkt
PnB1dFdpbGxHcm93T3V0T2ZMaW5lU3RvcmFnZSgpKQorICAgICAgICAgICAgbmV3QnV0dGVyZmx5
ID0gZ3Jvd091dE9mTGluZVN0b3JhZ2Uodm0sIHRoaXMtPnN0cnVjdHVyZSgpLT5vdXRPZkxpbmVD
YXBhY2l0eSgpLCB0aGlzLT5zdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3T3V0T2ZMaW5lU3RvcmFn
ZUNhcGFjaXR5KCkpOworICAgICAgICBvZmZzZXQgPSB0aGlzLT5zdHJ1Y3R1cmUoKS0+YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbih2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCB0aGlz
LT5zdHJ1Y3R1cmUoKSwgbmV3QnV0dGVyZmx5KTsKIAogICAgICAgICB2YWxpZGF0ZU9mZnNldChv
ZmZzZXQpOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJlKCktPmlzVmFsaWRPZmZzZXQob2Zmc2V0
KSk7CisgICAgICAgIEFTU0VSVCh0aGlzLT5zdHJ1Y3R1cmUoKS0+aXNWYWxpZE9mZnNldChvZmZz
ZXQpKTsKICAgICAgICAgcHV0RGlyZWN0KHZtLCBvZmZzZXQsIHZhbHVlKTsKICAgICAgICAgLy8g
U2VlIGNvbW1lbnQgb24gc2V0TmV3UHJvcGVydHkgY2FsbCBiZWxvdy4KICAgICAgICAgaWYgKCFz
cGVjaWZpY0Z1bmN0aW9uKQogICAgICAgICAgICAgc2xvdC5zZXROZXdQcm9wZXJ0eSh0aGlzLCBv
ZmZzZXQpOwogICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRPbmx5KQotICAgICAgICAgICAg
c3RydWN0dXJlKCktPnNldENvbnRhaW5zUmVhZE9ubHlQcm9wZXJ0aWVzKCk7CisgICAgICAgICAg
ICB0aGlzLT5zdHJ1Y3R1cmUoKS0+c2V0Q29udGFpbnNSZWFkT25seVByb3BlcnRpZXMoKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0Owot
ICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNp
dHkoKTsKKyAgICBzaXplX3QgY3VycmVudENhcGFjaXR5ID0gdGhpcy0+c3RydWN0dXJlKCktPm91
dE9mTGluZUNhcGFjaXR5KCk7CiAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKHRoaXMtPnN0cnVj
dHVyZSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24sIG9mZnNl
dCkpIHsKICAgICAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgICAgICBCdXR0ZXJm
bHkqIG5ld0J1dHRlcmZseSA9IGJ1dHRlcmZseSgpOwpAQCAtMTM0OCw3ICsxMzYwLDcgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKAogCiAgICAgdW5zaWduZWQgY3Vy
cmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsKLSAg
ICBvZmZzZXQgPSBzdHJ1Y3R1cmUoKS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRy
aWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zmc2V0ID0gc3RydWN0dXJl
LT5nZXQodm0sIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZp
Y0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IGludmFsaWRPZmZzZXQpIHsKICAgICAgICAg
aWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzY5LDcgKzEzODEsNyBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYXNlICgyKSBEZXNwZWNpZnks
IGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVj
dHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUoKSwgcHJvcGVy
dHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUodm0sIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0IHRoZSBzbG90LCBkbyB0aGUgcHV0LCBy
ZXR1cm4uCkBAIC0xMzgxLDcgKzEzOTMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoCiAgICAgaWYgKChtb2RlID09IFB1dE1vZGVQdXQpICYmICFpc0V4dGVuc2li
bGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbih2bSwgdGhpcy0+c3RydWN0dXJlKCks
IHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbiwgb2Zmc2V0LCBzbG90
LmNvbnRleHQoKSk7CisgICAgc3RydWN0dXJlID0gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb24odm0sIHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1
bmN0aW9uLCBvZmZzZXQsIHNsb3QuY29udGV4dCgpKTsKICAgICAKICAgICB2YWxpZGF0ZU9mZnNl
dChvZmZzZXQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzVmFsaWRPZmZzZXQob2Zmc2V0KSk7
CkBAIC0xNDE1LDcgKzE0MjcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJl
QW5kUmVhCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0U3RydWN0dXJlQW5kUmVhbGxvY2F0ZVN0
b3JhZ2VJZk5lY2Vzc2FyeShWTSYgdm0sIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlKQogewogICAg
IHNldFN0cnVjdHVyZUFuZFJlYWxsb2NhdGVTdG9yYWdlSWZOZWNlc3NhcnkoCi0gICAgICAgIHZt
LCBzdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgbmV3U3RydWN0dXJlKTsKKyAgICAg
ICAgdm0sIHN0cnVjdHVyZSh2bSktPm91dE9mTGluZUNhcGFjaXR5KCksIG5ld1N0cnVjdHVyZSk7
CiB9CiAKIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkoVk0mIHZtLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHNsb3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pLCBpbmZvKCkpOworICAg
ICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CkBAIC03Niw2ICs3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgU3Ry
dWN0dXJlSXNJbW1vcnRhbDsKKwogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIEpTT2JqZWN0KiBv
YmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJveHkuY3BwCShyZXZpc2lv
biAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNTUgKzczLDU1IEBAIFN0cmluZyBKU1Byb3h5OjpjbGFzc05h
bWUoY29uc3QgSlNPYmplY3QKIGJvb2wgSlNQcm94eTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0dXJuIHRoaXNPYmplY3QtPnRhcmdldCgpLT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QtPnRh
cmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQogCiBib29sIEpTUHJveHk6Omdl
dE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU1By
b3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAgIHJldHVybiB0
aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlTbG90QnlJ
bmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICByZXR1cm4gdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5n
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpOwogfQogCiB2b2lkIEpTUHJveHk6OnB1dChKU0NlbGwqIGNlbGwsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwg
UHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNQcm94eSo+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJs
ZSgpLT5wdXQodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+cHV0KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBz
bG90KTsKIH0KIAogdm9pZCBKU1Byb3h5OjpwdXRCeUluZGV4KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hv
dWxkVGhyb3cpCiB7CiAgICAgSlNQcm94eSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Byb3h5Kj4o
Y2VsbCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5k
ZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNob3Vs
ZFRocm93KTsKKyAgICB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dEJ5SW5kZXgodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHNob3VsZFRocm93KTsKIH0KIAogYm9vbCBKU1Byb3h5OjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRU
aHJvdykKIHsKICAgICBKU1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmpl
Y3QpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lT3duUHJvcGVydHkodGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3Qt
PnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IsIHNob3VsZFRocm93KTsK
IH0KIAogYm9vbCBKU1Byb3h5OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Byb3h5KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihjZWxsKTsKLSAgICByZXR1cm4gdGhpc09iamVjdC0+
dGFyZ2V0KCktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRhcmdl
dCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQo
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QtPnRh
cmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWUpOwogfQogCiBib29sIEpTUHJveHk6OmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lKQogewogICAgIEpTUHJveHkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNQcm94eSo+
KGNlbGwpOwotICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0
eU5hbWUpOworICAgIHJldHVybiB0aGlzT2JqZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqZWN0LT50YXJnZXQoKSwgZXhl
YywgcHJvcGVydHlOYW1lKTsKIH0KIAogdm9pZCBKU1Byb3h5OjpnZXRQcm9wZXJ0eU5hbWVzKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTUHJveHkqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNQcm94eSo+KG9iamVjdCk7Ci0gICAgdGhpc09iamVjdC0+dGFyZ2V0KCkt
Pm1ldGhvZFRhYmxlKCktPmdldFByb3BlcnR5TmFtZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIHRoaXNPYmplY3QtPnRhcmdldCgpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+Z2V0UHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LT50YXJnZXQo
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIHZvaWQgSlNQcm94eTo6Z2V0T3du
UHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBK
U1Byb3h5KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTUHJveHkqPihvYmplY3QpOwotICAgIHRoaXNP
YmplY3QtPnRhcmdldCgpLT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QtPnRhcmdldCgpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICB0aGlzT2Jq
ZWN0LT50YXJnZXQoKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdC0+dGFyZ2V0KCksIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2VzcyhFeGVjU3QKIEpTT2JqZWN0KiBKU1Njb3Bl
OjpvYmplY3RBdFNjb3BlKEpTU2NvcGUqIHNjb3BlKQogewogICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBzY29wZTsKLSAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCkg
PT0gV2l0aFNjb3BlVHlwZSkKKyAgICBpZiAob2JqZWN0LT50eXBlKCkgPT0gV2l0aFNjb3BlVHlw
ZSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1dpdGhTY29wZSo+KG9iamVjdCktPm9iamVjdCgp
OwogCiAgICAgcmV0dXJuIG9iamVjdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90bywgVHlwZUluZm8oU3RyaW5nVHlwZSwgT3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0
aElzTm90WmVybyksIGluZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKFN0cmluZ1R5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZMZW5ndGgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNTdHJpbmcsIG1fbGVuZ3Ro
KTsgfQpAQCAtMTgxLDYgKzE4MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9OwogCiAg
ICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgU3RydWN0dXJlSXNJbW1vcnRh
bDsKKwogICAgICAgICBmcmllbmQgY2xhc3MgSlNWYWx1ZTsKICAgICAgICAgICAgIAogICAgICAg
ICBib29sIGlzUm9wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUuaXNOdWxsKCk7IH0KQEAgLTUy
Niw3ICs1MjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlubGluZSBib29sIGlzSlNTdHJpbmcoSlNWYWx1ZSB2KSB7IHJldHVybiB2Lmlz
Q2VsbCgpICYmIHYuYXNDZWxsKCktPmNsYXNzSW5mbygpID09IEpTU3RyaW5nOjppbmZvKCk7IH0K
KyAgICBpbmxpbmUgYm9vbCBpc0pTU3RyaW5nKEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwo
KSAmJiB2LmFzQ2VsbCgpLT50eXBlKCkgPT0gU3RyaW5nVHlwZTsgfQogCiAgICAgLy8gLS0tIEpT
VmFsdWUgaW5saW5lcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlLmgJKHJldmlzaW9uIDE2NDczOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEpTVHlwZSB7Citl
bnVtIEpTVHlwZSA6IHVpbnQ4X3QgewogICAgIFVuc3BlY2lmaWVkVHlwZSwKICAgICBVbmRlZmlu
ZWRUeXBlLAogICAgIEJvb2xlYW5UeXBlLApAQCAtNTUsNiArNTUsMTggQEAgZW51bSBKU1R5cGUg
ewogICAgIEVycm9ySW5zdGFuY2VUeXBlLAogICAgIFByb3h5VHlwZSwKICAgICBXaXRoU2NvcGVU
eXBlLAorICAgIEFyZ3VtZW50c1R5cGUsCisKKyAgICBJbnQ4QXJyYXlUeXBlLAorICAgIEludDE2
QXJyYXlUeXBlLAorICAgIEludDMyQXJyYXlUeXBlLAorICAgIFVpbnQ4QXJyYXlUeXBlLAorICAg
IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSwKKyAgICBVaW50MTZBcnJheVR5cGUsCisgICAgVWludDMy
QXJyYXlUeXBlLAorICAgIEZsb2F0MzJBcnJheVR5cGUsCisgICAgRmxvYXQ2NEFycmF5VHlwZSwK
KyAgICBEYXRhVmlld1R5cGUsCiAKICAgICBOYW1lU2NvcGVPYmplY3RUeXBlLAogICAgIC8vIFZh
cmlhYmxlT2JqZWN0VHlwZSBtdXN0IGJlIGxlc3MgdGhhbiBNT1NUIG9mIHRoZSB0eXBlcyBvZiBp
dHMgc3ViY2xhc3NlcyBhbmQgb25seSBpdHMgc3ViY2xhc3Nlcy4KQEAgLTY0LDYgKzc2LDggQEAg
ZW51bSBKU1R5cGUgewogICAgIEFjdGl2YXRpb25PYmplY3RUeXBlLAogfTsKIAorQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKEpTVHlwZSkgPT0gc2l6ZW9mKHVpbnQ4X3QpLCBzaXplb2ZfanN0eXBlX2lz
X29uZV9ieXRlKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTY0NzM4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCwyMSArNDQsMzEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCA9IDEgPDwgNTsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVu
V2hlbkxlbmd0aElzTm90WmVybyA9IDEgPDwgNjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiA9IDEgPDwgNzsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzID0gMSA8PCA4OwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcgPSAxIDw8IDk7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIEhhc0ltcHVyZUdldE93blByb3BlcnR5U2xvdCA9IDEgPDwgMTA7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50
cyA9IDEgPDwgMTE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUhhc1JhcmVE
YXRhID0gMSA8PCAxMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlSXNJbW1v
cnRhbCA9IDEgPDwgMTM7CiAKICAgICBjbGFzcyBUeXBlSW5mbyB7CiAgICAgcHVibGljOgorICAg
ICAgICB0eXBlZGVmIHVpbnQ4X3QgSW5saW5lVHlwZUZsYWdzOworICAgICAgICB0eXBlZGVmIHVp
bnQ4X3QgT3V0T2ZMaW5lVHlwZUZsYWdzOworCiAgICAgICAgIFR5cGVJbmZvKEpTVHlwZSB0eXBl
LCB1bnNpZ25lZCBmbGFncyA9IDApCisgICAgICAgICAgICA6IFR5cGVJbmZvKHR5cGUsIGZsYWdz
ICYgMHhmZiwgZmxhZ3MgPj4gOCkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBUeXBlSW5mbyhKU1R5cGUgdHlwZSwgSW5saW5lVHlwZUZsYWdzIGlubGluZVR5cGVGbGFn
cywgT3V0T2ZMaW5lVHlwZUZsYWdzIG91dE9mTGluZVR5cGVGbGFncykKICAgICAgICAgICAgIDog
bV90eXBlKHR5cGUpCi0gICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgJiAweGZmKQotICAgICAg
ICAgICAgLCBtX2ZsYWdzMihmbGFncyA+PiA4KQorICAgICAgICAgICAgLCBtX2ZsYWdzKGlubGlu
ZVR5cGVGbGFncykKKyAgICAgICAgICAgICwgbV9mbGFnczIob3V0T2ZMaW5lVHlwZUZsYWdzKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSA8PSAw
eGZmKTsKLSAgICAgICAgICAgIEFTU0VSVCh0eXBlID49IENvbXBvdW5kVHlwZSB8fCAhKGZsYWdz
ICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikpOworICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA+
PSBDb21wb3VuZFR5cGUgfHwgIShtX2ZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbikpOwog
ICAgICAgICAgICAgLy8gTm8gb2JqZWN0IHRoYXQgZG9lc24ndCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2Ugc2hvdWxkIG92ZXJyaWRlIGl0IQogICAgICAgICAgICAgQVNTRVJUKChtX2ZsYWdzICYgKElt
cGxlbWVudHNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc0hhc0luc3RhbmNlKSkgIT0gT3ZlcnJpZGVz
SGFzSW5zdGFuY2UpOwogICAgICAgICAgICAgLy8gSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSBtZWFucyAoSW1wbGVtZW50c0hhc0luc3RhbmNlICYgIU92ZXJyaWRlc0hhc0luc3RhbmNlKQpA
QCAtNjcsNyArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIEpT
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNUeXBlPihtX3R5cGUpOyB9
Ci0gICAgICAgIGJvb2wgaXNPYmplY3QoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPj0gT2JqZWN0
VHlwZTsgfQorICAgICAgICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gaXNPYmplY3Qo
dHlwZSgpKTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBpc09iamVjdChKU1R5cGUgdHlwZSkgeyBy
ZXR1cm4gdHlwZSA+PSBPYmplY3RUeXBlOyB9CiAgICAgICAgIGJvb2wgaXNGaW5hbE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGU7IH0KICAgICAgICAgYm9v
bCBpc051bWJlck9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBOdW1iZXJPYmplY3RU
eXBlOyB9CiAgICAgICAgIGJvb2wgaXNOYW1lKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IE5h
bWVJbnN0YW5jZVR5cGU7IH0KQEAgLTg2LDYgKzk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgaGFzSW1wdXJlR2V0T3duUHJvcGVydHlTbG90KCkgY29uc3QgeyByZXR1cm4gaXNT
ZXRPbkZsYWdzMihIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QpOyB9CiAgICAgICAgIGJvb2wg
bmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzKCkgY29uc3QgeyByZXR1cm4gaXNTZXRP
bkZsYWdzMihOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2ludHMpOyB9CiAgICAgICAgIGJv
b2wgc3RydWN0dXJlSGFzUmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0
cnVjdHVyZUhhc1JhcmVEYXRhKTsgfQorICAgICAgICBib29sIHN0cnVjdHVyZUlzSW1tb3J0YWwo
KSBjb25zdCB7IHJldHVybiBpc1NldE9uRmxhZ3MyKFN0cnVjdHVyZUlzSW1tb3J0YWwpOyB9CiAK
ICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBmbGFnc09mZnNldCgpCiAgICAgICAgIHsKQEAgLTk3
LDYgKzEwOSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihUeXBlSW5mbywgbV90eXBlKTsKICAgICAgICAgfQogCisgICAgICAgIElubGluZVR5
cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisgICAg
ICAgIE91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzMjsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXBEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTWFwRGF0YS5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50MzJfdD4gSW5kZXhUcmFpdHM7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlcXVlc3RlZCBwcm9wZXJ0eSBuYW1l
cyBvZiBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIG9iamVjdC4iKSkpOwogICAgIFByb3BlcnR5TmFt
ZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkp
LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFzT2JqZWN0KGV4ZWMtPmFyZ3Vt
ZW50KDApKSwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7Cisg
ICAgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIEpTQXJyYXkqIG5hbWVz
ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJv
cGVydGllczsgaSsrKQpAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3QKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVxdWVzdGVkIGtleXMgb2YgYSB2YWx1ZSB0aGF0IGlzIG5vdCBhbiBv
YmplY3QuIikpKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAg
IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVy
dHlOYW1lcyhhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGV4ZWMsIHByb3BlcnRpZXMsIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMoYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMCkpLCBleGVjLCBwcm9wZXJ0aWVzLCBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzKTsKICAgICBKU0FycmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAw
KTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQpAQCAtMzI0LDE0ICszMjQs
MTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKICAgICBBU1NFUlQoKGRlc2NyaXB0b3Iu
YXR0cmlidXRlcygpICYgQWNjZXNzb3IpIHx8ICghZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3Jp
cHRvcigpKSk7CiAgICAgQVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7Ci0gICAgTy0+bWV0
aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBw
cm9wZXJ0eU5hbWUpLCBkZXNjcmlwdG9yLCB0cnVlKTsKKyAgICBPLT5tZXRob2RUYWJsZShleGVj
LT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkoTywgZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9w
ZXJ0eU5hbWUpLCBkZXNjcmlwdG9yLCB0cnVlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KE8pOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHByb3BlcnRpZXMpCiB7CiAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgcHJvcGVydHlOYW1lcyhleGVjKTsKLSAgICBhc09iamVjdChwcm9wZXJ0aWVz
KS0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhhc09iamVjdChwcm9wZXJ0aWVz
KSwgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAg
YXNPYmplY3QocHJvcGVydGllcyktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9w
ZXJ0eU5hbWVzKGFzT2JqZWN0KHByb3BlcnRpZXMpLCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3Bl
cnR5TmFtZXMuc2l6ZSgpOwogICAgIFZlY3RvcjxQcm9wZXJ0eURlc2NyaXB0b3I+IGRlc2NyaXB0
b3JzOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG1hcmtCdWZmZXI7CkBAIC0zNTQsNyArMzU0
LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdAogICAgICAgICB9
CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKSB7
Ci0gICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0
LCBleGVjLCBwcm9wZXJ0eU5hbWVzW2ldLCBkZXNjcmlwdG9yc1tpXSwgdHJ1ZSk7CisgICAgICAg
IG9iamVjdC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmRlZmluZU93blByb3BlcnR5KG9iamVj
dCwgZXhlYywgcHJvcGVydHlOYW1lc1tpXSwgZGVzY3JpcHRvcnNbaV0sIHRydWUpOwogICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7
CiAgICAgfQpAQCAtMzk4LDcgKzM5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3QKIAogICAgIC8vIDIuIEZvciBlYWNoIG5hbWVkIG93biBwcm9wZXJ0eSBuYW1l
IFAgb2YgTywKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMpOwotICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHBy
b3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOworICAgIG9iamVjdC0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0aWVzLCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKICAgICBQcm9wZXJ0eU5hbWVBcnJh
eTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKICAgICBmb3IgKFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1
bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBP
IHdpdGggUC4KQEAgLTQwOCw3ICs0MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG9iamVjdENvbnN0CiAgICAgICAgIC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0
cnVlLCBzZXQgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIHRvIGZhbHNlLgogICAgICAgICBkZXNjLnNl
dENvbmZpZ3VyYWJsZShmYWxzZSk7CiAgICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3du
UHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFz
IGFyZ3VtZW50cy4KLSAgICAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWZpbmVPd25Qcm9w
ZXJ0eShvYmplY3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCAq
aXRlciwgZGVzYywgdHJ1ZSk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CkBAIC00MjgsMTQg
KzQyOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiT2JqZWN0LmZyZWV6ZSBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSkp
OwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChvYmopOwogCi0gICAgaWYgKGlzSlNG
aW5hbE9iamVjdChvYmplY3QpICYmICFoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPnN0cnVj
dHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpIHsKKyAgICBpZiAoaXNKU0ZpbmFsT2JqZWN0KG9iamVj
dCkgJiYgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkpKSB7CiAg
ICAgICAgIG9iamVjdC0+ZnJlZXplKGV4ZWMtPnZtKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKG9iaik7CiAgICAgfQogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHBy
b3BlcnR5IG5hbWUgUCBvZiBPLAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
Yyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydGllcywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3Qs
IGV4ZWMsIHByb3BlcnRpZXMsIEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAg
IGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVz
LmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2Mg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwg
bWV0aG9kIG9mIE8gd2l0aCBQLgpAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3QKICAgICAgICAgLy8gYy4gSWYgZGVzYy5bW0NvbmZpZ3Vy
YWJsZV1dIGlzIHRydWUsIHNldCBkZXNjLltbQ29uZmlndXJhYmxlXV0gdG8gZmFsc2UuCiAgICAg
ICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGZhbHNlKTsKICAgICAgICAgLy8gZC4gQ2FsbCB0aGUg
W1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUCwgZGVzYywg
YW5kIHRydWUgYXMgYXJndW1lbnRzLgotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmRl
ZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgKml0ZXIsIGRlc2MsIHRydWUpOworICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eShvYmpl
Y3QsIGV4ZWMsICppdGVyLCBkZXNjLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogICAgIH0K
QEAgLTQ4Myw3ICs0ODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0CiAKICAgICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8s
CiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjKTsKLSAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVz
LCBJbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKTsKKyAgICBvYmplY3QtPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywg
SW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CiAgICAgUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IHByb3BlcnRpZXMuZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHByb3BlcnRpZXMuYmVnaW4oKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgewogICAgICAgICAvLyBhLiBMZXQgZGVzYyBiZSB0aGUgcmVzdWx0IG9mIGNh
bGxpbmcgdGhlIFtbR2V0T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2Qgb2YgTyB3aXRoIFAu
CkBAIC01MTMsNyArNTEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdAogCiAgICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUgUCBvZiBP
LAogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYyk7Ci0gICAgb2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGll
cywgSW5jbHVkZURvbnRFbnVtUHJvcGVydGllcyk7CisgICAgb2JqZWN0LT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlOYW1lcyhvYmplY3QsIGV4ZWMsIHByb3BlcnRpZXMs
IEluY2x1ZGVEb250RW51bVByb3BlcnRpZXMpOwogICAgIFByb3BlcnR5TmFtZUFycmF5Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlOYW1l
QXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpIHsKICAgICAgICAgLy8gYS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBj
YWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQ
LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIGRlc2NyaXB0
b3Iuc2V0R2V0dGVyKGdldCk7CiAgICAgZGVzY3JpcHRvci5zZXRFbnVtZXJhYmxlKHRydWUpOwog
ICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUpOwotICAgIHRoaXNPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZp
ZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwg
ZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKGV4ZWMtPnZt
KCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSksIGRlc2NyaXB0
b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC0xNDMsNyArMTQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RQcm90bwogICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKHNldCk7CiAgICAgZGVzY3JpcHRvci5z
ZXRFbnVtZXJhYmxlKHRydWUpOwogICAgIGRlc2NyaXB0b3Iuc2V0Q29uZmlndXJhYmxlKHRydWUp
OwotICAgIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlZmluZU93blByb3BlcnR5KHRoaXNP
YmplY3QsIGV4ZWMsIElkZW50aWZpZXIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSwgZGVzY3JpcHRvciwgZmFsc2UpOworICAgIHRoaXNPYmplY3Qt
Pm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSksIGRlc2NyaXB0b3IsIGZhbHNlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0yMTQsMTQgKzIxNCwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIFN0cmluZyh0aGlzVmFsdWUuaXNVbmRlZmlu
ZWQoKSA/IEFTQ0lJTGl0ZXJhbCgiW29iamVjdCBVbmRlZmluZWRdIikgOiBBU0NJSUxpdGVyYWwo
IltvYmplY3QgTnVsbF0iKSkpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1
ZS50b09iamVjdChleGVjKTsKIAotICAgIEpTU3RyaW5nKiByZXN1bHQgPSB0aGlzT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOworICAgIEpTU3RyaW5nKiByZXN1bHQg
PSB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoZXhlYy0+dm0oKSktPm9iamVjdFRvU3RyaW5nVmFsdWUo
KTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3Ry
aW5nID0gV1RGOjp0cnlNYWtlU3RyaW5nKCJbb2JqZWN0ICIsIHRoaXNPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KSwgIl0iKTsKKyAgICAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld1N0cmluZyA9IFdURjo6dHJ5TWFrZVN0cmluZygiW29iamVjdCAiLCB0aGlzT2Jq
ZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Y2xhc3NOYW1lKHRoaXNPYmplY3QpLCAiXSIp
OwogICAgICAgICBpZiAoIW5ld1N0cmluZykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKIAogICAgICAgICByZXN1bHQgPSBq
c05vbnRyaXZpYWxTdHJpbmcoZXhlYywgbmV3U3RyaW5nLnJlbGVhc2UoKSk7Ci0gICAgICAgIHRo
aXNPYmplY3QtPnN0cnVjdHVyZSgpLT5zZXRPYmplY3RUb1N0cmluZ1ZhbHVlKGV4ZWMtPnZtKCks
IHRoaXNPYmplY3QsIHJlc3VsdCk7CisgICAgICAgIHRoaXNPYmplY3QtPnN0cnVjdHVyZShleGVj
LT52bSgpKS0+c2V0T2JqZWN0VG9TdHJpbmdWYWx1ZShleGVjLT52bSgpLCB0aGlzT2JqZWN0LCBy
ZXN1bHQpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDExICs2OCwxMSBAQCBKU1ZhbHVlIGpzVHlwZVN0
cmluZ0ZvclZhbHVlKFZNJiB2bSwgSlNHCiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewogICAgICAg
ICAvLyBSZXR1cm4gInVuZGVmaW5lZCIgZm9yIG9iamVjdHMgdGhhdCBzaG91bGQgYmUgdHJlYXRl
ZAogICAgICAgICAvLyBhcyBudWxsIHdoZW4gZG9pbmcgY29tcGFyaXNvbnMuCi0gICAgICAgIGlm
IChhc09iamVjdCh2KS0+c3RydWN0dXJlKCktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZ2xvYmFs
T2JqZWN0KSkKKyAgICAgICAgaWYgKGFzT2JqZWN0KHYpLT5zdHJ1Y3R1cmUodm0pLT5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKGdsb2JhbE9iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21h
bGxTdHJpbmdzLnVuZGVmaW5lZFN0cmluZygpOwogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwotICAgICAgICBpZiAob2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxs
VHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0Q2FsbERh
dGEob2JqZWN0LCBjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJu
IHZtLnNtYWxsU3RyaW5ncy5mdW5jdGlvblN0cmluZygpOwogICAgIH0KICAgICByZXR1cm4gdm0u
c21hbGxTdHJpbmdzLm9iamVjdFN0cmluZygpOwpAQCAtODgsMTUgKzg4LDE1IEBAIGJvb2wganNJ
c09iamVjdFR5cGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUKICAgICBpZiAoIXYuaXNDZWxsKCkpCiAg
ICAgICAgIHJldHVybiB2LmlzTnVsbCgpOwogCi0gICAgSlNUeXBlIHR5cGUgPSB2LmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS50eXBlKCk7CisgICAgSlNUeXBlIHR5cGUgPSB2LmFz
Q2VsbCgpLT50eXBlKCk7CiAgICAgaWYgKHR5cGUgPT0gU3RyaW5nVHlwZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICh0eXBlID49IE9iamVjdFR5cGUpIHsKLSAgICAgICAgaWYgKGFz
T2JqZWN0KHYpLT5zdHJ1Y3R1cmUoKS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChjYWxsRnJhbWUt
PmxleGljYWxHbG9iYWxPYmplY3QoKSkpCisgICAgICAgIGlmIChhc09iamVjdCh2KS0+c3RydWN0
dXJlKGNhbGxGcmFtZS0+dm0oKSktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoY2FsbEZyYW1lLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KHYpOwotICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmpl
Y3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCisgICAgICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKGNhbGxGcmFtZS0+dm0oKSktPmdldENhbGxEYXRhKG9iamVjdCwgY2FsbERhdGEpICE9
IENhbGxUeXBlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAxNjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2ICsyMDQsNyBAQCBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUganNBZGQoQ2FsbEZyYW1lKiBjCiAKIGlubGluZSBzaXplX3Qgbm9ybWFsaXpl
UHJvdG90eXBlQ2hhaW5Gb3JDaGFpbkFjY2VzcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSBiYXNlLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5T2Zmc2V0JiBzbG90T2Zmc2V0KQogeworICAgIFZNJiB2bSA9IGNhbGxGcmFtZS0+
dm0oKTsKICAgICBKU0NlbGwqIGNlbGwgPSBiYXNlLmFzQ2VsbCgpOwogICAgIHNpemVfdCBjb3Vu
dCA9IDA7CiAgICAgICAgIApAQCAtMjMwLDEwICsyMzEsMTAgQEAgaW5saW5lIHNpemVfdCBub3Jt
YWxpemVQcm90b3R5cGVDaGFpbkZvcgogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2lu
ZyBhIHByb3RvdHlwZSBpbiBhIGxvb3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAg
IC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChj
ZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgaWYgKGNlbGwtPnN0
cnVjdHVyZSh2bSktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBhc09iamVjdChjZWxs
KS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT52bSgpKTsKICAgICAgICAgICAg
IGlmIChzbG90QmFzZSA9PSBjZWxsKQotICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBjZWxs
LT5zdHJ1Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+dm0oKSwgcHJvcGVydHlOYW1lKTsgCisgICAg
ICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSh2bSktPmdldChjYWxsRnJh
bWUtPnZtKCksIHByb3BlcnR5TmFtZSk7IAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgKytjb3VudDsKQEAgLTI0NCwxMiArMjQ1LDEzIEBAIGlubGluZSBzaXplX3Qgbm9ybWFsaXpl
UHJvdG90eXBlQ2hhaW5Gb3IKIAogaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFp
bihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNDZWxsKiBiYXNlKQogeworICAgIFZNJiB2bSA9IGNh
bGxGcmFtZS0+dm0oKTsKICAgICBzaXplX3QgY291bnQgPSAwOwogICAgIHdoaWxlICgxKSB7CiAg
ICAgICAgIGlmIChiYXNlLT5pc1Byb3h5KCkpCiAgICAgICAgICAgICByZXR1cm4gSW52YWxpZFBy
b3RvdHlwZUNoYWluOwogICAgICAgICAgICAgCi0gICAgICAgIEpTVmFsdWUgdiA9IGJhc2UtPnN0
cnVjdHVyZSgpLT5wcm90b3R5cGVGb3JMb29rdXAoY2FsbEZyYW1lKTsKKyAgICAgICAgSlNWYWx1
ZSB2ID0gYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvdG90eXBlRm9yTG9va3VwKGNhbGxGcmFtZSk7
CiAgICAgICAgIGlmICh2LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwogCkBA
IC0yNTcsNyArMjU5LDcgQEAgaW5saW5lIHNpemVfdCBub3JtYWxpemVQcm90b3R5cGVDaGFpbihD
YQogCiAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIGFjY2Vzc2luZyBhIHByb3RvdHlwZSBpbiBhIGxv
b3AsIGl0J3MgYSBnb29kIGJldCB0aGF0IGl0CiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJl
YXRlZCBhcyBhIGRpY3Rpb25hcnkuCi0gICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUoKS0+aXNE
aWN0aW9uYXJ5KCkpCisgICAgICAgIGlmIChiYXNlLT5zdHJ1Y3R1cmUodm0pLT5pc0RpY3Rpb25h
cnkoKSkKICAgICAgICAgICAgIGFzT2JqZWN0KGJhc2UpLT5mbGF0dGVuRGljdGlvbmFyeU9iamVj
dChjYWxsRnJhbWUtPnZtKCkpOwogCiAgICAgICAgICsrY291bnQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgJKHJl
dmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TWFwSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKENvbXBvdW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKQEAgLTIwMiw2ICsyMDIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5
KCk7CiAjZW5kaWYKIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFs
OworCiBwcml2YXRlOgogICAgIFByb3BlcnR5VGFibGUoVk0mLCB1bnNpZ25lZCBpbml0aWFsQ2Fw
YWNpdHkpOwogICAgIFByb3BlcnR5VGFibGUoVk0mLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRh
YmxlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNp
b24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKExlYWZUeXBlLCAwKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKExlYWZUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IERFQ0xBUkVfSU5GTzsKQEAgLTg1LDYgKzg1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3Ry
aW5nKTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworCiAgICAgICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCShyZXZpc2lvbiAx
NjQ3MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVl
TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNDZWxsOjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuIHwgU3RydWN0dXJlSXNJbW1vcnRhbCB8IEpTQ2VsbDo6U3RydWN0
dXJlRmxhZ3M7CiAKIHB1YmxpYzoKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNjQ3
MzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsMTMgKzE1NywxMyBAQCB2b2lkIFN0cnVjdHVyZTo6ZHVtcFN0YXRp
c3RpY3MoKQogCiBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8s
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlLCB1
bnNpZ25lZCBpbmxpbmVDYXBhY2l0eSkKICAgICA6IEpTQ2VsbCh2bSwgdm0uc3RydWN0dXJlU3Ry
dWN0dXJlLmdldCgpKQorICAgICwgbV9ibG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFs
bG9jYXRlSUQodGhpcyksIGluZGV4aW5nVHlwZSwgdHlwZUluZm8pCisgICAgLCBtX291dE9mTGlu
ZVR5cGVGbGFncyh0eXBlSW5mby5vdXRPZkxpbmVUeXBlRmxhZ3MoKSkKICAgICAsIG1fZ2xvYmFs
T2JqZWN0KHZtLCB0aGlzLCBnbG9iYWxPYmplY3QsIFdyaXRlQmFycmllcjxKU0dsb2JhbE9iamVj
dD46Ok1heUJlTnVsbCkKICAgICAsIG1fcHJvdG90eXBlKHZtLCB0aGlzLCBwcm90b3R5cGUpCiAg
ICAgLCBtX2NsYXNzSW5mbyhjbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50
U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5
cGVJbmZvKHR5cGVJbmZvKQotICAgICwgbV9pbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKQogICAg
ICwgbV9pbmxpbmVDYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkKICAgICAsIG1fZGljdGlvbmFyeUtp
bmQoTm9uZURpY3Rpb25hcnlLaW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFs
c2UpCkBAIC0xOTEsOCArMTkxLDYgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAg
ICwgbV9jbGFzc0luZm8oaW5mbygpKQogICAgICwgbV90cmFuc2l0aW9uV2F0Y2hwb2ludFNldChJ
c1dhdGNoZWQpCiAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQotICAgICwgbV90eXBlSW5m
byhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4pCi0gICAgLCBtX2luZGV4aW5n
VHlwZSgwKQogICAgICwgbV9pbmxpbmVDYXBhY2l0eSgwKQogICAgICwgbV9kaWN0aW9uYXJ5S2lu
ZChOb25lRGljdGlvbmFyeUtpbmQpCiAgICAgLCBtX2lzUGlubmVkUHJvcGVydHlUYWJsZShmYWxz
ZSkKQEAgLTIwNSw2ICsyMDMsMTAgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtKQogICAg
ICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogICAgICwgbV9zdGF0aWNGdW5jdGlvblJlaWZpZWQo
ZmFsc2UpCiB7CisgICAgVHlwZUluZm8gdHlwZUluZm8gPSBUeXBlSW5mbyhDb21wb3VuZFR5cGUs
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsKTsKKyAgICBtX2Js
b2IgPSBTdHJ1Y3R1cmVJREJsb2Iodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJ
RCh0aGlzKSwgMCwgdHlwZUluZm8pOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gdHlwZUlu
Zm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CisKICAgICBBU1NFUlQoaGFzUmVhZE9ubHlPckdldHRl
clNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8ICFtX2NsYXNzSW5mby0+aGFzU3Rh
dGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXModm0pKTsKICAgICBBU1NFUlQoaGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcygpIHx8ICFtX2NsYXNzSW5mby0+aGFzU3RhdGljU2V0dGVyT3JSZWFk
b25seVByb3BlcnRpZXModm0pKTsKIH0KQEAgLTIxNSw4ICsyMTcsNiBAQCBTdHJ1Y3R1cmU6OlN0
cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVjCiAgICAgLCBtX2NsYXNzSW5mbyhwcmV2aW91cy0+
bV9jbGFzc0luZm8pCiAgICAgLCBtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkK
ICAgICAsIG1fb2Zmc2V0KGludmFsaWRPZmZzZXQpCi0gICAgLCBtX3R5cGVJbmZvKHByZXZpb3Vz
LT50eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMtPnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1
Y3R1cmVIYXNSYXJlRGF0YSkKLSAgICAsIG1faW5kZXhpbmdUeXBlKHByZXZpb3VzLT5pbmRleGlu
Z1R5cGVJbmNsdWRpbmdIaXN0b3J5KCkpCiAgICAgLCBtX2lubGluZUNhcGFjaXR5KHByZXZpb3Vz
LT5tX2lubGluZUNhcGFjaXR5KQogICAgICwgbV9kaWN0aW9uYXJ5S2luZChwcmV2aW91cy0+bV9k
aWN0aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQpAQCAt
MjI5LDYgKzIyOSwxMSBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIGNvbnN0IFN0cnVj
CiAgICAgLCBtX2RpZFRyYW5zaXRpb24odHJ1ZSkKICAgICAsIG1fc3RhdGljRnVuY3Rpb25SZWlm
aWVkKHByZXZpb3VzLT5tX3N0YXRpY0Z1bmN0aW9uUmVpZmllZCkKIHsKKyAgICBUeXBlSW5mbyB0
eXBlSW5mbyA9IFR5cGVJbmZvKHByZXZpb3VzLT50eXBlSW5mbygpLnR5cGUoKSwgcHJldmlvdXMt
PnR5cGVJbmZvKCkuZmxhZ3MoKSAmIH5TdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7CisgICAgbV9ibG9i
ID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFsbG9jYXRlSUQo
dGhpcyksIHByZXZpb3VzLT5pbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5KCksIHR5cGVJbmZv
KTsKKyAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IHR5cGVJbmZvLm91dE9mTGluZVR5cGVGbGFn
cygpOworCisgICAgQVNTRVJUKCFwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVJc0ltbW9y
dGFsKCkpOwogICAgIGlmIChwcmV2aW91cy0+dHlwZUluZm8oKS5zdHJ1Y3R1cmVIYXNSYXJlRGF0
YSgpICYmIHByZXZpb3VzLT5yYXJlRGF0YSgpLT5uZWVkc0Nsb25pbmcoKSkKICAgICAgICAgY2xv
bmVSYXJlRGF0YUZyb20odm0sIHByZXZpb3VzKTsKICAgICBlbHNlIGlmIChwcmV2aW91cy0+cHJl
dmlvdXNJRCgpKQpAQCAtMjQxLDYgKzI0NiwxMyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYg
dm0sIGNvbnN0IFN0cnVjCiAgICAgQVNTRVJUKGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB8
fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9wZXJ0aWVzKHZtKSk7
CiB9CiAKK1N0cnVjdHVyZTo6flN0cnVjdHVyZSgpCit7CisgICAgaWYgKHR5cGVJbmZvKCkuc3Ry
dWN0dXJlSXNJbW1vcnRhbCgpKQorICAgICAgICByZXR1cm47CisgICAgSGVhcDo6aGVhcCh0aGlz
KS0+c3RydWN0dXJlSURUYWJsZSgpLmRlYWxsb2NhdGVJRCh0aGlzLCBtX2Jsb2Iuc3RydWN0dXJl
SUQoKSk7Cit9CisKIHZvaWQgU3RydWN0dXJlOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsKICAg
ICBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihjZWxsKS0+U3RydWN0dXJlOjp+U3RydWN0dXJlKCk7
CkBAIC02MzgsNyArNjUwLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJh
bnNpdAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZSh2bSwgc3RydWN0dXJlKTsK
ICAgICB0cmFuc2l0aW9uLT5zZXRQcmV2aW91c0lEKHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUp
OwogICAgIHRyYW5zaXRpb24tPm1fYXR0cmlidXRlc0luUHJldmlvdXMgPSBhdHRyaWJ1dGVzOwot
ICAgIHRyYW5zaXRpb24tPm1faW5kZXhpbmdUeXBlID0gaW5kZXhpbmdUeXBlOworICAgIHRyYW5z
aXRpb24tPm1fYmxvYi5zZXRJbmRleGluZ1R5cGUoaW5kZXhpbmdUeXBlKTsKICAgICB0cmFuc2l0
aW9uLT5wcm9wZXJ0eVRhYmxlKCkuc2V0KHZtLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPnRha2VQ
cm9wZXJ0eVRhYmxlT3JDbG9uZUlmUGlubmVkKHZtLCB0cmFuc2l0aW9uKSk7CiAgICAgdHJhbnNp
dGlvbi0+bV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPm1fb2Zmc2V0OwogICAgIGNoZWNrT2Zmc2V0KHRy
YW5zaXRpb24tPm1fb2Zmc2V0LCB0cmFuc2l0aW9uLT5pbmxpbmVDYXBhY2l0eSgpKTsKQEAgLTc2
OSwxNiArNzgxLDIyIEBAIHZvaWQgU3RydWN0dXJlOjphbGxvY2F0ZVJhcmVEYXRhKFZNJiB2bSkK
IHsKICAgICBBU1NFUlQoIXR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFyZURhdGEoKSk7CiAgICAg
U3RydWN0dXJlUmFyZURhdGEqIHJhcmVEYXRhID0gU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZSh2
bSwgcHJldmlvdXMoKSk7Ci0gICAgbV90eXBlSW5mbyA9IFR5cGVJbmZvKHR5cGVJbmZvKCkudHlw
ZSgpLCB0eXBlSW5mbygpLmZsYWdzKCkgfCBTdHJ1Y3R1cmVIYXNSYXJlRGF0YSk7CisgICAgVHlw
ZUluZm8gb2xkVHlwZUluZm8gPSB0eXBlSW5mbygpOworICAgIFR5cGVJbmZvIG5ld1R5cGVJbmZv
ID0gVHlwZUluZm8ob2xkVHlwZUluZm8udHlwZSgpLCBvbGRUeXBlSW5mby5mbGFncygpIHwgU3Ry
dWN0dXJlSGFzUmFyZURhdGEpOworICAgIG1fb3V0T2ZMaW5lVHlwZUZsYWdzID0gbmV3VHlwZUlu
Zm8ub3V0T2ZMaW5lVHlwZUZsYWdzKCk7CiAgICAgbV9wcmV2aW91c09yUmFyZURhdGEuc2V0KHZt
LCB0aGlzLCByYXJlRGF0YSk7CisgICAgQVNTRVJUKHR5cGVJbmZvKCkuc3RydWN0dXJlSGFzUmFy
ZURhdGEoKSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlOjpjbG9uZVJhcmVEYXRhRnJvbShWTSYgdm0s
IGNvbnN0IFN0cnVjdHVyZSogb3RoZXIpCiB7CiAgICAgQVNTRVJUKG90aGVyLT50eXBlSW5mbygp
LnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkpOwogICAgIFN0cnVjdHVyZVJhcmVEYXRhKiBuZXdSYXJl
RGF0YSA9IFN0cnVjdHVyZVJhcmVEYXRhOjpjbG9uZSh2bSwgb3RoZXItPnJhcmVEYXRhKCkpOwot
ICAgIG1fdHlwZUluZm8gPSBUeXBlSW5mbyh0eXBlSW5mbygpLnR5cGUoKSwgdHlwZUluZm8oKS5m
bGFncygpIHwgU3RydWN0dXJlSGFzUmFyZURhdGEpOworICAgIFR5cGVJbmZvIG9sZFR5cGVJbmZv
ID0gdHlwZUluZm8oKTsKKyAgICBUeXBlSW5mbyBuZXdUeXBlSW5mbyA9IFR5cGVJbmZvKG9sZFR5
cGVJbmZvLnR5cGUoKSwgb2xkVHlwZUluZm8uZmxhZ3MoKSB8IFN0cnVjdHVyZUhhc1JhcmVEYXRh
KTsKKyAgICBtX291dE9mTGluZVR5cGVGbGFncyA9IG5ld1R5cGVJbmZvLm91dE9mTGluZVR5cGVG
bGFncygpOwogICAgIG1fcHJldmlvdXNPclJhcmVEYXRhLnNldCh2bSwgdGhpcywgbmV3UmFyZURh
dGEpOworICAgIEFTU0VSVCh0eXBlSW5mbygpLnN0cnVjdHVyZUhhc1JhcmVEYXRhKCkpOwogfQog
CiAjaWYgRFVNUF9QUk9QRVJUWU1BUF9TVEFUUwpAQCAtMTAxOSw3ICsxMDM3LDcgQEAgYm9vbCBT
dHJ1Y3R1cmU6OnByb3RvdHlwZUNoYWluTWF5SW50ZXJjZQogICAgICAgICBpZiAocHJvdG90eXBl
LmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAg
Y3VycmVudCA9IHByb3RvdHlwZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7CisgICAgICAgIGN1cnJl
bnQgPSBwcm90b3R5cGUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIAogICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5o
IgogI2luY2x1ZGUgIlByb3RlY3QuaCIKICNpbmNsdWRlICJQdXRQcm9wZXJ0eVNsb3QuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVJREJsb2IuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVSYXJlRGF0YS5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIgogI2luY2x1ZGUgIkpTVHlw
ZUluZm8uaCIKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNv
bnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKiwgSW5kZXhpbmdUeXBlID0gTm9uQXJyYXks
IHVuc2lnbmVkIGlubGluZUNhcGFjaXR5ID0gMCk7CiAKKyAgICB+U3RydWN0dXJlKCk7CisKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICB7CkBAIC05Niw2
ICs5OSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBwdWJsaWM6CisgICAgU3RydWN0dXJlSUQg
aWQoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Iuc3RydWN0dXJlSUQoKTsgfQorICAgIGludDMyX3Qg
b2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkgY29uc3QgeyByZXR1cm4gbV9ibG9iLmJsb2JFeGNs
dWRpbmdTdHJ1Y3R1cmVJRCgpOyB9CisgICAgaW50NjRfdCBpZEJsb2IoKSBjb25zdCB7IHJldHVy
biBtX2Jsb2IuYmxvYigpOyB9CisKICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFN0cnVjdHVyZSogYWRkUHJvcGVydHlUcmFu
c2l0aW9uKFZNJiwgU3RydWN0dXJlKiwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIFByb3BlcnR5T2Zmc2V0JiwgUHV0UHJvcGVydHlTbG90
OjpDb250ZXh0ID0gUHV0UHJvcGVydHlTbG90OjpVbmtub3duQ29udGV4dCk7CkBAIC0xNDQsMTEg
KzE1MSwxMSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gVHlwZSBhY2Nlc3NvcnMuCi0gICAg
Y29uc3QgVHlwZUluZm8mIHR5cGVJbmZvKCkgY29uc3QgeyBBU1NFUlQoc3RydWN0dXJlKCktPmNs
YXNzSW5mbygpID09IGluZm8oKSk7IHJldHVybiBtX3R5cGVJbmZvOyB9CisgICAgVHlwZUluZm8g
dHlwZUluZm8oKSBjb25zdCB7IEFTU0VSVChzdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gaW5m
bygpKTsgcmV0dXJuIG1fYmxvYi50eXBlSW5mbyhtX291dE9mTGluZVR5cGVGbGFncyk7IH0KICAg
ICBib29sIGlzT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm8oKS5pc09iamVjdCgpOyB9
CiAKLSAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eGluZ1R5cGUgJiBBbGxBcnJheVR5cGVzOyB9Ci0gICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4aW5nVHlwZTsgfQorICAg
IEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2IuaW5kZXhp
bmdUeXBlKCkgJiBBbGxBcnJheVR5cGVzOyB9CisgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlw
ZUluY2x1ZGluZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Jsb2IuaW5kZXhpbmdUeXBlKCk7
IH0KICAgICAgICAgCiAgICAgYm9vbCBtYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSBjb25z
dAogICAgIHsKQEAgLTMxMCw2ICszMTcsMTEgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ2xhc3NJ
bmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBzdHJ1Y3R1cmVJRE9mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3Ry
dWN0dXJlSURPZmZzZXQoKTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlw
ZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZSwgbV9wcm90b3R5cGUpOwpAQCAtMzIwLDE2ICszMzIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX2dsb2JhbE9iamVjdCk7CiAgICAgfQog
Ci0gICAgc3RhdGljIHB0cmRpZmZfdCB0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBtX3R5cGVJbmZvKSArIFR5cGVJ
bmZvOjpmbGFnc09mZnNldCgpOwotICAgIH0KLQotICAgIHN0YXRpYyBwdHJkaWZmX3QgdHlwZUlu
Zm9UeXBlT2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3Ry
dWN0dXJlLCBtX3R5cGVJbmZvKSArIFR5cGVJbmZvOjp0eXBlT2Zmc2V0KCk7Ci0gICAgfQotICAg
ICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IGNsYXNzSW5mb09mZnNldCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9jbGFzc0luZm8pOwpAQCAt
MzM3LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBp
bmRleGluZ1R5cGVPZmZzZXQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihTdHJ1Y3R1cmUsIG1faW5kZXhpbmdUeXBlKTsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihTdHJ1Y3R1cmUsIG1fYmxvYikgKyBTdHJ1Y3R1cmVJREJsb2I6OmluZGV4aW5nVHlwZU9m
ZnNldCgpOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYpOwpAQCAtNDc4LDcgKzQ4MCwxMiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQg
c19tYXhUcmFuc2l0aW9uTGVuZ3RoRm9yTm9uRXZhbFB1dEJ5SWQgPSA1MTI7CiAKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID0gMzsKLSAg
ICAgICAgCisgICAgCisgICAgLy8gVGhlc2UgbmVlZCB0byBiZSBwcm9wZXJseSBhbGlnbmVkIGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGhlICdTdHJ1Y3R1cmUnCisgICAgLy8gcGFydCBvZiB0aGUgb2Jq
ZWN0LgorICAgIFN0cnVjdHVyZUlEQmxvYiBtX2Jsb2I7CisgICAgVHlwZUluZm86Ok91dE9mTGlu
ZVR5cGVGbGFncyBtX291dE9mTGluZVR5cGVGbGFnczsKKwogICAgIFdyaXRlQmFycmllcjxKU0ds
b2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1f
cHJvdG90eXBlOwogICAgIG11dGFibGUgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZUNoYWluPiBtX2Nh
Y2hlZFByb3RvdHlwZUNoYWluOwpAQCAtNTAyLDggKzUwOSw2IEBAIHByaXZhdGU6CiAgICAgLy8g
bV9vZmZzZXQgZG9lcyBub3QgYWNjb3VudCBmb3IgYW5vbnltb3VzIHNsb3RzCiAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAKLSAgICBUeXBlSW5mbyBtX3R5cGVJbmZvOwotICAgIEluZGV4
aW5nVHlwZSBtX2luZGV4aW5nVHlwZTsKICAgICB1aW50OF90IG1faW5saW5lQ2FwYWNpdHk7CiAg
ICAgCiAgICAgQ29uY3VycmVudEpJVExvY2sgbV9sb2NrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxNjQ3MzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rvci5nZXQoKTsgfQogICAg
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAK
LSAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpIHsgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ29tcG91
bmRUeXBlLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuKSwgaW5mbygpKTsgfQorICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIERFQ0xBUkVfSU5GTzsKIApAQCAtNjQsNiArNjcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CisKICAgICAgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFN0cnVjdHVyZSogaGVhZCkKICAgICAgICAgewog
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURCbG9iLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJREJsb2IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHJ1Y3R1cmVJ
REJsb2JfaAorI2RlZmluZSBTdHJ1Y3R1cmVJREJsb2JfaAorCisjaW5jbHVkZSAiSW5kZXhpbmdU
eXBlLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFi
bGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cnVjdHVyZUlEQmxvYiB7CisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICBTdHJ1Y3R1
cmVJREJsb2IoKQorICAgIHsKKyAgICAgICAgdS5kb3VibGVXb3JkID0gMHhiYmFkYmVlZjsKKyAg
ICB9CisKKyAgICBTdHJ1Y3R1cmVJREJsb2IoU3RydWN0dXJlSUQgc3RydWN0dXJlSUQsIEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKKyAgICB7Cisg
ICAgICAgIHUuZmllbGRzLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7CisgICAgICAgIHUuZmll
bGRzLmluZGV4aW5nVHlwZSA9IGluZGV4aW5nVHlwZTsKKyAgICAgICAgdS5maWVsZHMudHlwZSA9
IHR5cGVJbmZvLnR5cGUoKTsKKyAgICAgICAgdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzID0gdHlw
ZUluZm8uaW5saW5lVHlwZUZsYWdzKCk7CisgICAgICAgIHUuZmllbGRzLmRlZmF1bHRHQ0RhdGEg
PSAwOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZUlEQmxvYiYg
b3RoZXIpIHsgdS5kb3VibGVXb3JkID0gb3RoZXIudS5kb3VibGVXb3JkOyB9CisgICAgCisgICAg
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQoKSBjb25zdCB7IHJldHVybiB1LmZpZWxkcy5zdHJ1Y3R1
cmVJRDsgfQorICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUoKSBjb25zdCB7IHJldHVybiB1
LmZpZWxkcy5pbmRleGluZ1R5cGU7IH0KKyAgICB2b2lkIHNldEluZGV4aW5nVHlwZShJbmRleGlu
Z1R5cGUgaW5kZXhpbmdUeXBlKSB7IHUuZmllbGRzLmluZGV4aW5nVHlwZSA9IGluZGV4aW5nVHlw
ZTsgfQorICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gdS5maWVsZHMudHlwZTsgfQor
ICAgIFR5cGVJbmZvOjpJbmxpbmVUeXBlRmxhZ3MgaW5saW5lVHlwZUZsYWdzKCkgY29uc3QgeyBy
ZXR1cm4gdS5maWVsZHMuaW5saW5lVHlwZUZsYWdzOyB9CisgICAgCisgICAgVHlwZUluZm8gdHlw
ZUluZm8oVHlwZUluZm86Ok91dE9mTGluZVR5cGVGbGFncyBvdXRPZkxpbmVUeXBlRmxhZ3MpIGNv
bnN0IHsgcmV0dXJuIFR5cGVJbmZvKHR5cGUoKSwgaW5saW5lVHlwZUZsYWdzKCksIG91dE9mTGlu
ZVR5cGVGbGFncyk7IH0KKyAgICAKKyAgICBpbnQzMl90IGJsb2JFeGNsdWRpbmdTdHJ1Y3R1cmVJ
RCgpIGNvbnN0IHsgcmV0dXJuIHUud29yZHMud29yZDI7IH0KKyAgICBpbnQ2NF90IGJsb2IoKSBj
b25zdCB7IHJldHVybiB1LmRvdWJsZVdvcmQ7IH0KKyAgICAKKyAgICBzdGF0aWMgcHRyZGlmZl90
IHN0cnVjdHVyZUlET2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoU3RydWN0dXJlSURCbG9iLCB1LmZpZWxkcy5zdHJ1Y3R1cmVJRCk7CisgICAgfQorCisgICAg
c3RhdGljIHB0cmRpZmZfdCBpbmRleGluZ1R5cGVPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVJREJsb2IsIHUuZmllbGRzLmluZGV4aW5nVHlw
ZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOworICAgICAgICAgICAgSW5kZXhpbmdU
eXBlIGluZGV4aW5nVHlwZTsKKyAgICAgICAgICAgIEpTVHlwZSB0eXBlOworICAgICAgICAgICAg
VHlwZUluZm86OklubGluZVR5cGVGbGFncyBpbmxpbmVUeXBlRmxhZ3M7CisgICAgICAgICAgICB1
aW50OF90IGRlZmF1bHRHQ0RhdGE7CisgICAgICAgIH0gZmllbGRzOworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgaW50MzJfdCB3b3JkMTsKKyAgICAgICAgICAgIGludDMyX3Qgd29yZDI7
CisgICAgICAgIH0gd29yZHM7CisgICAgICAgIGludDY0X3QgZG91YmxlV29yZDsKKyAgICB9IHU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFN0cnVjdHVyZUlEQmxvYl9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJ
RFRhYmxlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTI3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFi
bGUuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+Cisj
aW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK1N0cnVjdHVyZUlE
VGFibGU6OlN0cnVjdHVyZUlEVGFibGUoKQorICAgIDogbV9maXJzdEZyZWVPZmZzZXQoMCkKKyAg
ICAsIG1fdGFibGUobmV3IFN0cnVjdHVyZU9yT2Zmc2V0W3NfaW5pdGlhbFNpemVdKQorICAgICwg
bV9zaXplKDApCisgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNpemUpCit7CisgICAgLy8gV2Ug
cHJlLWFsbG9jYXRlIHRoZSBmaXJzdCBvZmZzZXQgc28gdGhhdCB0aGUgbnVsbCBTdHJ1Y3R1cmUK
KyAgICAvLyBjYW4gc3RpbGwgYmUgcmVwcmVzZW50ZWQgYXMgdGhlIFN0cnVjdHVyZUlEICcwJy4K
KyAgICBhbGxvY2F0ZUlEKDApOworfQorCitTdHJ1Y3R1cmVJRFRhYmxlOjp+U3RydWN0dXJlSURU
YWJsZSgpCit7CisgICAgZGVsZXRlIFtdIG1fdGFibGU7Cit9CisKK3ZvaWQgU3RydWN0dXJlSURU
YWJsZTo6cmVzaXplKHNpemVfdCBuZXdDYXBhY2l0eSkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIG5l
dyB0YWJsZS4KKyAgICBTdHJ1Y3R1cmVPck9mZnNldCogbmV3VGFibGUgPSBuZXcgU3RydWN0dXJl
T3JPZmZzZXRbbmV3Q2FwYWNpdHldOworCisgICAgLy8gQ29weSB0aGUgY29udGVudHMgb2YgdGhl
IG9sZCB0YWJsZSB0byB0aGUgbmV3IHRhYmxlLgorICAgIG1lbWNweShuZXdUYWJsZSwgbV90YWJs
ZSwgbV9jYXBhY2l0eSAqIHNpemVvZihTdHJ1Y3R1cmVPck9mZnNldCkpOworCisgICAgLy8gU3Rv
cmUgZmVuY2UgdG8gbWFrZSBzdXJlIHdlJ3ZlIGNvcGllZCBldmVyeXRoaW5nIGJlZm9yZSBkb2lu
ZyB0aGUgc3dhcC4KKyAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworCisgICAgLy8gU3dhcCB0
aGUgb2xkIGFuZCBuZXcgdGFibGVzLgorICAgIFN0cnVjdHVyZU9yT2Zmc2V0KiBvbGRUYWJsZSA9
IG1fdGFibGU7CisgICAgbV90YWJsZSA9IG5ld1RhYmxlOworCisgICAgLy8gUHV0IHRoZSBvbGQg
dGFibGUgKG5vdyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBvbGQgdGFibGVzLgor
ICAgIG1fb2xkVGFibGVzLmFwcGVuZChvbGRUYWJsZSk7CisKKyAgICAvLyBVcGRhdGUgdGhlIGNh
cGFjaXR5LgorICAgIG1fY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKK30KKwordm9pZCBTdHJ1Y3R1
cmVJRFRhYmxlOjpmbHVzaE9sZFRhYmxlcygpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fb2xkVGFibGVzLnNpemUoKTsgKytpKQorICAgICAgICBkZWxldGUgW10gbV9vbGRUYWJs
ZXNbaV07CisgICAgbV9vbGRUYWJsZXMuY2xlYXIoKTsKK30KKworU3RydWN0dXJlSUQgU3RydWN0
dXJlSURUYWJsZTo6YWxsb2NhdGVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyNpZiBVU0Uo
SlNWQUxVRTY0KQorICAgIGlmICghbV9maXJzdEZyZWVPZmZzZXQpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9jYXBhY2l0eSA8PSBVSU5UX01BWCk7CisgICAgICAgIGlmIChtX3NpemUgPT0g
bV9jYXBhY2l0eSkKKyAgICAgICAgICAgIHJlc2l6ZShtX2NhcGFjaXR5ICogMik7CisgICAgICAg
IEFTU0VSVChtX3NpemUgPCBtX2NhcGFjaXR5KTsKKworICAgICAgICBTdHJ1Y3R1cmVPck9mZnNl
dCBuZXdFbnRyeTsKKyAgICAgICAgbmV3RW50cnkuc3RydWN0dXJlID0gc3RydWN0dXJlOworCisg
ICAgICAgIGlmIChtX3NpemUgPT0gc191bnVzZWRJRCkgeworICAgICAgICAgICAgbV9zaXplKys7
CisgICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVJRChzdHJ1Y3R1cmUpOworICAgICAgICB9CisK
KyAgICAgICAgU3RydWN0dXJlSUQgcmVzdWx0ID0gbV9zaXplOworICAgICAgICBtX3RhYmxlW3Jl
c3VsdF0gPSBuZXdFbnRyeTsKKyAgICAgICAgbV9zaXplKys7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgQVNTRVJUKG1fZmlyc3RGcmVlT2Zmc2V0ICE9IHNfdW51c2VkSUQp
OworCisgICAgU3RydWN0dXJlSUQgcmVzdWx0ID0gbV9maXJzdEZyZWVPZmZzZXQ7CisgICAgbV9m
aXJzdEZyZWVPZmZzZXQgPSBtX3RhYmxlW21fZmlyc3RGcmVlT2Zmc2V0XS5vZmZzZXQ7CisgICAg
bV90YWJsZVtyZXN1bHRdLnN0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAgICByZXR1cm4gcmVzdWx0
OworI2Vsc2UKKyAgICByZXR1cm4gc3RydWN0dXJlOworI2VuZGlmCit9CisKK3ZvaWQgU3RydWN0
dXJlSURUYWJsZTo6ZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVJ
RCBzdHJ1Y3R1cmVJRCkKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEFTU0VSVChzdHJ1Y3R1
cmVJRCAhPSBzX3VudXNlZElEKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3RhYmxlW3N0cnVjdHVy
ZUlEXS5zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlKTsKKyAgICBtX3RhYmxlW3N0cnVjdHVyZUlEXS5v
ZmZzZXQgPSBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBtX2ZpcnN0RnJlZU9mZnNldCA9IHN0cnVj
dHVyZUlEOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RydWN0dXJlKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RydWN0dXJlSUQpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBTdHJ1Y3R1cmVJRFRhYmxlX2gKKyNkZWZpbmUgU3RydWN0dXJlSURUYWJsZV9oCisK
KyNpbmNsdWRlICJVbnVzZWRQb2ludGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOworCisjaWYgVVNFKEpTVkFMVUU2NCkK
K3R5cGVkZWYgdWludDMyX3QgU3RydWN0dXJlSUQ7CisjZWxzZQordHlwZWRlZiBTdHJ1Y3R1cmUq
IFN0cnVjdHVyZUlEOworI2VuZGlmCisKK2NsYXNzIFN0cnVjdHVyZUlEVGFibGUgeworICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgU3RydWN0dXJl
SURUYWJsZSgpOworICAgIH5TdHJ1Y3R1cmVJRFRhYmxlKCk7CisKKyAgICB2b2lkKiogYmFzZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KKworICAgIFN0
cnVjdHVyZSogZ2V0KFN0cnVjdHVyZUlEKTsKKyAgICB2b2lkIGRlYWxsb2NhdGVJRChTdHJ1Y3R1
cmUqLCBTdHJ1Y3R1cmVJRCk7CisgICAgU3RydWN0dXJlSUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUq
KTsKKworICAgIHZvaWQgZmx1c2hPbGRUYWJsZXMoKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHJl
c2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpOworICAgIAorICAgIHVuaW9uIFN0cnVjdHVyZU9yT2Zm
c2V0IHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgICAgIFN0cnVjdHVyZUlE
IG9mZnNldDsKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRpYWxTaXpl
ID0gMjU2OworCisgICAgVmVjdG9yPFN0cnVjdHVyZU9yT2Zmc2V0Kj4gbV9vbGRUYWJsZXM7CisK
KyAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKKyAgICBTdHJ1Y3R1cmVPck9mZnNldCog
bV90YWJsZTsKKworICAgIHNpemVfdCBtX3NpemU7CisgICAgc2l6ZV90IG1fY2FwYWNpdHk7CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHN0YXRpYyBjb25zdCBTdHJ1Y3R1cmVJRCBzX3VudXNl
ZElEID0gdW51c2VkUG9pbnRlcjsKKyNlbmRpZgorfTsKKworaW5saW5lIFN0cnVjdHVyZSogU3Ry
dWN0dXJlSURUYWJsZTo6Z2V0KFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQoreworI2lmIFVTRShK
U1ZBTFVFNjQpCisgICAgcmV0dXJuIG1fdGFibGVbc3RydWN0dXJlSURdLnN0cnVjdHVyZTsKKyNl
bHNlCisgICAgcmV0dXJuIHN0cnVjdHVyZUlEOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gU3RydWN0dXJlSURUYWJsZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHJldmlzaW9uIDE2NDczOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3Niw2ICs0NzYsOSBAQCBwdWJsaWM6CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
U3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCiBwcml2YXRlOgog
ICAgIGNsYXNzIFdhdGNocG9pbnRDbGVhbnVwIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UeXBlZEFycmF5VHlwZS5jcHAJKHJldmlzaW9uIDE2NDczOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMzQgKzMyLDM3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8qIGNs
YXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKK0pTVHlwZSB0eXBlRm9yVHlwZWRB
cnJheVR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIE5vdFR5cGVkQXJyYXk6Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVW5zcGVjaWZpZWRUeXBlOwog
ICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKU0ludDhBcnJheTo6aW5mbygpOwor
ICAgICAgICByZXR1cm4gSW50OEFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAg
ICAgcmV0dXJuIEpTVWludDhBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWludDhBcnJh
eVR5cGU7CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgotICAgICAgICByZXR1cm4gSlNVaW50
OENsYW1wZWRBcnJheTo6aW5mbygpOworICAgICAgICByZXR1cm4gVWludDhDbGFtcGVkQXJyYXlU
eXBlOwogICAgIGNhc2UgVHlwZUludDE2OgotICAgICAgICByZXR1cm4gSlNJbnQxNkFycmF5Ojpp
bmZvKCk7CisgICAgICAgIHJldHVybiBJbnQxNkFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVVaW50
MTY6Ci0gICAgICAgIHJldHVybiBKU1VpbnQxNkFycmF5OjppbmZvKCk7CisgICAgICAgIHJldHVy
biBVaW50MTZBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJldHVybiBK
U0ludDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIEludDMyQXJyYXlUeXBlOwogICAg
IGNhc2UgVHlwZVVpbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTVWludDMyQXJyYXk6OmluZm8oKTsK
KyAgICAgICAgcmV0dXJuIFVpbnQzMkFycmF5VHlwZTsKICAgICBjYXNlIFR5cGVGbG9hdDMyOgot
ICAgICAgICByZXR1cm4gSlNGbG9hdDMyQXJyYXk6OmluZm8oKTsKKyAgICAgICAgcmV0dXJuIEZs
b2F0MzJBcnJheVR5cGU7CiAgICAgY2FzZSBUeXBlRmxvYXQ2NDoKLSAgICAgICAgcmV0dXJuIEpT
RmxvYXQ2NEFycmF5OjppbmZvKCk7CisgICAgICAgIHJldHVybiBGbG9hdDY0QXJyYXlUeXBlOwog
ICAgIGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICByZXR1cm4gSlNEYXRhVmlldzo6aW5mbygp
OworICAgICAgICByZXR1cm4gRGF0YVZpZXdUeXBlOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFVuc3BlY2lmaWVk
VHlwZTsKICAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gMDsKIH0KIAogY29uc3QgQ2xhc3NJbmZvKiBjb25zdHJ1Y3RvckNsYXNzSW5mb0ZvclR5cGUo
VHlwZWRBcnJheVR5cGUgdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVkQXJyYXlUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZWRBcnJheVR5cGUuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBUeXBlZEFycmF5VHlwZV9oCiAjZGVmaW5lIFR5cGVkQXJyYXlU
eXBlX2gKIAorI2luY2x1ZGUgIkpTVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMCw4ICsxMDEsOCBAQCBpbmxpbmUgc2l6ZV90IGVs
ZW1lbnRTaXplKFR5cGVkQXJyYXlUeXBlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4o
MSkgPDwgbG9nRWxlbWVudFNpemUodHlwZSk7CiB9CiAKLWNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7CiBjb25zdCBDbGFzc0luZm8qIGNvbnN0cnVjdG9y
Q2xhc3NJbmZvRm9yVHlwZShUeXBlZEFycmF5VHlwZSk7CitKU1R5cGUgdHlwZUZvclR5cGVkQXJy
YXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAogaW5saW5lIGJvb2wgaXNJbnQoVHlwZWRBcnJheVR5
cGUgdHlwZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cERhdGEuaAkocmV2aXNpb24gMTY0NzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvV2Vha01hcERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IAogcHJpdmF0ZToKICAgICBXZWFrTWFwRGF0YShWTSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>